brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.2 KiB · a0e4f47 Raw
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