cpp-hocon  0.3.0
config_parser.hpp
1 #pragma once
2 
3 #include <hocon/config_value.hpp>
4 #include <hocon/config_syntax.hpp>
5 #include <hocon/config_include_context.hpp>
6 #include <hocon/config_parse_options.hpp>
7 #include <hocon/path.hpp>
8 #include <internal/nodes/config_node_concatenation.hpp>
9 #include <internal/nodes/config_node_root.hpp>
10 #include <internal/nodes/abstract_config_node_value.hpp>
11 #include <internal/nodes/config_node_object.hpp>
12 #include <internal/nodes/config_node_array.hpp>
13 #include <internal/nodes/config_node_include.hpp>
14 #include <internal/full_includer.hpp>
15 #include <memory>
16 #include <vector>
17 #include <unordered_map>
18 #include <string>
19 
20 namespace hocon { namespace config_parser {
21 
22  shared_value parse(std::shared_ptr<const config_node_root> document,
23  shared_origin origin,
24  config_parse_options options,
25  shared_include_context include_context);
26 
27  class parse_context {
28  int _line_number;
29  std::shared_ptr<const config_node_root> _document;
30  std::shared_ptr<const full_includer> _includer;
31  shared_include_context _include_context;
32  config_syntax _flavor;
33  shared_origin _base_origin, _line_origin;
34  std::vector<path> _path_stack;
35 
36  public:
37  parse_context(config_syntax flavor, shared_origin origin, std::shared_ptr<const config_node_root> document,
38  std::shared_ptr<const full_includer> includer, shared_include_context include_context);
39 
40  shared_value parse();
41 
42  int array_count;
43 
44  private:
45  static shared_object create_value_under_path(path p, shared_value value);
46  shared_origin line_origin() const;
47  path full_current_path() const;
48  shared_value parse_value(shared_node_value n, std::vector<std::string>& comments);
49  void parse_include(std::unordered_map<std::string, shared_value> &values, std::shared_ptr<const config_node_include> n);
50  shared_object parse_object(shared_node_object n);
51  shared_value parse_array(shared_node_array n);
52  shared_value parse_concatenation(shared_node_concatenation n);
53  };
54 
55 }} // namespace hocon::config_parser
Factory for creating config_document instances.
Definition: config.hpp:18