// 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 #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; }