1 /* 2 * Copyright (c) 2021 Huawei Device Co., Ltd. 3 * 4 * HDF is dual licensed: you can use it either under the terms of 5 * the GPL, or the BSD license, at your option. 6 * See the LICENSE file in the root of this repository for complete details. 7 */ 8 9 #ifndef OHOS_HDI_CPP_SERVICE_STUB_CODE_EMITTER_H 10 #define OHOS_HDI_CPP_SERVICE_STUB_CODE_EMITTER_H 11 12 #include "codegen/cpp_code_emitter.h" 13 14 namespace OHOS { 15 namespace HDI { 16 class CppServiceStubCodeEmitter : public CppCodeEmitter { 17 public: CppServiceStubCodeEmitter()18 CppServiceStubCodeEmitter() : CppCodeEmitter() {} 19 20 virtual ~CppServiceStubCodeEmitter() = default; 21 private: 22 bool ResolveDirectory(const String& targetDirectory) override; 23 24 void EmitCode() override; 25 26 // ISample.idl -> sample_service_stub.h 27 void EmitStubHeaderFile(); 28 29 void EmitStubHeaderInclusions(StringBuilder& sb); 30 31 void GetHeaderOtherLibInclusions(HeaderFile::HeaderFileSet& headerFiles); 32 33 void EmitStubUsingNamespace(StringBuilder& sb); 34 35 void EmitStubDecl(StringBuilder& sb); 36 37 void EmitStubBody(StringBuilder& sb, const String& prefix); 38 39 void EmitStubDestruction(StringBuilder& sb, const String& prefix); 40 41 void EmitStubOnRequestDecl(StringBuilder& sb, const String& prefix); 42 43 void EmitGetVersionDecl(StringBuilder& sb, const String& prefix); 44 45 void EmitStubMethodDecls(StringBuilder& sb, const String& prefix); 46 47 void EmitStubMethodDecl(const AutoPtr<ASTMethod>& method, StringBuilder& sb, const String& prefix); 48 49 // ISample.idl -> sample_service_stub.cpp 50 void EmitStubSourceFile(); 51 52 void EmitStubSourceInclusions(StringBuilder& sb); 53 54 void GetSourceOtherLibInclusions(HeaderFile::HeaderFileSet& headerFiles); 55 56 void EmitStubOnRequestMethodImpl(StringBuilder& sb, const String& prefix); 57 58 void EmitGetVersionMethodImpl(StringBuilder& sb, const String& prefix); 59 60 void EmitStubMethodImpls(StringBuilder& sb, const String& prefix); 61 62 void EmitStubMethodImpl(const AutoPtr<ASTMethod>& method, StringBuilder& sb, const String& prefix); 63 64 void EmitStubCallMethod(const AutoPtr<ASTMethod>& method, StringBuilder& sb, const String& prefix); 65 66 void EmitStubReadInterfaceToken(const String& parcelName, StringBuilder& sb, const String& prefix); 67 }; 68 } // namespace HDI 69 } // namespace OHOS 70 71 #endif // OHOS_HDI_CPP_SERVICE_STUB_CODE_EMITTER_H