d88ef75c987c83d15546b31eeb5fdb25e975b786
[platform/upstream/grpc.git] / src / compiler / cpp_generator.h
1 /*
2  *
3  * Copyright 2015 gRPC authors.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *     http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  */
18
19 #ifndef GRPC_INTERNAL_COMPILER_CPP_GENERATOR_H
20 #define GRPC_INTERNAL_COMPILER_CPP_GENERATOR_H
21
22 // cpp_generator.h/.cc do not directly depend on GRPC/ProtoBuf, such that they
23 // can be used to generate code for other serialization systems, such as
24 // FlatBuffers.
25
26 #include <memory>
27 #include <vector>
28
29 #include "src/compiler/config.h"
30 #include "src/compiler/schema_interface.h"
31
32 #ifndef GRPC_CUSTOM_STRING
33 #include <string>
34 #define GRPC_CUSTOM_STRING std::string
35 #endif
36
37 namespace grpc {
38
39 typedef GRPC_CUSTOM_STRING string;
40
41 }  // namespace grpc
42
43 namespace grpc_cpp_generator {
44
45 // Contains all the parameters that are parsed from the command line.
46 struct Parameters {
47   // Puts the service into a namespace
48   grpc::string services_namespace;
49   // Use system includes (<>) or local includes ("")
50   bool use_system_headers;
51   // Prefix to any grpc include
52   grpc::string grpc_search_path;
53   // Generate Google Mock code to facilitate unit testing.
54   bool generate_mock_code;
55   // Google Mock search path, when non-empty, local includes will be used.
56   grpc::string gmock_search_path;
57   // *EXPERIMENTAL* Additional include files in grpc.pb.h
58   std::vector<grpc::string> additional_header_includes;
59 };
60
61 // Return the prologue of the generated header file.
62 grpc::string GetHeaderPrologue(grpc_generator::File* file,
63                                const Parameters& params);
64
65 // Return the includes needed for generated header file.
66 grpc::string GetHeaderIncludes(grpc_generator::File* file,
67                                const Parameters& params);
68
69 // Return the includes needed for generated source file.
70 grpc::string GetSourceIncludes(grpc_generator::File* file,
71                                const Parameters& params);
72
73 // Return the epilogue of the generated header file.
74 grpc::string GetHeaderEpilogue(grpc_generator::File* file,
75                                const Parameters& params);
76
77 // Return the prologue of the generated source file.
78 grpc::string GetSourcePrologue(grpc_generator::File* file,
79                                const Parameters& params);
80
81 // Return the services for generated header file.
82 grpc::string GetHeaderServices(grpc_generator::File* file,
83                                const Parameters& params);
84
85 // Return the services for generated source file.
86 grpc::string GetSourceServices(grpc_generator::File* file,
87                                const Parameters& params);
88
89 // Return the epilogue of the generated source file.
90 grpc::string GetSourceEpilogue(grpc_generator::File* file,
91                                const Parameters& params);
92
93 // Return the prologue of the generated mock file.
94 grpc::string GetMockPrologue(grpc_generator::File* file,
95                              const Parameters& params);
96
97 // Return the includes needed for generated mock file.
98 grpc::string GetMockIncludes(grpc_generator::File* file,
99                              const Parameters& params);
100
101 // Return the services for generated mock file.
102 grpc::string GetMockServices(grpc_generator::File* file,
103                              const Parameters& params);
104
105 // Return the epilogue of generated mock file.
106 grpc::string GetMockEpilogue(grpc_generator::File* file,
107                              const Parameters& params);
108
109 // Return the prologue of the generated mock file.
110 grpc::string GetMockPrologue(grpc_generator::File* file,
111                              const Parameters& params);
112
113 // Return the includes needed for generated mock file.
114 grpc::string GetMockIncludes(grpc_generator::File* file,
115                              const Parameters& params);
116
117 // Return the services for generated mock file.
118 grpc::string GetMockServices(grpc_generator::File* file,
119                              const Parameters& params);
120
121 // Return the epilogue of generated mock file.
122 grpc::string GetMockEpilogue(grpc_generator::File* file,
123                              const Parameters& params);
124
125 }  // namespace grpc_cpp_generator
126
127 #endif  // GRPC_INTERNAL_COMPILER_CPP_GENERATOR_H