3 #include <hocon/config_parseable.hpp>
4 #include <boost/nowide/fstream.hpp>
5 #include <internal/simple_config_origin.hpp>
6 #include <hocon/config_object.hpp>
7 #include <hocon/config_include_context.hpp>
11 class config_document;
17 static std::shared_ptr<parseable> new_not_found(std::string what_not_found, std::string message,
20 static config_syntax syntax_from_extension(std::string name);
24 std::shared_ptr<config_document> parse_config_document();
26 shared_object
parse()
const;
28 shared_value parse_value()
const;
31 std::shared_ptr<const config_origin>
origin()
const override;
34 virtual std::unique_ptr<std::istream> reader()
const = 0;
35 virtual shared_origin create_origin()
const = 0;
37 virtual config_syntax guess_syntax()
const;
38 virtual config_syntax content_type()
const;
39 virtual std::shared_ptr<config_parseable> relative_to(std::string file_name)
const;
41 std::string to_string()
const;
42 std::string get_cur_dir()
const;
43 void set_cur_dir(std::string dir)
const;
44 void separate_filepath(
const std::string&
path, std::string* file_dir,
45 std::string* file_name)
const;
54 std::shared_ptr<config_document> parse_document(shared_origin
origin,
56 std::shared_ptr<config_document> raw_parse_document(std::unique_ptr<std::istream> stream, shared_origin
origin,
58 std::shared_ptr<config_document> raw_parse_document(shared_origin
origin,
63 shared_value raw_parse_value(std::unique_ptr<std::istream> stream,
70 std::vector<parseable> _parse_stack;
72 shared_origin _initial_origin;
74 shared_include_context _include_context;
76 static const int MAX_INCLUDE_DEPTH;
82 std::unique_ptr<std::istream> reader()
const override;
83 shared_origin create_origin()
const override;
84 config_syntax guess_syntax()
const override;
93 std::unique_ptr<std::istream> reader()
const override;
94 shared_origin create_origin()
const override;
111 std::unique_ptr<std::istream> reader()
const override;
112 shared_origin create_origin()
const override;
115 std::string _resource;
124 std::unique_ptr<std::istream> reader()
const override;
125 shared_origin create_origin()
const override;
129 std::string _message;