00001 // ifr_adding_visitor_structure.h,v 1.8 2003/03/01 12:16:07 ossama Exp 00002 00003 /* -*- C++ -*- */ 00004 // ============================================================================ 00005 // 00006 // = LIBRARY 00007 // TAO_IFR_BE_DLL 00008 // 00009 // = FILENAME 00010 // ifr_adding_visitor_structure.h 00011 // 00012 // = DESCRIPTION 00013 // Header file for class ifr_adding_visitor_structure. 00014 // 00015 // = AUTHOR 00016 // Jeff Parsons <parsons@cs.wustl.edu> 00017 // 00018 // ============================================================================ 00019 00020 #ifndef TAO_IFR_ADDING_VISITOR_STRUCTURE_H 00021 #define TAO_IFR_ADDING_VISITOR_STRUCTURE_H 00022 00023 #include "ifr_adding_visitor.h" 00024 00025 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00026 # pragma once 00027 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00028 00029 class ifr_adding_visitor_structure : public ifr_adding_visitor 00030 { 00031 // 00032 // = TITLE 00033 // ifr_adding_visitor_structure. 00034 // 00035 // = DESCRIPTION 00036 // This visitor overrides a few of the visit methods 00037 // for the case when a struct or exception node is seen in the AST. 00038 // 00039 public: 00040 ifr_adding_visitor_structure (AST_Decl *scope, 00041 CORBA::Boolean is_nested); 00042 // Constructor. 00043 00044 virtual ~ifr_adding_visitor_structure (void); 00045 // Destructor. 00046 00047 virtual int visit_scope (UTL_Scope *node); 00048 // Visit a struct. 00049 00050 virtual int visit_structure (AST_Structure *node); 00051 // Visit a struct. 00052 00053 virtual int visit_enum (AST_Enum *node); 00054 // Visit an enum. 00055 00056 virtual int visit_union (AST_Union *node); 00057 // Visit union. 00058 00059 virtual CORBA::IDLType_ptr ir_current (void) const; 00060 // Lets the visitor one level above acess this value. 00061 00062 private: 00063 CORBA::Boolean is_nested_; 00064 // Is this visitor visiting a struct that was defined inside 00065 // a union, an exception, or another struct? 00066 00067 CORBA::StructMemberSeq members_; 00068 // Holder for the member list passed to create_struct() or 00069 // create_exception(). 00070 00071 ACE_Unbounded_Queue<CORBA::Contained_ptr> move_queue_; 00072 // IR objects that must be moved into the scope (struct or 00073 // exception) where they were declared in the IDL file. 00074 }; 00075 00076 #endif /* TAO_IFR_ADDING_VISITOR_STRUCTURE_H */