diff options
author | innokentii <innokentii@yandex-team.com> | 2023-03-06 16:30:25 +0300 |
---|---|---|
committer | innokentii <innokentii@yandex-team.com> | 2023-03-06 16:30:25 +0300 |
commit | ea8e336dc456c44b848619e120a8f3643c6125af (patch) | |
tree | bafaf363369c9975b2d105fc4470c5a4aaa43eb8 /library/cpp/yaml/fyamlcpp/fyamlcpp.h | |
parent | 26a0ed381c2ffa857909e82395c762a6b08e76c2 (diff) | |
download | ydb-ea8e336dc456c44b848619e120a8f3643c6125af.tar.gz |
Add yaml config utils
add yaml_config utils
Diffstat (limited to 'library/cpp/yaml/fyamlcpp/fyamlcpp.h')
-rw-r--r-- | library/cpp/yaml/fyamlcpp/fyamlcpp.h | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/library/cpp/yaml/fyamlcpp/fyamlcpp.h b/library/cpp/yaml/fyamlcpp/fyamlcpp.h index 5b645a557c0..c1ec03d25f7 100644 --- a/library/cpp/yaml/fyamlcpp/fyamlcpp.h +++ b/library/cpp/yaml/fyamlcpp/fyamlcpp.h @@ -4,6 +4,7 @@ #include <util/system/compiler.h> #include <util/system/yassert.h> #include <util/stream/str.h> +#include <util/generic/hash_set.h> #include <memory> #include <optional> @@ -116,7 +117,7 @@ public: TNode Copy() const; - TNode Copy(const TDocument& to) const; + TNode Copy(TDocument& to) const; bool IsAlias() const; @@ -509,7 +510,9 @@ class TDocument { friend class TNodeRef; friend class TJsonEmitter; friend class TParser; + friend class TMapping; + TDocument(TString str, fy_document* doc = nullptr, fy_diag* diag = nullptr); TDocument(fy_document* doc = nullptr, fy_diag* diag = nullptr); public: @@ -518,7 +521,7 @@ public: , Diag_(std::move(other.Diag_)) {} - static TDocument Parse(const char* cstr); + static TDocument Parse(TString cstr); TDocument Clone() const; @@ -583,6 +586,14 @@ private: } } + static void DestroyDocumentStrings(fy_document *fyd, void *user) { + Y_UNUSED(fyd); + if (user) { + auto* data = reinterpret_cast<THashSet<TString>*>(user); + delete data; + } + } + bool RegisterUserDataCleanup(); void UnregisterUserDataCleanup(); }; @@ -599,12 +610,13 @@ private: }; class TParser { - TParser(fy_parser* doc, fy_diag* diag); + TParser(TString rawStream, fy_parser* doc, fy_diag* diag); public: - static TParser Create(const char* cstr); + static TParser Create(TString str); std::optional<TDocument> NextDocument(); private: + TString RawDocumentStream_; std::unique_ptr<fy_parser, void(*)(fy_parser*)> Parser_; std::unique_ptr<fy_diag, void(*)(fy_diag*)> Diag_; }; |