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-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef LLDB_RPC_GEN_RPCSERVERHEADEREMITTER_H
10#define LLDB_RPC_GEN_RPCSERVERHEADEREMITTER_H
11
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_gen
46
47#endif // LLDB_RPC_GEN_RPCSERVERHEADEREMITTER_H
48

source code of lldb/tools/lldb-rpc/lldb-rpc-gen/server/RPCServerHeaderEmitter.h