aboutsummaryrefslogtreecommitdiffstats
path: root/tools/enum_parser/parse_enum/parse_enum.cpp
diff options
context:
space:
mode:
authorpg <pg@yandex-team.com>2023-02-08 14:47:59 +0300
committerpg <pg@yandex-team.com>2023-02-08 14:47:59 +0300
commit2999295666a93b51c9226cee88ea70b996d43727 (patch)
tree6cd1a5290a2653689a33c6269c0eebb7dd05729d /tools/enum_parser/parse_enum/parse_enum.cpp
parente615f3f87f0fc3dcc0d45c304883339ab1eab8c1 (diff)
downloadydb-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.cpp21
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. ";
}