#include "global_extern.h"
#include "TAO_IFR_BE_Export.h"
#include "be_extern.h"
#include "fe_extern.h"
#include "ast_root.h"
#include "ifr_visitor_macro.h"
#include "ifr_removing_visitor.h"
#include "ifr_adding_visitor.h"
Include dependency graph for be_produce.cpp:
Go to the source code of this file.
Functions | |
TAO_IFR_BE_Export void | BE_cleanup (void) |
TAO_IFR_BE_Export void | BE_abort (void) |
void | BE_create_holding_scope (void) |
int | BE_ifr_repo_init (void) |
TAO_IFR_BE_Export void | BE_produce (void) |
|
Definition at line 92 of file be_produce.cpp. References ACE_ERROR, ACE_TEXT(), and LM_ERROR. Referenced by BE_produce().
00093 { 00094 ACE_ERROR ((LM_ERROR, 00095 ACE_TEXT ("Fatal Error - Aborting\n"))); 00096 00097 // BE_cleanup will be called after the exception is caught. 00098 throw FE_Bailout (); 00099 } |
|
Definition at line 85 of file be_produce.cpp. Referenced by BE_produce().
00086 { 00087 idl_global->destroy (); 00088 } |
|
Definition at line 102 of file be_produce.cpp. References be_global, BE_GlobalData::holding_scope(), BE_GlobalData::holding_scope_name(), CORBA::is_nil(), and BE_GlobalData::repository(). Referenced by BE_produce().
00103 { 00104 CORBA::ModuleDef_ptr scope = CORBA::ModuleDef::_nil (); 00105 00106 // If we are multi-threaded, it may already be created. 00107 CORBA::Contained_var result = 00108 be_global->repository ()->lookup_id (be_global->holding_scope_name ()); 00109 00110 // Will live until the repository goes away for good. 00111 if (CORBA::is_nil (result.in ())) 00112 { 00113 scope = 00114 be_global->repository ()->create_module ( 00115 be_global->holding_scope_name (), 00116 be_global->holding_scope_name (), 00117 "1.0" 00118 ); 00119 } 00120 else 00121 { 00122 scope = CORBA::ModuleDef::_narrow (result.in ()); 00123 } 00124 00125 be_global->holding_scope (scope); 00126 } |
|
Definition at line 129 of file be_produce.cpp. References ACE_ERROR_RETURN, ACE_TEXT(), be_global, CORBA::is_nil(), LM_ERROR, BE_GlobalData::orb(), and BE_GlobalData::repository(). Referenced by BE_produce().
00130 { 00131 CORBA::Object_var object = 00132 be_global->orb ()->resolve_initial_references ("InterfaceRepository"); 00133 00134 if (CORBA::is_nil (object.in ())) 00135 { 00136 ACE_ERROR_RETURN (( 00137 LM_ERROR, 00138 ACE_TEXT ("Null objref from resolve_initial_references\n") 00139 ), 00140 -1 00141 ); 00142 } 00143 00144 CORBA::Repository_var repo = 00145 CORBA::Repository::_narrow (object.in ()); 00146 00147 if (CORBA::is_nil (repo.in ())) 00148 { 00149 ACE_ERROR_RETURN (( 00150 LM_ERROR, 00151 ACE_TEXT ("CORBA::Repository::_narrow failed\n") 00152 ), 00153 -1 00154 ); 00155 } 00156 00157 be_global->repository (repo._retn ()); 00158 00159 return 0; 00160 } |
|
Definition at line 164 of file be_produce.cpp. References ACE_ERROR, ACE_TEXT(), BE_abort(), BE_cleanup(), BE_create_holding_scope(), be_global, BE_ifr_repo_init(), LM_ERROR, BE_GlobalData::removing(), TAO_IFR_VISITOR_WRITE_GUARD, and ifr_removing_visitor::visit_scope().
00165 { 00166 try 00167 { 00168 int status = BE_ifr_repo_init (); 00169 00170 if (status != 0) 00171 { 00172 return; 00173 } 00174 00175 BE_create_holding_scope (); 00176 00177 // Get the root node. 00178 AST_Decl *d = idl_global->root (); 00179 AST_Root *root = AST_Root::narrow_from_decl (d); 00180 00181 if (root == 0) 00182 { 00183 ACE_ERROR ((LM_ERROR, 00184 ACE_TEXT ("(%N:%l) BE_produce - ") 00185 ACE_TEXT ("No Root\n"))); 00186 00187 BE_abort (); 00188 } 00189 00190 if (be_global->removing ()) 00191 { 00192 ifr_removing_visitor visitor; 00193 00194 TAO_IFR_VISITOR_WRITE_GUARD; 00195 00196 // If the visitor is dispatched this way, we need to override 00197 // only visit_scope() for the removing visitor. 00198 if (visitor.visit_scope (root) == -1) 00199 { 00200 ACE_ERROR (( 00201 LM_ERROR, 00202 ACE_TEXT ("(%N:%l) BE_produce -") 00203 ACE_TEXT (" failed to accept removing visitor\n") 00204 )); 00205 00206 BE_abort (); 00207 } 00208 } 00209 else 00210 { 00211 ifr_adding_visitor visitor (d); 00212 00213 TAO_IFR_VISITOR_WRITE_GUARD; 00214 00215 if (root->ast_accept (&visitor) == -1) 00216 { 00217 ACE_ERROR (( 00218 LM_ERROR, 00219 ACE_TEXT ("(%N:%l) BE_produce -") 00220 ACE_TEXT (" failed to accept adding visitor\n") 00221 )); 00222 00223 BE_abort (); 00224 } 00225 } 00226 } 00227 catch (const CORBA::Exception& ex) 00228 { 00229 ex._tao_print_exception (ACE_TEXT ("BE_produce")); 00230 00231 } 00232 00233 // Clean up. 00234 BE_cleanup (); 00235 } |