26#include <boost/format.hpp>
28#include <SimoxUtility/algorithm/string/string_tools.h>
38 name(name), value(value), hasValue(true)
47 writer->body.line(name +
" = " + std::to_string(value) + (addComma ?
"," :
""));
49 return writer->body.line(name + (addComma ?
"," :
""));
58 const std::string&
name,
59 const std::vector<CppEnumFieldPtr>& 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";
94 std::vector<std::string> doclines = simox::alg::split(
docString, delimiters);
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);
void writeCpp(const CppWriterPtr &writer, bool addComma=false)
CppEnumField(const std::string &name)
CppEnum(const std::vector< std::string > namespaces, const std::string &name)
void writeCpp(const CppWriterPtr &writer)
std::vector< std::string > getNamespaces() const
void write(const MetaWriterPtr &writer) override
void addField(const CppEnumFieldPtr &)
This file offers overloads of toIce() and fromIce() functions for STL container types.
std::shared_ptr< MetaWriter > MetaWriterPtr
std::shared_ptr< CppWriter > CppWriterPtr
std::shared_ptr< CppEnumField > CppEnumFieldPtr