Merge pull request #2216 from jwillemsen/jwi-cxxversionchecks
[ACE_TAO.git] / TAO / tao / IFR_Client_Adapter.h
blobb1e41c95cb948dbf8a74883c0dbac1c589c7563c
1 // -*- C++ -*-
3 //=============================================================================
4 /**
5 * @file IFR_Client_Adapter.h
7 * @author Jeff Parsons <parsons@cs.wustl.edu>
8 */
9 //=============================================================================
12 #ifndef TAO_IFR_CLIENT_ADAPTER_H
13 #define TAO_IFR_CLIENT_ADAPTER_H
15 #include /**/ "ace/pre.h"
16 #include "ace/Service_Object.h"
18 #if !defined (ACE_LACKS_PRAGMA_ONCE)
19 # pragma once
20 #endif /* ACE_LACKS_PRAGMA_ONCE */
22 #include /**/ "tao/TAO_Export.h"
23 #include "tao/Basic_Types.h"
24 #include "tao/orbconf.h"
26 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
28 class TAO_OutputCDR;
30 namespace CORBA
32 class InterfaceDef;
33 typedef InterfaceDef *InterfaceDef_ptr;
35 class ORB;
36 typedef ORB *ORB_ptr;
38 class Object;
39 typedef Object *Object_ptr;
41 class OperationDef;
42 typedef OperationDef *OperationDef_ptr;
44 class NVList;
45 typedef NVList *NVList_ptr;
48 /**
49 * @class TAO_IFR_Client_Adapter
51 * @brief TAO_IFR_Client_Adapter.
53 * Class that adapts various functions in the CORBA namespace
54 * which use the Interface Repository. This is a base class for
55 * the actual implementation in the TAO_IFR_Client library.
57 class TAO_Export TAO_IFR_Client_Adapter : public ACE_Service_Object
59 public:
60 /// Destructor.
61 /**
62 * @note Even though this class only defines an interface, a
63 * destructor is necessary to avoid dynamic_cast<> failures
64 * when using g++ 4.x's -fvisibility-inlines-hidden command
65 * line option. Apparently the compiler generated
66 * destructor is inlined.
68 virtual ~TAO_IFR_Client_Adapter ();
70 virtual CORBA::Boolean interfacedef_cdr_insert (
71 TAO_OutputCDR &cdr,
72 CORBA::InterfaceDef_ptr object_type) = 0;
74 virtual void interfacedef_any_insert (
75 CORBA::Any *any,
76 CORBA::InterfaceDef_ptr object_type) = 0;
78 virtual void dispose (CORBA::InterfaceDef_ptr orphan) = 0;
80 virtual CORBA::InterfaceDef_ptr get_interface (
81 CORBA::ORB_ptr orb,
82 const char *repo_id) = 0;
84 virtual CORBA::InterfaceDef_ptr get_interface_remote (
85 CORBA::Object_ptr target) = 0;
87 #if (TAO_HAS_MINIMUM_CORBA == 0) && !defined (CORBA_E_COMPACT) && !defined (CORBA_E_MICRO)
88 virtual void create_operation_list (
89 CORBA::ORB_ptr orb,
90 CORBA::OperationDef_ptr,
91 CORBA::NVList_ptr&) = 0;
92 #endif /*TAO_HAS_MINIMUM_CORBA*/
95 TAO_END_VERSIONED_NAMESPACE_DECL
97 #include /**/ "ace/post.h"
98 #endif /* TAO_IFR_CLIENT_ADAPTER_H */