diff options
| author | innokentii <[email protected]> | 2023-03-06 16:30:25 +0300 | 
|---|---|---|
| committer | innokentii <[email protected]> | 2023-03-06 16:30:25 +0300 | 
| commit | ea8e336dc456c44b848619e120a8f3643c6125af (patch) | |
| tree | bafaf363369c9975b2d105fc4470c5a4aaa43eb8 /library/cpp/yaml/fyamlcpp/fyamlcpp.h | |
| parent | 26a0ed381c2ffa857909e82395c762a6b08e76c2 (diff) | |
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_;  };  | 
