File: simple_config_document.hpp

package info (click to toggle)
cpp-hocon 0.3.0-1.2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,320 kB
  • sloc: cpp: 12,223; makefile: 4
file content (28 lines) | stat: -rw-r--r-- 1,020 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#pragma once

#include <hocon/parser/config_document.hpp>
#include <internal/nodes/config_node_root.hpp>
#include <hocon/config_parse_options.hpp>
#include <memory>

namespace hocon {

    class simple_config_document : public config_document {
    public:
        simple_config_document(std::shared_ptr<const config_node_root> root,
                               config_parse_options opts);

        std::unique_ptr<config_document> with_value_text(std::string path, std::string new_value) const override;
        std::unique_ptr<config_document> with_value(std::string path,
                                                    std::shared_ptr<config_value> new_value) const override;
        std::unique_ptr<config_document> without_path(std::string path) const override;

        bool has_path(std::string const& path) const override;

        std::string render() const override;

    private:
        std::shared_ptr<const config_node_root> _config_node_tree;
        config_parse_options _parse_options;
    };
}