OpenDDS  Snapshot(2023/04/07-19:43)
Public Types | Public Member Functions | Public Attributes | List of all members
FieldInfo::EleLen Struct Reference

#include <field_info.h>

Collaboration diagram for FieldInfo::EleLen:
Collaboration graph
[legend]

Public Types

typedef ACE_Strong_Bound_Ptr< const EleLen, ACE_Null_MutexContainer
 

Public Member Functions

 EleLen (AST_Type *type)
 
bool operator< (const EleLen &o) const
 

Public Attributes

AstTypeClassification::Classification cls_
 
const char * base_name_
 
AstTypeClassification::Classification base_cls_
 
Container base_container_
 
std::size_t len_
 

Detailed Description

Definition at line 21 of file field_info.h.

Member Typedef Documentation

◆ Container

Definition at line 25 of file field_info.h.

Constructor & Destructor Documentation

◆ EleLen()

FieldInfo::EleLen::EleLen ( AST_Type *  type)
explicit

Definition at line 15 of file field_info.cpp.

References base_cls_, base_container_, base_name_, AstTypeClassification::CL_ARRAY, AstTypeClassification::CL_SEQUENCE, AstTypeClassification::classify(), container_base_type(), and AstTypeClassification::resolveActualType().

16  : cls_(classify(type))
18 {
19  AST_Type* const base = resolveActualType(container_base_type(type));
20  const Classification base_cls = classify(base);
21  base_cls_ = base_cls;
22  base_name_ = base->full_name();
23  if (base_cls & (CL_ARRAY | CL_SEQUENCE)) {
24  base_container_ = Container(new EleLen(base));
25  }
26 }
Container base_container_
Definition: field_info.h:26
const Classification CL_ARRAY
AST_Type * resolveActualType(AST_Type *element)
EleLen(AST_Type *type)
Definition: field_info.cpp:15
Classification classify(AST_Type *type)
ACE_CDR::ULong container_element_limit(AST_Type *type)
const char * base_name_
Definition: field_info.h:23
const Classification CL_SEQUENCE
AstTypeClassification::Classification base_cls_
Definition: field_info.h:24
AstTypeClassification::Classification cls_
Definition: field_info.h:22
AST_Type * container_base_type(AST_Type *type)
ACE_Strong_Bound_Ptr< const EleLen, ACE_Null_Mutex > Container
Definition: field_info.h:25
std::size_t len_
Definition: field_info.h:27

Member Function Documentation

◆ operator<()

bool FieldInfo::EleLen::operator< ( const EleLen o) const

Definition at line 28 of file field_info.cpp.

References base_cls_, base_container_, base_name_, cls_, ACE_Strong_Bound_Ptr< X, ACE_LOCK >::get(), len_, and FieldInfo::scope_op.

29 {
30  if (cls_ != o.cls_) {
31  return cls_ < o.cls_;
32  }
33  if (len_ != o.len_) {
34  return len_ < o.len_;
35  }
36  if (bool(base_container_.get()) != bool(o.base_container_.get())) {
37  return bool(base_container_.get()) < bool(o.base_container_.get());
38  }
39  if (base_container_.get()) {
40  return *base_container_ < *o.base_container_;
41  }
42  if (base_cls_ != o.base_cls_) {
43  return base_cls_ < o.base_cls_;
44  }
45  return std::strcmp(base_name_, o.base_name_) < 0;
46 }
Container base_container_
Definition: field_info.h:26
X * get(void) const
const char * base_name_
Definition: field_info.h:23
AstTypeClassification::Classification base_cls_
Definition: field_info.h:24
AstTypeClassification::Classification cls_
Definition: field_info.h:22
std::size_t len_
Definition: field_info.h:27

Member Data Documentation

◆ base_cls_

AstTypeClassification::Classification FieldInfo::EleLen::base_cls_

Definition at line 24 of file field_info.h.

Referenced by EleLen(), and operator<().

◆ base_container_

Container FieldInfo::EleLen::base_container_

Definition at line 26 of file field_info.h.

Referenced by EleLen(), and operator<().

◆ base_name_

const char* FieldInfo::EleLen::base_name_

Definition at line 23 of file field_info.h.

Referenced by EleLen(), and operator<().

◆ cls_

AstTypeClassification::Classification FieldInfo::EleLen::cls_

Definition at line 22 of file field_info.h.

Referenced by operator<().

◆ len_

std::size_t FieldInfo::EleLen::len_

Definition at line 27 of file field_info.h.

Referenced by operator<().


The documentation for this struct was generated from the following files: