Typedefs | |
typedef size_t | Classification |
Functions | |
AST_Type * | resolveActualType (AST_Type *element) |
Classification | classify (AST_Type *type) |
Variables | |
const Classification | CL_UNKNOWN = 0 |
const Classification | CL_SCALAR = 1 |
const Classification | CL_PRIMITIVE = 2 |
const Classification | CL_STRUCTURE = 4 |
const Classification | CL_STRING = 8 |
const Classification | CL_ENUM = 16 |
const Classification | CL_UNION = 32 |
const Classification | CL_ARRAY = 64 |
const Classification | CL_SEQUENCE = 128 |
const Classification | CL_WIDE = 256 |
const Classification | CL_BOUNDED = 512 |
const Classification | CL_INTERFACE = 1024 |
const Classification | CL_FIXED = 2048 |
Definition at line 274 of file dds_generator.h.
Classification AstTypeClassification::classify | ( | AST_Type * | type | ) | [inline] |
Definition at line 280 of file dds_generator.h.
References CL_ARRAY, CL_BOUNDED, CL_ENUM, CL_FIXED, CL_INTERFACE, CL_PRIMITIVE, CL_SCALAR, CL_SEQUENCE, CL_STRING, CL_STRUCTURE, CL_UNION, CL_UNKNOWN, CL_WIDE, and resolveActualType().
Referenced by func(), SafetyProfileGenerator::gen_sequence(), FaceGenerator::gen_sequence(), SafetyProfileGenerator::gen_struct(), FaceGenerator::gen_struct(), metaclass_generator::gen_typedef(), langmap_generator::gen_typedef(), GeneratorBase::generate_union_field(), GeneratorBase::generateAssign(), generateCaseBody(), GeneratorBase::generateCopyCtor(), GeneratorBase::generateEqual(), GeneratorBase::generateReset(), GeneratorBase::GenerateGettersAndSetters::operator()(), and operator<<().
00281 { 00282 type = AstTypeClassification::resolveActualType(type); 00283 switch (type->node_type()) { 00284 case AST_Decl::NT_pre_defined: { 00285 AST_PredefinedType* p = AST_PredefinedType::narrow_from_decl(type); 00286 switch (p->pt()) { 00287 case AST_PredefinedType::PT_any: 00288 case AST_PredefinedType::PT_object: 00289 return CL_UNKNOWN; 00290 case AST_PredefinedType::PT_wchar: 00291 return CL_SCALAR | CL_PRIMITIVE | CL_WIDE; 00292 default: 00293 return CL_SCALAR | CL_PRIMITIVE; 00294 } 00295 } 00296 case AST_Decl::NT_array: 00297 return CL_ARRAY; 00298 case AST_Decl::NT_union: 00299 return CL_UNION; 00300 case AST_Decl::NT_string: 00301 case AST_Decl::NT_wstring: 00302 return CL_SCALAR | CL_STRING | 00303 ((AST_String::narrow_from_decl(type)->max_size()->ev()->u.ulval == 0) 00304 ? 0 : CL_BOUNDED) | 00305 ((type->node_type() == AST_Decl::NT_wstring) ? CL_WIDE : 0); 00306 case AST_Decl::NT_sequence: 00307 return CL_SEQUENCE | 00308 ((AST_Sequence::narrow_from_decl(type)->unbounded()) ? 0 : CL_BOUNDED); 00309 case AST_Decl::NT_struct: 00310 return CL_STRUCTURE; 00311 case AST_Decl::NT_enum: 00312 return CL_SCALAR | CL_ENUM; 00313 case AST_Decl::NT_interface: 00314 return CL_INTERFACE; 00315 #ifdef ACE_HAS_CDR_FIXED 00316 case AST_Decl::NT_fixed: 00317 return CL_FIXED; 00318 #endif 00319 default: 00320 return CL_UNKNOWN; 00321 } 00322 }
AST_Type* AstTypeClassification::resolveActualType | ( | AST_Type * | element | ) | [inline] |
Definition at line 231 of file dds_generator.h.
Referenced by classify(), marshal_generator::gen_struct(), SafetyProfileGenerator::gen_struct(), FaceGenerator::gen_struct(), metaclass_generator::gen_typedef(), langmap_generator::gen_typedef(), GeneratorBase::generate_union_field(), GeneratorBase::generateAssign(), generateCaseBody(), GeneratorBase::generateCopyCtor(), GeneratorBase::generateEqual(), GeneratorBase::generateReset(), generateSwitchForUnion(), NestedForLoops::NestedForLoops(), and GeneratorBase::GenerateGettersAndSetters::operator()().
00232 { 00233 if (element->node_type() == AST_Decl::NT_typedef) { 00234 AST_Typedef* td = AST_Typedef::narrow_from_decl(element); 00235 return td->primitive_base_type(); 00236 } 00237 00238 switch(element->node_type()) { 00239 case AST_Decl::NT_interface_fwd: 00240 { 00241 AST_InterfaceFwd* td = AST_InterfaceFwd::narrow_from_decl(element); 00242 return td->full_definition(); 00243 } 00244 case AST_Decl::NT_valuetype_fwd: 00245 { 00246 AST_ValueTypeFwd* td = AST_ValueTypeFwd::narrow_from_decl(element); 00247 return td->full_definition(); 00248 } 00249 case AST_Decl::NT_union_fwd: 00250 { 00251 AST_UnionFwd* td = AST_UnionFwd::narrow_from_decl(element); 00252 return td->full_definition(); 00253 } 00254 case AST_Decl::NT_struct_fwd: 00255 { 00256 AST_StructureFwd* td = AST_StructureFwd::narrow_from_decl(element); 00257 return td->full_definition(); 00258 } 00259 case AST_Decl::NT_component_fwd: 00260 { 00261 AST_ComponentFwd* td = AST_ComponentFwd::narrow_from_decl(element); 00262 return td->full_definition(); 00263 } 00264 case AST_Decl::NT_eventtype_fwd: 00265 { 00266 AST_EventTypeFwd* td = AST_EventTypeFwd::narrow_from_decl(element); 00267 return td->full_definition(); 00268 } 00269 default: 00270 return element; 00271 } 00272 }
const Classification AstTypeClassification::CL_ARRAY = 64 |
Definition at line 276 of file dds_generator.h.
Referenced by classify(), SafetyProfileGenerator::gen_sequence(), FaceGenerator::gen_sequence(), SafetyProfileGenerator::gen_struct(), FaceGenerator::gen_struct(), GeneratorBase::generate_union_field(), GeneratorBase::generateAssign(), generateCaseBody(), GeneratorBase::generateCopyCtor(), GeneratorBase::generateEqual(), GeneratorBase::generateReset(), and GeneratorBase::GenerateGettersAndSetters::operator()().
const Classification AstTypeClassification::CL_BOUNDED = 512 |
Definition at line 277 of file dds_generator.h.
Referenced by classify().
const Classification AstTypeClassification::CL_ENUM = 16 |
Definition at line 276 of file dds_generator.h.
Referenced by classify(), GeneratorBase::generate_union_field(), GeneratorBase::generateAssign(), GeneratorBase::generateCopyCtor(), GeneratorBase::generateEqual(), GeneratorBase::generateReset(), and GeneratorBase::GenerateGettersAndSetters::operator()().
const Classification AstTypeClassification::CL_FIXED = 2048 |
Definition at line 278 of file dds_generator.h.
Referenced by classify(), GeneratorBase::generate_union_field(), GeneratorBase::generateAssign(), GeneratorBase::generateCopyCtor(), GeneratorBase::generateEqual(), GeneratorBase::generateReset(), and GeneratorBase::GenerateGettersAndSetters::operator()().
const Classification AstTypeClassification::CL_INTERFACE = 1024 |
Definition at line 277 of file dds_generator.h.
Referenced by classify().
Definition at line 275 of file dds_generator.h.
Referenced by classify(), and operator<<().
Definition at line 275 of file dds_generator.h.
Referenced by classify().
const Classification AstTypeClassification::CL_SEQUENCE = 128 |
Definition at line 277 of file dds_generator.h.
Referenced by classify(), metaclass_generator::gen_typedef(), GeneratorBase::generate_union_field(), GeneratorBase::generateAssign(), GeneratorBase::generateCopyCtor(), GeneratorBase::generateEqual(), GeneratorBase::generateReset(), and GeneratorBase::GenerateGettersAndSetters::operator()().
Definition at line 276 of file dds_generator.h.
Referenced by classify(), generateCaseBody(), and operator<<().
Definition at line 276 of file dds_generator.h.
Referenced by classify(), GeneratorBase::generate_union_field(), GeneratorBase::generateAssign(), GeneratorBase::generateCopyCtor(), GeneratorBase::generateEqual(), GeneratorBase::generateReset(), and GeneratorBase::GenerateGettersAndSetters::operator()().
const Classification AstTypeClassification::CL_UNION = 32 |
Definition at line 276 of file dds_generator.h.
Referenced by classify(), GeneratorBase::generate_union_field(), GeneratorBase::generateAssign(), GeneratorBase::generateCopyCtor(), GeneratorBase::generateEqual(), GeneratorBase::generateReset(), and GeneratorBase::GenerateGettersAndSetters::operator()().
Definition at line 275 of file dds_generator.h.
Referenced by classify().
const Classification AstTypeClassification::CL_WIDE = 256 |
Definition at line 277 of file dds_generator.h.
Referenced by classify(), SafetyProfileGenerator::gen_sequence(), FaceGenerator::gen_sequence(), SafetyProfileGenerator::gen_struct(), FaceGenerator::gen_struct(), langmap_generator::gen_typedef(), GeneratorBase::generate_union_field(), generateCaseBody(), GeneratorBase::GenerateGettersAndSetters::operator()(), and operator<<().