26 #include <boost/format.hpp>
28 #include <SimoxUtility/algorithm/string/string_tools.h>
47 writer->body.line(name +
" = " +
std::to_string(value) + (addComma ?
"," :
""));
49 return writer->body.line(name + (addComma ?
"," :
""));
53 MetaEnum(name), namespaces(namespaces)
58 const std::string& name,
59 const std::vector<CppEnumFieldPtr>& fields) :
60 MetaEnum(name), namespaces(namespaces), fields(fields)
67 CppWriterPtr w = std::dynamic_pointer_cast<CppWriter>(writer);
77 std::vector<std::string>
86 for (
const auto& ns : namespaces)
88 writer->body.startBlock(std::string(
"namespace ") + ns);
93 std::string delimiters =
"\n";
95 writer->body.line(
"/**");
97 for (
auto& line : doclines)
99 writer->body.line(
" * " + line);
102 writer->body.line(
" */");
105 writer->body.line(
"enum class " +
name);
106 writer->body.startBlock();
107 for (
unsigned int i = 0; i < fields.size(); ++i)
110 f->writeCpp(writer, (i != (fields.size() - 1)));
112 writer->body.endBlock(
"; // enum class " +
name);
114 for (std::vector<std::string>::reverse_iterator it = namespaces.rbegin();
115 it != namespaces.rend();
118 writer->body.endBlockComment(std::string(
"namespace ") + *it);