17#ifndef FLATBUFFERS_CODE_GENERATORS_H_
18#define FLATBUFFERS_CODE_GENERATORS_H_
43 : pad_(pad), cur_ident_lvl_(0), ignore_ident_(false) {}
54 void SetValue(
const std::string &key,
const std::string &value) {
55 value_map_[key] = value;
58 std::string
GetValue(
const std::string &key)
const {
59 const auto it = value_map_.find(key);
60 return it == value_map_.end() ?
"" : it->second;
70 std::string
ToString()
const {
return stream_.str(); }
76 if (cur_ident_lvl_) cur_ident_lvl_--;
79 void SetPadding(
const std::string &padding) { pad_ = padding; }
82 std::map<std::string, std::string> value_map_;
83 std::stringstream stream_;
89 void AppendIdent(std::stringstream &stream);
98 const bool dasherize =
false);
101 const std::string &file_name,
106 const std::string &file_name, std::string qualifying_start,
107 std::string qualifying_separator, std::string default_extension)
121 const bool dasherize =
false)
const;
139 const std::string &name)
const;
142 const std::string &suffix =
"")
const;
162 const char *prefix =
"");
170 virtual std::string
Value(
double v,
const std::string &src)
const = 0;
171 virtual std::string Inf(
double v)
const = 0;
172 virtual std::string NaN(
double v)
const = 0;
174 virtual std::string
Value(
float v,
const std::string &src)
const = 0;
175 virtual std::string Inf(
float v)
const = 0;
176 virtual std::string NaN(
float v)
const = 0;
179 std::string GenFloatConstantImpl(
const FieldDef &field)
const;
185 const char *pos_inf_number,
186 const char *neg_inf_number);
189 std::string
Value(
double v,
190 const std::string &src)
const FLATBUFFERS_OVERRIDE;
191 std::string Inf(
double v)
const FLATBUFFERS_OVERRIDE;
192 std::string NaN(
double v)
const FLATBUFFERS_OVERRIDE;
194 std::string
Value(
float v,
const std::string &src)
const FLATBUFFERS_OVERRIDE;
195 std::string Inf(
float v)
const FLATBUFFERS_OVERRIDE;
196 std::string NaN(
float v)
const FLATBUFFERS_OVERRIDE;
198 const std::string nan_number_;
199 const std::string pos_inf_number_;
200 const std::string neg_inf_number_;
207 const char *single_prefix,
const char *nan_number,
208 const char *pos_inf_number,
209 const char *neg_inf_number =
"");
212 std::string
Value(
double v,
213 const std::string &src)
const FLATBUFFERS_OVERRIDE;
214 std::string Inf(
double v)
const FLATBUFFERS_OVERRIDE;
216 std::string NaN(
double v)
const FLATBUFFERS_OVERRIDE;
218 std::string
Value(
float v,
const std::string &src)
const FLATBUFFERS_OVERRIDE;
219 std::string Inf(
float v)
const FLATBUFFERS_OVERRIDE;
220 std::string NaN(
float v)
const FLATBUFFERS_OVERRIDE;
222 std::string MakeNaN(
const std::string &prefix)
const;
223 std::string MakeInf(
bool neg,
const std::string &prefix)
const;
225 const std::string double_prefix_;
226 const std::string single_prefix_;
227 const std::string nan_number_;
228 const std::string pos_inf_number_;
229 const std::string neg_inf_number_;
233 const std::string &path,
234 const std::string &file_name);
BaseGenerator & operator=(const BaseGenerator &)
std::string WrapInNameSpace(const Definition &def, const std::string &suffix="") const
virtual bool generate()=0
const std::string default_extension_
std::string WrapInNameSpace(const Namespace *ns, const std::string &name) const
static std::string LastNamespacePart(const Namespace &ns)
BaseGenerator(const BaseGenerator &)
std::string GetNameSpace(const Definition &def) const
static const char * FlatBuffersGeneratedWarning()
static std::string FullNamespace(const char *separator, const Namespace &ns)
std::string GeneratedFileName(const std::string &path, const std::string &file_name, const IDLOptions &options) const
const std::string qualifying_separator_
std::string NamespaceDir(const Namespace &ns, const bool dasherize=false) const
BaseGenerator(const Parser &parser, const std::string &path, const std::string &file_name, std::string qualifying_start, std::string qualifying_separator, std::string default_extension)
const std::string qualifying_start_
const std::string & path_
virtual const Namespace * CurrentNameSpace() const
const std::string & file_name_
static std::string NamespaceDir(const Parser &parser, const std::string &path, const Namespace &ns, const bool dasherize=false)
void SetPadding(const std::string &padding)
CodeWriter(std::string pad=std::string())
void DecrementIdentLevel()
std::string ToString() const
void IncrementIdentLevel()
std::string GetValue(const std::string &key) const
void operator+=(std::string text)
void SetValue(const std::string &key, const std::string &value)
virtual ~FloatConstantGenerator()
std::string GenFloatConstant(const FieldDef &field) const
SimpleFloatConstantGenerator(const char *nan_number, const char *pos_inf_number, const char *neg_inf_number)
TypedFloatConstantGenerator(const char *double_prefix, const char *single_prefix, const char *nan_number, const char *pos_inf_number, const char *neg_inf_number="")
void GenComment(const std::vector< std::string > &dc, std::string *code_ptr, const CommentConfig *config, const char *prefix="")
std::string JavaCSharpMakeRule(const bool java, const Parser &parser, const std::string &path, const std::string &file_name)