00001 // -*- C++ -*- 00002 00003 //============================================================================= 00004 /** 00005 * @file Object_T.h 00006 * 00007 * Object_T.h,v 1.5 2005/11/02 07:13:04 ossama Exp 00008 * 00009 * Templatized utilities common to all IDL interfaces. 00010 * 00011 * @author Jeff Parsons <j.parsons@vanderbilt.edu> 00012 */ 00013 //============================================================================= 00014 00015 #ifndef TAO_CORBA_OBJECT_T_H 00016 #define TAO_CORBA_OBJECT_T_H 00017 00018 #include /**/ "ace/pre.h" 00019 00020 #include "ace/config-all.h" 00021 00022 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00023 # pragma once 00024 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00025 00026 #include "tao/Versioned_Namespace.h" 00027 #include "ace/CORBA_macros.h" 00028 00029 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00030 00031 namespace CORBA 00032 { 00033 class Object; 00034 typedef Object *Object_ptr; 00035 } 00036 00037 namespace TAO 00038 { 00039 class Collocation_Proxy_Broker; 00040 00041 typedef 00042 Collocation_Proxy_Broker * (* Proxy_Broker_Factory)(CORBA::Object_ptr); 00043 00044 template<typename T> 00045 class Narrow_Utils 00046 { 00047 public: 00048 typedef T *T_ptr; 00049 00050 static T_ptr narrow (CORBA::Object_ptr, 00051 const char *repo_id, 00052 Proxy_Broker_Factory 00053 ACE_ENV_ARG_DECL); 00054 00055 // Version used the operators. 00056 static T_ptr unchecked_narrow (CORBA::Object_ptr, 00057 Proxy_Broker_Factory); 00058 00059 static T_ptr unchecked_narrow (CORBA::Object_ptr, 00060 const char *repo_id, 00061 Proxy_Broker_Factory 00062 ACE_ENV_ARG_DECL); 00063 00064 private: 00065 // Code for lazily evaluated IORs. 00066 static T_ptr lazy_evaluation (CORBA::Object_ptr); 00067 }; 00068 } 00069 00070 TAO_END_VERSIONED_NAMESPACE_DECL 00071 00072 #if defined (ACE_TEMPLATES_REQUIRE_SOURCE) 00073 #include "tao/Object_T.cpp" 00074 #endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ 00075 00076 #if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) 00077 #pragma implementation ("Object_T.cpp") 00078 #endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ 00079 00080 #include /**/ "ace/post.h" 00081 00082 #endif /* TAO_CORBA_OBJECT_T_H */