TarsCloud_TarsCpp/tools/pb2tarscpp/CppPbUtils.cpp
2020-02-07 13:50:04 +08:00

52 lines
1.7 KiB
C++

// Generates C++ tars service interface out of Protobuf IDL.
//
// This is a Proto2 compiler plugin. See net/proto2/compiler/proto/plugin.proto
// and net/proto2/compiler/public/plugin.h for more information on plugins.
#include <cassert>
#include "CppPbUtils.h"
std::string ProtoFileBaseName(const std::string& fullName) {
std::size_t p = fullName.rfind(".");
assert (p != std::string::npos);
return fullName.substr(0, p);
}
const std::string kDeclaration = "/**\n"
" * Tencent is pleased to support the open source community by making Tars available.\n"
" * Copyright (C) 2016 THL A29 Limited, a Tencent company. All rights reserved.\n"
" * Licensed under the BSD 3-Clause License (the \"License\"); you may not use this file\n"
" * except in compliance with the License. You may obtain a copy of the License at\n"
" * https://opensource.org/licenses/BSD-3-Clause\n"
" * Unless required by applicable law or agreed to in writing, software distributed\n"
" * under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n"
" * CONDITIONS OF ANY KIND, either express or implied. See the License for the\n"
" * specific language governing permissions and limitations under the License.\n"
" */\n\n";
const std::string kIndent = " ";
std::string LineFeed(int indent) {
std::string data("\n");
for (int i = 0; i < indent; ++i)
data += kIndent;
return data;
}
std::string ToCppNamespace(const std::string& name) {
std::string ret;
for(auto &c: name) {
if(c == '.') {
ret += "::";
} else {
ret += c;
}
}
return ret;
}