AstTypeClassification Namespace Reference

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

Typedef Documentation

Definition at line 274 of file dds_generator.h.


Function Documentation

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   }

Here is the call graph for this function:

Here is the caller graph for this function:

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   }

Here is the caller graph for this function:


Variable Documentation

Definition at line 277 of file dds_generator.h.

Referenced by classify().

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().

Definition at line 276 of file dds_generator.h.

Referenced by classify(), generateCaseBody(), and operator<<().

Definition at line 275 of file dds_generator.h.

Referenced by classify().

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 10 Aug 2018 for OpenDDS by  doxygen 1.6.1