aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/yaml/fyamlcpp/fyamlcpp.h
diff options
context:
space:
mode:
authorinnokentii <innokentii@yandex-team.com>2023-03-06 16:30:25 +0300
committerinnokentii <innokentii@yandex-team.com>2023-03-06 16:30:25 +0300
commitea8e336dc456c44b848619e120a8f3643c6125af (patch)
treebafaf363369c9975b2d105fc4470c5a4aaa43eb8 /library/cpp/yaml/fyamlcpp/fyamlcpp.h
parent26a0ed381c2ffa857909e82395c762a6b08e76c2 (diff)
downloadydb-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.h20
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_;
};