diff options
author | vvvv <vvvv@ydb.tech> | 2023-07-31 18:21:04 +0300 |
---|---|---|
committer | vvvv <vvvv@ydb.tech> | 2023-07-31 18:21:04 +0300 |
commit | dec41c40e51aa407edef81a3c566a5a15780fc49 (patch) | |
tree | 4f197b596b32f35eca368121f0dff913419da9af /library/cpp/ipreg/util_helpers.h | |
parent | 3ca8b54c96e09eb2b65be7f09675623438d559c7 (diff) | |
download | ydb-dec41c40e51aa407edef81a3c566a5a15780fc49.tar.gz |
YQL-16239 Move purecalc to public
Diffstat (limited to 'library/cpp/ipreg/util_helpers.h')
-rw-r--r-- | library/cpp/ipreg/util_helpers.h | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/library/cpp/ipreg/util_helpers.h b/library/cpp/ipreg/util_helpers.h new file mode 100644 index 0000000000..eab2dfb320 --- /dev/null +++ b/library/cpp/ipreg/util_helpers.h @@ -0,0 +1,65 @@ +#pragma once + +#include <library/cpp/getopt/opt.h> +#include <util/generic/string.h> +#include <util/generic/maybe.h> + +class IInputStream; +class IOutputStream; + +namespace NJson { + class TJsonValue; +} + +namespace NIPREG { + class TReader; + + // @input any form of range+payload + // @output $ip.begin-$ip.end \t {"region_id":$reg,"reliability":$rel} + void DoCoarsening(IInputStream& input, IOutputStream& output); + + struct MergeTraits { + const TVector<TString> ExcludeFieldsList; + TString ConcatSep; + bool SortData{}; + bool CountMerges{}; + bool JoinNestedRanges{}; + }; + + void DoMerging(TReader& input, IOutputStream& output, const MergeTraits& traits); + void DoMerging3(TReader& input, IOutputStream& output, const TString& geodata, bool ByRegsOnly = false, bool silentMode = false); + void DoMergeEqualsRange(TReader& input, IOutputStream& output); + + void DoPatching(TReader& base, TReader& patch, IOutputStream& output, bool sortData = false); + + void AddStubRanges(TReader& input, IOutputStream& output); + + void CheckAddressSpaceForCompleteness(IInputStream& input, IOutputStream& output); + void CheckRangesForMonotonicSequence(IInputStream& input, IOutputStream& output, bool IsStrict = false); + + NJson::TJsonValue ParseJsonString(const TString& data); + TString SortJsonData(const NJson::TJsonValue& json); + TString SortJsonData(const TString& json); + + TString AddJsonAttrs(const TVector<TString>& addFieldsList, const TString& jsonStr, const TMaybe<TString>& attrValue); + TString ExcludeJsonAttrs(const TVector<TString>& excludeFieldsList, const TString& jsonStr); + TString ExtractJsonAttrs(const TVector<TString>& excludeFieldsList, const TString& jsonStr); + + extern const TString STUB_DATA; + + struct DefaultCliParams { + DefaultCliParams(); + + NLastGetopt::TOpts& GetOpts() { return Opts; } + void Parse(int argc, const char **argv); + void ApplyFlags() const; + + TString InputFname = "-"; + TString OutputFname = ""; + bool OutputFullIp = false; + bool PrintStats = false; + bool PrintYtStats = false; + + NLastGetopt::TOpts Opts; + }; +} // NIPREG |