48 lines · c
1//===-- RPCServerHeaderEmitter.h ----------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLDB_RPC_GEN_RPCSERVERHEADEREMITTER_H10#define LLDB_RPC_GEN_RPCSERVERHEADEREMITTER_H11 12#include "RPCCommon.h"13 14#include "clang/AST/AST.h"15#include "llvm/Support/ToolOutputFile.h"16 17using namespace clang;18 19namespace lldb_rpc_gen {20/// Emit the source code for server-side *.h files.21class RPCServerHeaderEmitter : public FileEmitter {22public:23 RPCServerHeaderEmitter(std::unique_ptr<llvm::ToolOutputFile> &&OutputFile)24 : FileEmitter(std::move(OutputFile)) {25 Begin();26 }27 28 ~RPCServerHeaderEmitter() { End(); }29 30 void EmitMethod(const Method &method);31 32private:33 void EmitHandleRPCCall();34 35 void EmitConstructor(const std::string &MangledName);36 37 void EmitDestructor(const std::string &MangledName);38 39 std::string GetHeaderGuard();40 41 void Begin();42 43 void End();44};45} // namespace lldb_rpc_gen46 47#endif // LLDB_RPC_GEN_RPCSERVERHEADEREMITTER_H48