2 * Copyright 2017 Google Inc. All rights reserved.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
20 #include "flatbuffers/flatbuffers.h"
21 #include "flatbuffers/idl.h"
22 #include "flatbuffers/util.h"
27 namespace flatbuffers {
31 // Output generator for the various programming languages and formats we
34 typedef bool (*GenerateFn)(const flatbuffers::Parser &parser,
35 const std::string &path,
36 const std::string &file_name);
37 typedef std::string (*MakeRuleFn)(const flatbuffers::Parser &parser,
38 const std::string &path,
39 const std::string &file_name);
42 const char *generator_opt_short;
43 const char *generator_opt_long;
44 const char *lang_name;
46 GenerateFn generateGRPC;
47 flatbuffers::IDLOptions::Language lang;
48 const char *generator_help;
52 typedef void (*WarnFn)(const FlatCompiler *flatc, const std::string &warn,
55 typedef void (*ErrorFn)(const FlatCompiler *flatc, const std::string &err,
56 bool usage, bool show_exe_name);
58 // Parameters required to initialize the FlatCompiler.
61 : generators(nullptr),
66 const Generator *generators;
67 size_t num_generators;
72 explicit FlatCompiler(const InitParams ¶ms) : params_(params) {}
74 int Compile(int argc, const char **argv);
76 std::string GetUsageString(const char *program_name) const;
79 void ParseFile(flatbuffers::Parser &parser, const std::string &filename,
80 const std::string &contents,
81 std::vector<const char *> &include_directories) const;
83 void LoadBinarySchema(Parser &parser, const std::string &filename,
84 const std::string &contents);
86 void Warn(const std::string &warn, bool show_exe_name = true) const;
88 void Error(const std::string &err, bool usage = true,
89 bool show_exe_name = true) const;
94 } // namespace flatbuffers