00001 // ifr_adding_visitor_exception.h,v 1.10 2003/03/01 18:28:37 ossama Exp 00002 00003 /* -*- c++ -*- */ 00004 // ============================================================================ 00005 // 00006 // = LIBRARY 00007 // TAO_IFR_BE_DLL 00008 // 00009 // = FILENAME 00010 // ifr_adding_visitor_exception.h 00011 // 00012 // = DESCRIPTION 00013 // Header file for class ifr_adding_visitor_exception. 00014 // 00015 // = AUTHOR 00016 // Jeff Parsons <parsons@cs.wustl.edu> 00017 // 00018 // ============================================================================ 00019 00020 #ifndef TAO_IFR_ADDING_VISITOR_EXCEPTION_H 00021 #define TAO_IFR_ADDING_VISITOR_EXCEPTION_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_exception : public ifr_adding_visitor 00030 { 00031 // 00032 // = TITLE 00033 // ifr_adding_visitor_exception. 00034 // 00035 // = DESCRIPTION 00036 // This visitor overrides a few of the visit methods 00037 // for the case when an exception node is seen in the AST. 00038 // 00039 public: 00040 ifr_adding_visitor_exception (AST_Decl *scope, 00041 CORBA::Boolean in_reopened_); 00042 // Constructor. 00043 00044 virtual ~ifr_adding_visitor_exception (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_exception (AST_Exception *node); 00054 // Visit a struct. 00055 00056 virtual int visit_enum (AST_Enum *node); 00057 // Visit an enum. 00058 00059 virtual int visit_union (AST_Union *node); 00060 // Visit union. 00061 00062 virtual CORBA::IDLType_ptr ir_current (void) const; 00063 // Lets the visitor one level above acess this value. 00064 00065 private: 00066 CORBA::Boolean is_nested_; 00067 // Is this visitor visiting a struct that was defined inside 00068 // a union, an exception, or another struct? 00069 00070 CORBA::StructMemberSeq members_; 00071 // Holder for the member list passed to create_struct() or 00072 // create_exception(). 00073 00074 ACE_Unbounded_Queue<CORBA::Contained_ptr> move_queue_; 00075 // IR objects that must be moved into the scope (struct or 00076 // exception) where they were declared in the IDL file. 00077 }; 00078 00079 #endif /* TAO_IFR_ADDING_VISITOR_EXCEPTION_H */