diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 12:34:54 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 12:34:54 +0000 |
commit | 0915b3ef56dfac3113cce55a59a5765dc94976be (patch) | |
tree | a8fea11d50b4f083e1bf0f90025ece7f0824784a /lib/base/configwriter.hpp | |
parent | Initial commit. (diff) | |
download | icinga2-0915b3ef56dfac3113cce55a59a5765dc94976be.tar.xz icinga2-0915b3ef56dfac3113cce55a59a5765dc94976be.zip |
Adding upstream version 2.13.6.upstream/2.13.6upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'lib/base/configwriter.hpp')
-rw-r--r-- | lib/base/configwriter.hpp | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/lib/base/configwriter.hpp b/lib/base/configwriter.hpp new file mode 100644 index 0000000..a0c70f7 --- /dev/null +++ b/lib/base/configwriter.hpp @@ -0,0 +1,67 @@ +/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */ + +#ifndef CONFIGWRITER_H +#define CONFIGWRITER_H + +#include "base/object.hpp" +#include "base/array.hpp" +#include "base/dictionary.hpp" +#include <iosfwd> + +namespace icinga +{ + +/** + * A config identifier. + * + * @ingroup base + */ +class ConfigIdentifier final : public Object +{ +public: + DECLARE_PTR_TYPEDEFS(ConfigIdentifier); + + ConfigIdentifier(String name); + + String GetName() const; + +private: + String m_Name; +}; + +/** + * A configuration writer. + * + * @ingroup base + */ +class ConfigWriter +{ +public: + static void EmitBoolean(std::ostream& fp, bool val); + static void EmitNumber(std::ostream& fp, double val); + static void EmitString(std::ostream& fp, const String& val); + static void EmitEmpty(std::ostream& fp); + static void EmitArray(std::ostream& fp, int indentLevel, const Array::Ptr& val); + static void EmitArrayItems(std::ostream& fp, int indentLevel, const Array::Ptr& val); + static void EmitScope(std::ostream& fp, int indentLevel, const Dictionary::Ptr& val, + const Array::Ptr& imports = nullptr, bool splitDot = false); + static void EmitValue(std::ostream& fp, int indentLevel, const Value& val); + static void EmitRaw(std::ostream& fp, const String& val); + static void EmitIndent(std::ostream& fp, int indentLevel); + + static void EmitIdentifier(std::ostream& fp, const String& identifier, bool inAssignment); + static void EmitConfigItem(std::ostream& fp, const String& type, const String& name, bool isTemplate, + bool ignoreOnError, const Array::Ptr& imports, const Dictionary::Ptr& attrs); + + static void EmitComment(std::ostream& fp, const String& text); + static void EmitFunctionCall(std::ostream& fp, const String& name, const Array::Ptr& arguments); + + static const std::vector<String>& GetKeywords(); +private: + static String EscapeIcingaString(const String& str); + ConfigWriter(); +}; + +} + +#endif /* CONFIGWRITER_H */ |