aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/grpc/src/compiler/cpp_generator.h
blob: 07166e4a1c8da99797f874b7363ecd82bb9f1605 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/*
 *
 * Copyright 2015 gRPC authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */

#ifndef GRPC_INTERNAL_COMPILER_CPP_GENERATOR_H
#define GRPC_INTERNAL_COMPILER_CPP_GENERATOR_H

// cpp_generator.h/.cc do not directly depend on GRPC/ProtoBuf, such that they
// can be used to generate code for other serialization systems, such as
// FlatBuffers.

#include <memory>
#include <util/generic/string.h>
#include <vector>

#include "src/compiler/config.h"
#include "src/compiler/schema_interface.h"

#ifdef GRPC_CUSTOM_STRING
#warning GRPC_CUSTOM_STRING is no longer supported. Please use TString.
#endif

namespace grpc {

// Using grpc::string and grpc::to_string is discouraged in favor of
// TString and ToString. This is only for legacy code using
// them explictly.
typedef TString string;     // deprecated

}  // namespace grpc

namespace grpc_cpp_generator {

// Contains all the parameters that are parsed from the command line.
struct Parameters {
  // Puts the service into a namespace
  TString services_namespace;
  // Use system includes (<>) or local includes ("")
  bool use_system_headers;
  // Prefix to any grpc include
  TString grpc_search_path;
  // Generate Google Mock code to facilitate unit testing.
  bool generate_mock_code;
  // Google Mock search path, when non-empty, local includes will be used.
  TString gmock_search_path;
  // *EXPERIMENTAL* Additional include files in grpc.pb.h
  std::vector<TString> additional_header_includes;
  // By default, use "pb.h" 
  TString message_header_extension;
  // Whether to include headers corresponding to imports in source file. 
  bool include_import_headers; 
};

// Return the prologue of the generated header file.
TString GetHeaderPrologue(grpc_generator::File* file,
                              const Parameters& params);

// Return the includes needed for generated header file.
TString GetHeaderIncludes(grpc_generator::File* file,
                              const Parameters& params);

// Return the includes needed for generated source file.
TString GetSourceIncludes(grpc_generator::File* file,
                              const Parameters& params);

// Return the epilogue of the generated header file.
TString GetHeaderEpilogue(grpc_generator::File* file,
                              const Parameters& params);

// Return the prologue of the generated source file.
TString GetSourcePrologue(grpc_generator::File* file,
                              const Parameters& params);

// Return the services for generated header file.
TString GetHeaderServices(grpc_generator::File* file,
                              const Parameters& params);

// Return the services for generated source file.
TString GetSourceServices(grpc_generator::File* file,
                              const Parameters& params);

// Return the epilogue of the generated source file.
TString GetSourceEpilogue(grpc_generator::File* file,
                              const Parameters& params);

// Return the prologue of the generated mock file.
TString GetMockPrologue(grpc_generator::File* file,
                            const Parameters& params);

// Return the includes needed for generated mock file.
TString GetMockIncludes(grpc_generator::File* file,
                            const Parameters& params);

// Return the services for generated mock file.
TString GetMockServices(grpc_generator::File* file,
                            const Parameters& params);

// Return the epilogue of generated mock file.
TString GetMockEpilogue(grpc_generator::File* file,
                            const Parameters& params);

// Return the prologue of the generated mock file.
TString GetMockPrologue(grpc_generator::File* file,
                            const Parameters& params);

// Return the includes needed for generated mock file.
TString GetMockIncludes(grpc_generator::File* file,
                            const Parameters& params);

// Return the services for generated mock file.
TString GetMockServices(grpc_generator::File* file,
                            const Parameters& params);

// Return the epilogue of generated mock file.
TString GetMockEpilogue(grpc_generator::File* file,
                            const Parameters& params);

}  // namespace grpc_cpp_generator

#endif  // GRPC_INTERNAL_COMPILER_CPP_GENERATOR_H