diff options
author | arcadia-devtools <arcadia-devtools@yandex-team.ru> | 2022-04-20 13:49:33 +0300 |
---|---|---|
committer | arcadia-devtools <arcadia-devtools@yandex-team.ru> | 2022-04-20 13:49:33 +0300 |
commit | d85809f7b86d53a83de4744b395e61df085e727f (patch) | |
tree | 32093c9bdbaa6c4ab42f34f38cfb6f401ec46d4d /library/cpp/scheme/scheme.h | |
parent | f8b13db877cf0234f2bdf7092164f57eebc52aa1 (diff) | |
download | ydb-d85809f7b86d53a83de4744b395e61df085e727f.tar.gz |
intermediate changes
ref:95923961b070d9d9b37fcb1d21bffeae90f3d022
Diffstat (limited to 'library/cpp/scheme/scheme.h')
-rw-r--r-- | library/cpp/scheme/scheme.h | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/library/cpp/scheme/scheme.h b/library/cpp/scheme/scheme.h index cc0699c67ac..b4cb98c9677 100644 --- a/library/cpp/scheme/scheme.h +++ b/library/cpp/scheme/scheme.h @@ -4,6 +4,8 @@ #include "fwd.h" +#include <util/generic/maybe.h> + #include <iterator> #include <utility> @@ -12,6 +14,14 @@ namespace NSc { #pragma warning(disable : 4521 4522) #endif + struct TMergeOptions { + enum class EArrayMergeMode { + Replace, + Merge + }; + EArrayMergeMode ArrayMergeMode = EArrayMergeMode::Replace; + }; + // todo: try to remove some rarely used methods class TValue { public: @@ -341,14 +351,14 @@ namespace NSc { * - Do nothing. */ - TValue& MergeUpdateJson(TStringBuf json); // returns self - TValue& ReverseMergeJson(TStringBuf json); // returns self + TValue& MergeUpdateJson(TStringBuf json, TMaybe<TMergeOptions> mergeOptions = {}); // returns self + TValue& ReverseMergeJson(TStringBuf json, TMaybe<TMergeOptions> mergeOptions = {}); // returns self - static bool MergeUpdateJson(TValue&, TStringBuf json); // returns true unless failed to parse the json - static bool ReverseMergeJson(TValue&, TStringBuf json); // returns true unless failed to parse the json + static bool MergeUpdateJson(TValue&, TStringBuf json, TMaybe<TMergeOptions> mergeOptions = {}); // returns true unless failed to parse the json + static bool ReverseMergeJson(TValue&, TStringBuf json, TMaybe<TMergeOptions> mergeOptions = {}); // returns true unless failed to parse the json - TValue& MergeUpdate(const TValue& delta); // return self - TValue& ReverseMerge(const TValue& delta); // return self + TValue& MergeUpdate(const TValue& delta, TMaybe<TMergeOptions> mergeOptions = {}); // return self + TValue& ReverseMerge(const TValue& delta, TMaybe<TMergeOptions> mergeOptions = {}); // return self public: // Path methods ///////////////////////////////////////////////////////// // TODO: add throwing variants @@ -405,8 +415,8 @@ namespace NSc { bool IsSameOrAncestorOf(const TValue& other) const; private: - TValue& DoMerge(const TValue& delta, bool olddelta); - TValue& DoMergeImpl(const TValue& delta, bool olddelta, NImpl::TSelfLoopContext&, NImpl::TSelfOverrideContext&); + TValue& DoMerge(const TValue& delta, bool olddelta, TMaybe<TMergeOptions> mergeOptions); + TValue& DoMergeImpl(const TValue& delta, bool olddelta, TMaybe<TMergeOptions> mergeOptions, NImpl::TSelfLoopContext&, NImpl::TSelfOverrideContext&); TValue& DoCopyFromImpl(const TValue& other, NImpl::TSelfLoopContext&, NImpl::TSelfOverrideContext&); NJson::TJsonValue ToJsonValueImpl(NImpl::TSelfLoopContext&) const; |