00001
00002
00003
00004 #include "PSDL_Module_Scope.h"
00005 #include "PSDL_Interface_Scope.h"
00006
00007 ACE_RCSID (PSS, PSDL_Module_Scope, "PSDL_Module_Scope.cpp,v 1.1 2002/07/25 15:25:51 pgontla Exp")
00008
00009 TAO_PSDL_Module_Scope::TAO_PSDL_Module_Scope (TAO_PSDL_Scope *parent_scope)
00010 : module_scope_ (),
00011 parent_scope_ (parent_scope),
00012 identifier_type_ ("module")
00013 {
00014 }
00015
00016 TAO_PSDL_Module_Scope::~TAO_PSDL_Module_Scope (void)
00017 {
00018 }
00019
00020 int
00021 TAO_PSDL_Module_Scope::add_module (ACE_CString identifier)
00022 {
00023 return TAO_PSDL_Scope::instance ()->add_module_to_scope (identifier,
00024 this);
00025 }
00026
00027 int
00028 TAO_PSDL_Module_Scope::add_interface (ACE_CString interface_name)
00029 {
00030 return TAO_PSDL_Scope::instance ()->add_interface_to_scope (interface_name,
00031 this);
00032 }
00033
00034 int
00035 TAO_PSDL_Module_Scope::add_struct (ACE_CString struct_name)
00036 {
00037 return TAO_PSDL_Scope::instance ()->add_struct_to_scope (struct_name,
00038 this);
00039 }
00040
00041 int
00042 TAO_PSDL_Module_Scope::add_typedef (ACE_CString identifier,
00043 ACE_CString identifier_type)
00044 {
00045 return TAO_PSDL_Scope::instance ()->add_typedef_to_scope (identifier,
00046 identifier_type,
00047 this);
00048 }
00049
00050 int
00051 TAO_PSDL_Module_Scope::add_const_decl (ACE_CString identifier,
00052 ACE_CString identifier_type)
00053 {
00054 return TAO_PSDL_Scope::instance ()->add_const_decl_to_scope (identifier,
00055 identifier_type,
00056 this);
00057 }
00058
00059 int
00060 TAO_PSDL_Module_Scope::add_except_decl (ACE_CString identifier,
00061 ACE_CString identifier_type)
00062 {
00063 return TAO_PSDL_Scope::instance ()->add_except_decl_to_scope (identifier,
00064 identifier_type,
00065 this);
00066 }
00067
00068 int
00069 TAO_PSDL_Module_Scope::add_exception (ACE_CString identifier)
00070 {
00071 return TAO_PSDL_Scope::instance ()->add_exception_to_scope (identifier,
00072 this);
00073 }
00074
00075 int
00076 TAO_PSDL_Module_Scope::add_enum_decl (ACE_CString identifier,
00077 ACE_CString identifier_type)
00078 {
00079 return TAO_PSDL_Scope::instance ()->add_enum_decl_to_scope (identifier,
00080 identifier_type,
00081 this);
00082 }
00083
00084 int
00085 TAO_PSDL_Module_Scope::add_op_dcl (ACE_CString identifier)
00086 {
00087 return TAO_PSDL_Scope::instance ()->add_op_dcl_to_scope (identifier,
00088 this);
00089 }
00090
00091 void
00092 TAO_PSDL_Module_Scope::dump (CORBA::ULong depth)
00093 {
00094 depth = depth + 5;
00095
00096 for (Scope_Map_Iterator i = this->module_scope_.begin ();
00097 i != this->module_scope_.end ();
00098 ++i)
00099 {
00100 this->print_depth (depth);
00101 ACE_DEBUG ((LM_DEBUG,
00102 "%s (module/interface/storagebase/struct)\n",
00103 (*i).ext_id_.c_str ()));
00104 (*i).int_id_->dump (depth);
00105 }
00106 }
00107
00108 int
00109 TAO_PSDL_Module_Scope::find (const ACE_CString &identifier_name,
00110 ACE_CString &identifier_type)
00111 {
00112 for (Scope_Map_Iterator i = this->module_scope_.begin ();
00113 i != this->module_scope_.end ();
00114 ++i)
00115 {
00116 if (ACE_OS::strcmp (identifier_name.c_str (), (*i).ext_id_.c_str ()) == 0)
00117 {
00118 identifier_type = (*i).int_id_->identifier_type ();
00119 return 0;
00120 }
00121 else
00122 {
00123 if ((*i).int_id_->find (identifier_name,
00124 identifier_type) == 0)
00125 {
00126 return 0;
00127 }
00128 }
00129 }
00130
00131 return -1;
00132 }
00133
00134 int
00135 TAO_PSDL_Module_Scope::find (const ACE_CString &identifier_name)
00136 {
00137 for (Scope_Map_Iterator i = this->module_scope_.begin ();
00138 i != this->module_scope_.end ();
00139 ++i)
00140 {
00141 if (ACE_OS::strcmp (identifier_name.c_str (), (*i).ext_id_.c_str ()) == 0)
00142 {
00143 return 0;
00144 }
00145 else
00146 {
00147 if ((*i).int_id_->find (identifier_name) == 0)
00148 {
00149 return 0;
00150 }
00151 }
00152 }
00153
00154 return -1;
00155 }
00156
00157 int
00158 TAO_PSDL_Module_Scope::get_module_name (const ACE_CString &identifier_name,
00159 ACE_CString &module_name)
00160 {
00161 for (Scope_Map_Iterator i = this->module_scope_.begin ();
00162 i != this->module_scope_.end ();
00163 ++i)
00164 {
00165 if (ACE_OS::strcmp (identifier_name.c_str (), (*i).ext_id_.c_str ()) == 0)
00166 {
00167 module_name = (*i).int_id_->module_name ();
00168 return 0;
00169 }
00170 else
00171 {
00172 if ((*i).int_id_->get_module_name (identifier_name,
00173 module_name) == 0)
00174 {
00175 return 0;
00176 }
00177 }
00178 }
00179
00180 return -1;
00181 }
00182
00183 int
00184 TAO_PSDL_Module_Scope::get_interface_name (const ACE_CString &identifier_name,
00185 ACE_CString &interface_name)
00186 {
00187 for (Scope_Map_Iterator i = this->module_scope_.begin ();
00188 i != this->module_scope_.end ();
00189 ++i)
00190 {
00191 if (ACE_OS::strcmp (identifier_name.c_str (), (*i).ext_id_.c_str ()) == 0)
00192 {
00193 interface_name = (*i).int_id_->interface_name ();
00194 return 0;
00195 }
00196 else
00197 {
00198 if ((*i).int_id_->get_interface_name (identifier_name,
00199 interface_name) == 0)
00200 {
00201 return 0;
00202 }
00203 }
00204 }
00205
00206 return -1;
00207 }
00208
00209 TAO_PSDL_Scope *
00210 TAO_PSDL_Module_Scope::parent_scope (void)
00211 {
00212 return this->parent_scope_;
00213 }
00214
00215 Scope_Map *
00216 TAO_PSDL_Module_Scope::scope_map (void)
00217 {
00218 return &this->module_scope_;
00219 }
00220
00221 ACE_CString
00222 TAO_PSDL_Module_Scope::identifier_type (void)
00223 {
00224 return this->identifier_type_;
00225 }
00226
00227 ACE_CString
00228 TAO_PSDL_Module_Scope::module_name (void)
00229 {
00230 return this->module_name_;
00231 }
00232
00233 ACE_CString
00234 TAO_PSDL_Module_Scope::interface_name (void)
00235 {
00236 return this->interface_name_;
00237 }