IFR_Client_Adapter.h

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 
00003 //=============================================================================
00004 /**
00005  *  @file    IFR_Client_Adapter.h
00006  *
00007  *  $Id: IFR_Client_Adapter.h 79239 2007-08-07 11:49:17Z johnnyw $
00008  *
00009  *  @author  Jeff Parsons <parsons@cs.wustl.edu>
00010  */
00011 //=============================================================================
00012 
00013 
00014 #ifndef TAO_IFR_CLIENT_ADAPTER_H
00015 #define TAO_IFR_CLIENT_ADAPTER_H
00016 
00017 #include /**/ "ace/pre.h"
00018 #include "ace/Service_Object.h"
00019 
00020 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00021 # pragma once
00022 #endif /* ACE_LACKS_PRAGMA_ONCE */
00023 
00024 #include /**/ "tao/TAO_Export.h"
00025 #include "tao/Basic_Types.h"
00026 #include "tao/orbconf.h"
00027 
00028 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00029 
00030 class TAO_OutputCDR;
00031 
00032 namespace CORBA
00033 {
00034   class InterfaceDef;
00035   typedef InterfaceDef *InterfaceDef_ptr;
00036 
00037   class ORB;
00038   typedef ORB *ORB_ptr;
00039 
00040   class Object;
00041   typedef Object *Object_ptr;
00042 
00043   class OperationDef;
00044   typedef OperationDef *OperationDef_ptr;
00045 
00046   class NVList;
00047   typedef NVList *NVList_ptr;
00048 }
00049 
00050 /**
00051  * @class TAO_IFR_Client_Adapter
00052  *
00053  * @brief TAO_IFR_Client_Adapter.
00054  *
00055  * Class that adapts various functions in the CORBA namespace
00056  * which use the Interface Repository. This is a base class for
00057  * the actual implementation in the TAO_IFR_Client library.
00058  */
00059 class TAO_Export TAO_IFR_Client_Adapter : public ACE_Service_Object
00060 {
00061 public:
00062     /// Destructor.
00063     /**
00064      * @note Even though this class only defines an interface, a
00065      *       destructor is necessary to avoid dynamic_cast<> failures
00066      *       when using g++ 4.x's -fvisibility-inlines-hidden command
00067      *       line option.  Apparently the compiler generated
00068      *       destructor is inlined.
00069      */
00070   virtual ~TAO_IFR_Client_Adapter ();
00071 
00072   virtual CORBA::Boolean interfacedef_cdr_insert (
00073       TAO_OutputCDR &cdr,
00074       CORBA::InterfaceDef_ptr object_type) = 0;
00075 
00076   virtual void interfacedef_any_insert (
00077       CORBA::Any *any,
00078       CORBA::InterfaceDef_ptr object_type) = 0;
00079 
00080   virtual void dispose (CORBA::InterfaceDef_ptr orphan) = 0;
00081 
00082   virtual CORBA::InterfaceDef_ptr get_interface (
00083       CORBA::ORB_ptr orb,
00084       const char *repo_id) = 0;
00085 
00086   virtual CORBA::InterfaceDef_ptr get_interface_remote (
00087       CORBA::Object_ptr target) = 0;
00088 
00089 #if (TAO_HAS_MINIMUM_CORBA == 0) && !defined (CORBA_E_COMPACT) && !defined (CORBA_E_MICRO)
00090   virtual void create_operation_list (
00091                CORBA::ORB_ptr orb,
00092                CORBA::OperationDef_ptr,
00093                CORBA::NVList_ptr&) = 0;
00094 #endif /*TAO_HAS_MINIMUM_CORBA*/
00095 };
00096 
00097 TAO_END_VERSIONED_NAMESPACE_DECL
00098 
00099 #include /**/ "ace/post.h"
00100 #endif /* TAO_IFR_CLIENT_ADAPTER_H */

Generated on Tue Feb 2 17:37:52 2010 for TAO by  doxygen 1.4.7