Coverage Report

Created: 2026-05-16 06:39

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/flatbuffers/grpc/src/compiler/schema_interface.h
Line
Count
Source
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_SCHEMA_INTERFACE_H
20
#define GRPC_INTERNAL_COMPILER_SCHEMA_INTERFACE_H
21
22
#include <map>
23
#include <memory>
24
#include <vector>
25
26
#ifndef GRPC_CUSTOM_STRING
27
#include <string>
28
#define GRPC_CUSTOM_STRING std::string
29
#endif
30
31
namespace grpc {
32
33
typedef GRPC_CUSTOM_STRING string;
34
35
}  // namespace grpc
36
37
namespace grpc_generator {
38
39
// A common interface for objects having comments in the source.
40
// Return formatted comments to be inserted in generated code.
41
struct CommentHolder {
42
0
  virtual ~CommentHolder() {}
43
  virtual grpc::string GetLeadingComments(const grpc::string prefix) const = 0;
44
  virtual grpc::string GetTrailingComments(const grpc::string prefix) const = 0;
45
  virtual std::vector<grpc::string> GetAllComments() const = 0;
46
};
47
48
// An abstract interface representing a method.
49
struct Method : public CommentHolder {
50
0
  virtual ~Method() {}
51
52
  virtual grpc::string name() const = 0;
53
54
  virtual grpc::string input_type_name() const = 0;
55
  virtual grpc::string output_type_name() const = 0;
56
57
  virtual bool get_module_and_message_path_input(
58
      grpc::string* str, grpc::string generator_file_name,
59
      bool generate_in_pb2_grpc, grpc::string import_prefix) const = 0;
60
  virtual bool get_module_and_message_path_output(
61
      grpc::string* str, grpc::string generator_file_name,
62
      bool generate_in_pb2_grpc, grpc::string import_prefix) const = 0;
63
64
  virtual std::vector<grpc::string> get_input_namespace_parts() const = 0;
65
  virtual grpc::string get_input_type_name() const = 0;
66
  virtual std::vector<grpc::string> get_output_namespace_parts() const = 0;
67
  virtual grpc::string get_output_type_name() const = 0;
68
69
  virtual grpc::string get_fb_builder() const = 0;
70
71
  virtual bool NoStreaming() const = 0;
72
  virtual bool ClientStreaming() const = 0;
73
  virtual bool ServerStreaming() const = 0;
74
  virtual bool BidiStreaming() const = 0;
75
};
76
77
// An abstract interface representing a service.
78
struct Service : public CommentHolder {
79
0
  virtual ~Service() {}
80
81
  virtual std::vector<grpc::string> namespace_parts() const = 0;
82
  virtual grpc::string name() const = 0;
83
  virtual bool is_internal() const = 0;
84
85
  virtual int method_count() const = 0;
86
  virtual std::unique_ptr<const Method> method(int i) const = 0;
87
};
88
89
struct Printer {
90
0
  virtual ~Printer() {}
91
92
  virtual void Print(const std::map<grpc::string, grpc::string>& vars,
93
                     const char* template_string) = 0;
94
  virtual void Print(const char* string) = 0;
95
  virtual void SetIndentationSize(const size_t size) = 0;
96
  virtual void Indent() = 0;
97
  virtual void Outdent() = 0;
98
};
99
100
// An interface that allows the source generated to be output using various
101
// libraries/idls/serializers.
102
struct File : public CommentHolder {
103
0
  virtual ~File() {}
104
105
  virtual grpc::string filename() const = 0;
106
  virtual grpc::string filename_without_ext() const = 0;
107
  virtual grpc::string package() const = 0;
108
  virtual std::vector<grpc::string> package_parts() const = 0;
109
  virtual grpc::string additional_headers() const = 0;
110
111
  virtual int service_count() const = 0;
112
  virtual std::unique_ptr<const Service> service(int i) const = 0;
113
114
  virtual std::unique_ptr<Printer> CreatePrinter(
115
      grpc::string* str, const char indentation_type = ' ') const = 0;
116
};
117
}  // namespace grpc_generator
118
119
#endif  // GRPC_INTERNAL_COMPILER_SCHEMA_INTERFACE_H