OpenDDS  Snapshot(2023/04/28-20:55)
dds_visitor.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 dds_visitor_H
9 #define dds_visitor_H
10 
11 #include "be_extern.h"
12 #include "dds_generator.h"
13 
14 #include <ast_visitor.h>
15 
16 #include <tao/Basic_Types.h>
17 #include <tao/Version.h>
18 
19 #if !defined (ACE_LACKS_PRAGMA_ONCE)
20 # pragma once
21 #endif /* ACE_LACKS_PRAGMA_ONCE */
22 
23 class AST_Finder;
24 
25 class dds_visitor : public ast_visitor {
26 public:
27  dds_visitor(AST_Decl* scope, bool java_ts_only);
28 
29  virtual ~dds_visitor();
30 
31  virtual int visit_decl(AST_Decl* d);
32 
33  virtual int visit_scope(UTL_Scope* node);
34 
35  virtual int visit_type(AST_Type* node);
36 
37  virtual int visit_predefined_type(AST_PredefinedType* node);
38 
39  virtual int visit_module(AST_Module* node);
40 
41  virtual int visit_interface(AST_Interface* node);
42 
43  virtual int visit_interface_fwd(AST_InterfaceFwd* node);
44 
45  virtual int visit_valuetype(AST_ValueType* node);
46 
47  virtual int visit_valuetype_fwd(AST_ValueTypeFwd* node);
48 
49  virtual int visit_component(AST_Component* node);
50 
51  virtual int visit_component_fwd(AST_ComponentFwd* node);
52 
53  virtual int visit_eventtype(AST_EventType* node);
54 
55  virtual int visit_eventtype_fwd(AST_EventTypeFwd* node);
56 
57  virtual int visit_home(AST_Home* node);
58 
59  virtual int visit_factory(AST_Factory* node);
60 
61  virtual int visit_structure(AST_Structure* node);
62 
63  virtual int visit_structure_fwd(AST_StructureFwd* node);
64 
65  virtual int visit_exception(AST_Exception* node);
66 
67  virtual int visit_expression(AST_Expression* node);
68 
69  virtual int visit_enum(AST_Enum* node);
70 
71  virtual int visit_operation(AST_Operation* node);
72 
73  virtual int visit_field(AST_Field* node);
74 
75  virtual int visit_argument(AST_Argument* node);
76 
77  virtual int visit_attribute(AST_Attribute* node);
78 
79  virtual int visit_union(AST_Union* node);
80 
81  virtual int visit_union_fwd(AST_UnionFwd* node);
82 
83  virtual int visit_union_branch(AST_UnionBranch* node);
84 
85  virtual int visit_union_label(AST_UnionLabel* node);
86 
87  virtual int visit_constant(AST_Constant* node);
88 
89  virtual int visit_enum_val(AST_EnumVal* node);
90 
91  virtual int visit_array(AST_Array* node);
92 
93  virtual int visit_sequence(AST_Sequence* node);
94 
95  virtual int visit_string(AST_String* node);
96 
97  virtual int visit_typedef(AST_Typedef* node);
98 
99  virtual int visit_root(AST_Root* node);
100 
101  virtual int visit_native(AST_Native* node);
102 
103  virtual int visit_valuebox(AST_ValueBox* node);
104 
105  virtual int visit_template_module (AST_Template_Module* node);
106 
107  virtual int visit_template_module_inst (AST_Template_Module_Inst* node);
108 
109  virtual int visit_template_module_ref (AST_Template_Module_Ref* node);
110 
111  virtual int visit_param_holder(AST_Param_Holder* node);
112 
113  virtual int visit_porttype(AST_PortType* node);
114 
115  virtual int visit_provides(AST_Provides* node);
116 
117  virtual int visit_uses(AST_Uses* node);
118 
119  virtual int visit_publishes(AST_Publishes* node);
120 
121  virtual int visit_emits(AST_Emits* node);
122 
123  virtual int visit_consumes(AST_Consumes* node);
124 
125  virtual int visit_extended_port(AST_Extended_Port* node);
126 
127  virtual int visit_mirror_port(AST_Mirror_Port* node);
128 
129  virtual int visit_connector(AST_Connector* node);
130 
131  virtual int visit_finder(AST_Finder* node);
132 
133 protected:
134  AST_Decl* scope_;
135  bool error_;
138 };
139 
140 template <typename T>
141 void scope2vector(std::vector<T*>& v, UTL_Scope* s, AST_Decl::NodeType nt)
142 {
143  UTL_ScopeActiveIterator it(s, UTL_Scope::IK_decls);
144  for (; !it.is_done(); it.next()) {
145  AST_Decl* item = it.item();
146  if (item->node_type() == nt) {
147  v.push_back(dynamic_cast<T*>(item));
148  }
149  }
150 }
151 
152 #endif /* dds_visitor_H */
virtual int visit_scope(UTL_Scope *node)
void scope2vector(std::vector< T *> &v, UTL_Scope *s, AST_Decl::NodeType nt)
Definition: dds_visitor.h:141
virtual int visit_eventtype(AST_EventType *node)
virtual int visit_string(AST_String *node)
virtual int visit_component(AST_Component *node)
virtual int visit_connector(AST_Connector *node)
virtual int visit_interface_fwd(AST_InterfaceFwd *node)
virtual int visit_typedef(AST_Typedef *node)
virtual int visit_extended_port(AST_Extended_Port *node)
virtual int visit_param_holder(AST_Param_Holder *node)
virtual int visit_valuebox(AST_ValueBox *node)
virtual int visit_operation(AST_Operation *node)
virtual int visit_array(AST_Array *node)
virtual int visit_component_fwd(AST_ComponentFwd *node)
virtual int visit_attribute(AST_Attribute *node)
virtual int visit_enum(AST_Enum *node)
virtual int visit_sequence(AST_Sequence *node)
virtual int visit_predefined_type(AST_PredefinedType *node)
composite_generator gen_target_
Definition: dds_visitor.h:137
virtual int visit_factory(AST_Factory *node)
virtual int visit_field(AST_Field *node)
virtual int visit_valuetype(AST_ValueType *node)
virtual int visit_consumes(AST_Consumes *node)
virtual int visit_native(AST_Native *node)
dds_visitor(AST_Decl *scope, bool java_ts_only)
Definition: dds_visitor.cpp:68
virtual int visit_type(AST_Type *node)
virtual int visit_template_module(AST_Template_Module *node)
virtual int visit_structure(AST_Structure *node)
virtual int visit_valuetype_fwd(AST_ValueTypeFwd *node)
virtual int visit_constant(AST_Constant *node)
virtual int visit_exception(AST_Exception *node)
virtual int visit_union(AST_Union *node)
virtual int visit_uses(AST_Uses *node)
virtual int visit_porttype(AST_PortType *node)
virtual int visit_enum_val(AST_EnumVal *node)
bool java_ts_only_
Definition: dds_visitor.h:136
virtual int visit_union_branch(AST_UnionBranch *node)
virtual int visit_interface(AST_Interface *node)
virtual ~dds_visitor()
virtual int visit_mirror_port(AST_Mirror_Port *node)
virtual int visit_expression(AST_Expression *node)
virtual int visit_union_label(AST_UnionLabel *node)
virtual int visit_argument(AST_Argument *node)
virtual int visit_eventtype_fwd(AST_EventTypeFwd *node)
virtual int visit_template_module_ref(AST_Template_Module_Ref *node)
virtual int visit_template_module_inst(AST_Template_Module_Inst *node)
virtual int visit_structure_fwd(AST_StructureFwd *node)
virtual int visit_publishes(AST_Publishes *node)
virtual int visit_emits(AST_Emits *node)
virtual int visit_root(AST_Root *node)
virtual int visit_finder(AST_Finder *node)
virtual int visit_module(AST_Module *node)
virtual int visit_union_fwd(AST_UnionFwd *node)
virtual int visit_provides(AST_Provides *node)
virtual int visit_decl(AST_Decl *d)
AST_Decl * scope_
Definition: dds_visitor.h:134
virtual int visit_home(AST_Home *node)