Object_T.h

Go to the documentation of this file.
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 */

Generated on Thu Nov 9 11:54:16 2006 for TAO by doxygen 1.3.6