OpenDDS  Snapshot(2023/04/28-20:55)
field_info.h
Go to the documentation of this file.
1 /*
2  *
3  *
4  * Distributed under the OpenDDS License.
5  * See: http://www.opendds.org/license.html
6  */
7 
8 #ifndef FIELD_INFO_H
9 #define FIELD_INFO_H
10 
11 #include "dds_generator.h"
12 
13 #include <utl_scoped_name.h>
14 #include <ast.h>
15 
16 #include <ace/Bound_Ptr.h>
17 
18 #include <string>
19 
20 struct FieldInfo {
21  struct EleLen {
23  const char* base_name_;
26  Container base_container_;
27  std::size_t len_;
28  explicit EleLen(AST_Type* type);
29  bool operator<(const EleLen& o) const;
30  };
31  typedef std::set<EleLen> EleLenSet;
32 
33  static const std::string scope_op;
34  static bool cxx11();
35  static std::string at_pfx();
36  static std::string scoped_type(AST_Type& field_type, const std::string& field_name);
37  static std::string underscore(const std::string& scoped);
38  static std::string ref(const std::string& scoped, const std::string& const_s = "const ");
39 
40  AST_Type* type_;
41  const std::string name_;
42  const std::string scoped_type_;
43  const std::string underscored_;
44  const std::string struct_name_;
45  const std::string type_name_;
46  AST_Type* act_;
48  AST_Array* arr_;
49  AST_Sequence* seq_;
50  AST_Type* as_base_;
51  AST_Type* as_act_;
53  const std::string scoped_elem_;
54  const std::string underscored_elem_;
55  const std::string elem_ref_;
56  const std::string elem_const_ref_;
57 
58  std::size_t n_elems_;
59  std::string length_;
60 
61  std::string unwrap_;
62  std::string const_unwrap_;
63  std::string arg_;
64  std::string ref_;
65  std::string const_ref_;
66  std::string ptr_;
67 
68  explicit FieldInfo(AST_Field& field);
69  bool is_new(EleLenSet& el_set) const;
70  bool anonymous() const;
71 };
72 
73 #endif
bool is_new(EleLenSet &el_set) const
Definition: field_info.cpp:132
std::string length_
Definition: field_info.h:59
static std::string ref(const std::string &scoped, const std::string &const_s="const ")
Definition: field_info.cpp:82
std::string const_unwrap_
Definition: field_info.h:62
AstTypeClassification::Classification base_cls_
Definition: field_info.h:24
std::string const_ref_
Definition: field_info.h:65
const std::string name_
Definition: field_info.h:41
static const std::string scope_op
Definition: field_info.h:33
std::string arg_
Definition: field_info.h:63
std::string ptr_
Definition: field_info.h:66
std::string unwrap_
Definition: field_info.h:61
static std::string scoped_type(AST_Type &field_type, const std::string &field_name)
Definition: field_info.cpp:60
AST_Type * act_
Definition: field_info.h:46
static std::string at_pfx()
Definition: field_info.cpp:55
AST_Type * as_act_
Definition: field_info.h:51
const std::string scoped_elem_
Definition: field_info.h:53
EleLen(AST_Type *type)
Definition: field_info.cpp:15
const std::string underscored_
Definition: field_info.h:43
const AstTypeClassification::Classification cls_
Definition: field_info.h:47
AstTypeClassification::Classification cls_
Definition: field_info.h:22
static bool cxx11()
Definition: field_info.cpp:50
const std::string scoped_type_
Definition: field_info.h:42
const std::string underscored_elem_
Definition: field_info.h:54
static std::string underscore(const std::string &scoped)
Definition: field_info.cpp:70
Container base_container_
Definition: field_info.h:26
std::string scoped(UTL_ScopedName *sn, EscapeContext ec=EscapeContext_Normal)
AST_Type * type_
Definition: field_info.h:40
AST_Array * arr_
Definition: field_info.h:48
bool operator<(const EleLen &o) const
Definition: field_info.cpp:28
std::set< EleLen > EleLenSet
Definition: field_info.h:31
AST_Type * as_base_
Definition: field_info.h:50
std::string ref_
Definition: field_info.h:64
const char * base_name_
Definition: field_info.h:23
const AstTypeClassification::Classification as_cls_
Definition: field_info.h:52
std::size_t n_elems_
Definition: field_info.h:58
const std::string elem_const_ref_
Definition: field_info.h:56
AST_Sequence * seq_
Definition: field_info.h:49
ACE_Strong_Bound_Ptr< const EleLen, ACE_Null_Mutex > Container
Definition: field_info.h:25
const std::string elem_ref_
Definition: field_info.h:55
bool anonymous() const
Definition: field_info.cpp:137
FieldInfo(AST_Field &field)
Definition: field_info.cpp:87
const std::string struct_name_
Definition: field_info.h:44
std::size_t len_
Definition: field_info.h:27
const std::string type_name_
Definition: field_info.h:45