#include <value_reader_generator.h>
|
bool | gen_enum (AST_Enum *, UTL_ScopedName *name, const std::vector< AST_EnumVal *> &contents, const char *repoid) |
|
bool | gen_typedef (AST_Typedef *, UTL_ScopedName *, AST_Type *, const char *) |
|
bool | gen_struct (AST_Structure *node, UTL_ScopedName *name, const std::vector< AST_Field *> &fields, AST_Type::SIZE_TYPE size, const char *repoid) |
|
bool | gen_union (AST_Union *, UTL_ScopedName *, const std::vector< AST_UnionBranch *> &, AST_Type *, const char *) |
|
virtual | ~dds_generator ()=0 |
|
virtual bool | do_included_files () const |
|
virtual void | gen_prologue () |
|
virtual void | gen_epilogue () |
|
virtual bool | gen_const (UTL_ScopedName *, bool, AST_Constant *) |
|
virtual bool | gen_struct_fwd (UTL_ScopedName *, AST_Type::SIZE_TYPE) |
|
virtual bool | gen_interf (AST_Interface *, UTL_ScopedName *, bool, const std::vector< AST_Interface *> &, const std::vector< AST_Interface *> &, const std::vector< AST_Attribute *> &, const std::vector< AST_Operation *> &, const char *) |
|
virtual bool | gen_interf_fwd (UTL_ScopedName *) |
|
virtual bool | gen_native (AST_Native *, UTL_ScopedName *, const char *) |
|
virtual bool | gen_union_fwd (AST_UnionFwd *, UTL_ScopedName *, AST_Type::SIZE_TYPE) |
|
Definition at line 14 of file value_reader_generator.h.
◆ gen_enum()
bool value_reader_generator::gen_enum |
( |
AST_Enum * |
, |
|
|
UTL_ScopedName * |
name, |
|
|
const std::vector< AST_EnumVal *> & |
contents, |
|
|
const char * |
repoid |
|
) |
| |
|
virtual |
Reimplemented from dds_generator.
Definition at line 212 of file value_reader_generator.cpp.
References Function::addArg(), be_global, canonical_name(), Function::endArgs(), read(), and scoped().
217 be_global->add_include(
"dds/DCPS/Util.h", BE_GlobalData::STREAM_H);
218 be_global->add_include(
"dds/DCPS/ValueReader.h", BE_GlobalData::STREAM_H);
226 read.addArg(
"value_reader",
"OpenDDS::DCPS::ValueReader&");
227 read.addArg(
"value", type_name +
"&");
231 " static const ListEnumHelper::Pair pairs[] = {";
233 for (
size_t i = 0; i != contents.size(); ++i) {
239 '{' <<
'"' << idl_name <<
'"' <<
',' << contents[i]->constant_value()->ev()->u.eval <<
'}';
244 " ListEnumHelper helper(pairs);\n" 245 " return value_reader.read_enum(value, helper);\n";
std::string canonical_name(UTL_ScopedName *sn)
ssize_t read(ACE_HANDLE handle, void *buf, size_t len)
std::string scoped(UTL_ScopedName *sn, EscapeContext ec=EscapeContext_Normal)
BE_GlobalData * be_global
◆ gen_struct()
bool value_reader_generator::gen_struct |
( |
AST_Structure * |
node, |
|
|
UTL_ScopedName * |
name, |
|
|
const std::vector< AST_Field *> & |
fields, |
|
|
AST_Type::SIZE_TYPE |
size, |
|
|
const char * |
repoid |
|
) |
| |
|
virtual |
Implements dds_generator.
Definition at line 259 of file value_reader_generator.cpp.
References Function::addArg(), be_global, canonical_name(), Function::endArgs(), read(), and scoped().
265 be_global->add_include(
"dds/DCPS/Util.h", BE_GlobalData::STREAM_H);
266 be_global->add_include(
"dds/DCPS/ValueReader.h", BE_GlobalData::STREAM_H);
269 const bool use_cxx11 =
be_global->language_mapping() == BE_GlobalData::LANGMAP_CXX11;
270 const std::string accessor = use_cxx11 ?
"()" :
"";
276 read.addArg(
"value_reader",
"OpenDDS::DCPS::ValueReader&");
277 read.addArg(
"value", type_name +
"&");
281 " static const ListMemberHelper::Pair pairs[] = {";
283 for (
size_t i = 0; i != fields.size(); ++i) {
289 '{' <<
'"' << idl_name <<
'"' <<
',' <<
be_global->get_id(fields[i]) <<
'}';
294 " ListMemberHelper helper(pairs);\n";
297 " if (!value_reader.begin_struct()) return false;\n" 298 " XTypes::MemberId member_id;\n" 299 " while (value_reader.begin_struct_member(member_id, helper)) {\n" 300 " switch (member_id) {\n";
302 for (std::vector<AST_Field*>::const_iterator pos = fields.begin(), limit = fields.end();
303 pos != limit; ++pos) {
304 AST_Field*
const field = *pos;
305 const std::string field_name = field->local_name()->get_string();
307 " case " <<
be_global->get_id(field) <<
": {\n";
308 generate_read(
"value." + field_name, accessor, field->field_type(),
"i", 3);
316 " if (!value_reader.end_struct_member()) return false;\n" 318 " if (!value_reader.end_struct()) return false;\n"
std::string canonical_name(UTL_ScopedName *sn)
ssize_t read(ACE_HANDLE handle, void *buf, size_t len)
std::string scoped(UTL_ScopedName *sn, EscapeContext ec=EscapeContext_Normal)
BE_GlobalData * be_global
◆ gen_typedef()
bool value_reader_generator::gen_typedef |
( |
AST_Typedef * |
, |
|
|
UTL_ScopedName * |
, |
|
|
AST_Type * |
, |
|
|
const char * |
|
|
) |
| |
|
virtual |
◆ gen_union()
bool value_reader_generator::gen_union |
( |
AST_Union * |
u, |
|
|
UTL_ScopedName * |
name, |
|
|
const std::vector< AST_UnionBranch *> & |
branches, |
|
|
AST_Type * |
discriminator, |
|
|
const char * |
|
|
) |
| |
|
virtual |
Implements dds_generator.
Definition at line 326 of file value_reader_generator.cpp.
References Function::addArg(), be_global, Function::endArgs(), generateSwitchForUnion(), read(), and scoped().
332 be_global->add_include(
"dds/DCPS/Util.h", BE_GlobalData::STREAM_H);
333 be_global->add_include(
"dds/DCPS/ValueReader.h", BE_GlobalData::STREAM_H);
341 read.addArg(
"value_reader",
"OpenDDS::DCPS::ValueReader&");
342 read.addArg(
"value", type_name +
"&");
346 " if (!value_reader.begin_union()) return false;\n" 347 " if (!value_reader.begin_discriminator()) return false;\n" 349 " " <<
scoped(discriminator->name()) <<
" d;\n";
350 generate_read(
"d",
"", discriminator,
"i", 2);
354 " if (!value_reader.end_discriminator()) return false;\n";
357 discriminator,
"",
"", type_name.c_str(),
360 " if (!value_reader.end_union()) return false;\n"
bool generateSwitchForUnion(AST_Union *u, const char *switchExpr, CommonFn commonFn, const std::vector< AST_UnionBranch *> &branches, AST_Type *discriminator, const char *statementPrefix, const char *namePrefix="", const char *uni="", bool forceDisableDefault=false, bool parens=true, bool breaks=true, CommonFn commonFn2=0)
returns true if a default: branch was generated (no default: label in IDL)
ssize_t read(ACE_HANDLE handle, void *buf, size_t len)
std::string scoped(UTL_ScopedName *sn, EscapeContext ec=EscapeContext_Normal)
BE_GlobalData * be_global
The documentation for this class was generated from the following files: