diff options
author | pg <pg@yandex-team.com> | 2023-02-08 14:47:59 +0300 |
---|---|---|
committer | pg <pg@yandex-team.com> | 2023-02-08 14:47:59 +0300 |
commit | 2999295666a93b51c9226cee88ea70b996d43727 (patch) | |
tree | 6cd1a5290a2653689a33c6269c0eebb7dd05729d /tools/enum_parser/parse_enum/parse_enum.cpp | |
parent | e615f3f87f0fc3dcc0d45c304883339ab1eab8c1 (diff) | |
download | ydb-2999295666a93b51c9226cee88ea70b996d43727.tar.gz |
3.19.0
Diffstat (limited to 'tools/enum_parser/parse_enum/parse_enum.cpp')
-rw-r--r-- | tools/enum_parser/parse_enum/parse_enum.cpp | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/tools/enum_parser/parse_enum/parse_enum.cpp b/tools/enum_parser/parse_enum/parse_enum.cpp index 80c5498ab7..07712411ae 100644 --- a/tools/enum_parser/parse_enum/parse_enum.cpp +++ b/tools/enum_parser/parse_enum/parse_enum.cpp @@ -374,7 +374,6 @@ private: TEnum CurrentEnum; }; - TEnumParser::TEnumParser(const TString& fileName) { THolder<IInputStream> hIn; IInputStream* in = nullptr; @@ -385,6 +384,7 @@ TEnumParser::TEnumParser(const TString& fileName) { } else { in = &Cin; } + TString contents = in->ReadAll(); Parse(contents.data(), contents.size()); } @@ -398,7 +398,22 @@ TEnumParser::TEnumParser(IInputStream& in) { Parse(contents.data(), contents.size()); } -void TEnumParser::Parse(const char* data, size_t length) { +void TEnumParser::Parse(const char* dataIn, size_t lengthIn) { + TMemoryInput mi(dataIn, lengthIn); + + TString line; + TString result; + + while (mi.ReadLine(line)) { + if (line.find("if (GetOwningArena() == other->GetOwningArena()) {") == TString::npos) { + result += line; + result += "\n"; + } + } + + const char* data = result.c_str(); + size_t length = result.length(); + const TStringBuf span(data, length); const bool hasPragmaOnce = span.Contains("#pragma once"); const bool isProtobufHeader = span.Contains("// Generated by the protocol buffer compiler"); @@ -414,10 +429,10 @@ void TEnumParser::Parse(const char* data, size_t length) { TCppSaxParser parser(&cppContext); TransferData(&in, &parser); parser.Finish(); - //cppContext.PrintEnums(); // obtain result Enums = cppContext.Enums; if (cppContext.Scope) { + cppContext.PrintEnums(); cppContext.PrintScope(); ythrow yexception() << "Unbalanced scope, something is wrong with enum parser. "; } |