From 56ae875861ab260b80a030f50c4aff9f9dc8fff0 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 13 Apr 2024 13:32:39 +0200 Subject: Adding upstream version 2.14.2. Signed-off-by: Daniel Baumann --- lib/base/configwriter.hpp | 67 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 lib/base/configwriter.hpp (limited to 'lib/base/configwriter.hpp') 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 + +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& GetKeywords(); +private: + static String EscapeIcingaString(const String& str); + ConfigWriter(); +}; + +} + +#endif /* CONFIGWRITER_H */ -- cgit v1.2.3