cpp-hocon  0.3.0
Public Member Functions | List of all members
hocon::config_document Class Referenceabstract

Represents an individual HOCON or JSON file, preserving all formatting and syntax details. More...

Inheritance diagram for hocon::config_document:
hocon::simple_config_document

Public Member Functions

virtual std::unique_ptr< config_documentwith_value_text (std::string path, std::string newValue) const =0
 Returns a new config_document that is a copy of the current config_document, but with the desired value set at the desired path. More...
 
virtual std::unique_ptr< config_documentwith_value (std::string path, std::shared_ptr< config_value > new_value) const =0
 Returns a new config_document that is a copy of the current config_document, but with the desired value set at the desired path. More...
 
virtual std::unique_ptr< config_documentwithout_path (std::string path) const =0
 Returns a new config_document that is a copy of the current config_document, but with all values at the desired path removed. More...
 
virtual bool has_path (std::string const &path) const =0
 Returns a boolean indicating whether or not a config_document has a value at the desired path. More...
 
virtual std::string render () const =0
 The original text of the input, modified if necessary with any replaced or added values. More...
 

Detailed Description

Represents an individual HOCON or JSON file, preserving all formatting and syntax details.

This can be used to replace individual values and exactly render the original text of the input.

Because this object is immutable, it is safe to use from multiple threads and there's no need for "defensive copies."

Do not implement interface

config_document

; it should only be implemented by the config library. Arbitrary implementations will not work because the library internals assume a specific concrete implementation. Also, this interface is likely to grow new methods over time, so third-party implementations will break.

Definition at line 26 of file config_document.hpp.

Member Function Documentation

◆ has_path()

virtual bool hocon::config_document::has_path ( std::string const &  path) const
pure virtual

Returns a boolean indicating whether or not a config_document has a value at the desired path.

null counts as a value for purposes of this check.

Parameters
paththe path to check
Returns
true if the path exists in the document, otherwise false

Implemented in hocon::simple_config_document.

◆ render()

virtual std::string hocon::config_document::render ( ) const
pure virtual

The original text of the input, modified if necessary with any replaced or added values.

Returns
the modified original text

Implemented in hocon::simple_config_document.

◆ with_value()

virtual std::unique_ptr<config_document> hocon::config_document::with_value ( std::string  path,
std::shared_ptr< config_value new_value 
) const
pure virtual

Returns a new config_document that is a copy of the current config_document, but with the desired value set at the desired path.

Works like with_value_text(string, string), but takes a config_value instead of a string.

Parameters
paththe path at which to set the desired value
new_valuethe value to set at the desired path, represented as a config_value. The rendered text of the config_value will be inserted into the config_document.
Returns
a copy of the config_document with the desired value at the desired path

Implemented in hocon::simple_config_document.

◆ with_value_text()

virtual std::unique_ptr<config_document> hocon::config_document::with_value_text ( std::string  path,
std::string  newValue 
) const
pure virtual

Returns a new config_document that is a copy of the current config_document, but with the desired value set at the desired path.

If the path exists, it will remove all duplicates before the final occurrence of the path, and replace the value at the final occurrence of the path. If the path does not exist, it will be added. If the document has an array as the root value, an exception will be thrown.

Parameters
paththe path at which to set the desired value
new_valuethe value to set at the desired path, represented as a string. This string will be parsed into a config_node using the same options used to parse the entire document, and the text will be inserted as-is into the document. Leading and trailing comments, whitespace, or newlines are not allowed, and if present an exception will be thrown. If a concatenation is passed in for newValue but the document was parsed with JSON, the first value in the concatenation will be parsed and inserted into the config_document.
Returns
a copy of the config_document with the desired value at the desired path

Implemented in hocon::simple_config_document.

◆ without_path()

virtual std::unique_ptr<config_document> hocon::config_document::without_path ( std::string  path) const
pure virtual

Returns a new config_document that is a copy of the current config_document, but with all values at the desired path removed.

If the path does not exist in the document, a copy of the current document will be returned. If there is an array at the root, an exception will be thrown.

Parameters
paththe path to remove from the document
Returns
a copy of the config_document with the desired value removed from the document.

Implemented in hocon::simple_config_document.


The documentation for this class was generated from the following file: