00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 #ifndef TAO_TARGET_SPECIFICATION_H
00016 #define TAO_TARGET_SPECIFICATION_H
00017 
00018 #include  "ace/pre.h"
00019 
00020 #include "tao/TAO_Export.h"
00021 
00022 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00023 # pragma once
00024 #endif 
00025 
00026 #include "tao/Basic_Types.h"
00027 
00028 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00029 # pragma once
00030 #endif 
00031 
00032 #if defined (HPUX) && defined (IOR)
00033    
00034 
00035 # undef IOR
00036 #endif 
00037 
00038 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00039 
00040 namespace IOP
00041 {
00042   struct IOR;
00043   struct TaggedProfile;
00044 }
00045 
00046 namespace TAO
00047 {
00048   class ObjectKey;
00049 }
00050 
00051 
00052 
00053 
00054 
00055 
00056 
00057 class TAO_Export TAO_Target_Specification
00058 {
00059 public:
00060 
00061 
00062   TAO_Target_Specification (void);
00063   enum TAO_Target_Address
00064   {
00065     
00066     Key_Addr = 0,
00067     Profile_Addr,
00068     Reference_Addr
00069   };
00070 
00071   
00072   
00073   
00074 
00075   void target_specifier (const TAO::ObjectKey &key);
00076 
00077 
00078 
00079   void target_specifier (IOP::TaggedProfile &profile);
00080 
00081 
00082 
00083 
00084 
00085 
00086   void target_specifier (IOP::IOR &ior,
00087                          CORBA::ULong prof_index);
00088 
00089 
00090 
00091 
00092 
00093 
00094 
00095   const TAO::ObjectKey* object_key (void);
00096 
00097 
00098 
00099 
00100 
00101 
00102   const IOP::TaggedProfile *profile (void);
00103 
00104 
00105 
00106 
00107 
00108 
00109 
00110   CORBA::ULong iop_ior (IOP::IOR *&ior);
00111 
00112 
00113   TAO_Target_Address specifier (void);
00114 
00115 private:
00116 
00117   union
00118   {
00119     TAO::ObjectKey *object_key_;
00120     IOP::TaggedProfile *profile_;
00121     IOP::IOR *ior_;
00122   } u_;
00123 
00124 
00125   TAO_Target_Address specifier_;
00126 
00127 
00128   CORBA::ULong profile_index_;
00129 };
00130 
00131 TAO_END_VERSIONED_NAMESPACE_DECL
00132 
00133 #if defined (__ACE_INLINE__)
00134 #include "tao/target_specification.i"
00135 #endif 
00136 
00137 #include  "ace/post.h"
00138 
00139 #endif