![]() |
MAK RTIspy API Documentation for HLA 1.3
|
00001 /********************************************************************* 00002 ** Copyright (c) 2010 MaK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: handleCreator1516e.h,v $ $Revision: 1.0 $ $State: Exp $ 00007 *********************************************************************/ 00008 00009 #ifndef handleCreatore_H_ 00010 #define handleCreatore_H_ 00011 00014 00015 #ifdef DtIFSPEC1516E 00016 00017 #include "handleImpl.h" 00018 #include "internalTypes.h" 00019 #include <vlutil/vlFedTarget.h> 00020 #include <RTI/Handle.h> 00021 #include <RTI/Typedefs.h> 00022 00023 namespace rti1516e 00024 { 00025 00030 #define DEFINE_HANDLE_CLASS_FRIEND(HandleKind) \ 00031 \ 00032 class HandleKind##Friend \ 00033 { \ 00034 public: \ 00035 HandleKind##Friend(); \ 00036 static rti1516e::HandleKind HandleKind(Dt##HandleKind handleValue); \ 00037 static rti1516e::HandleKind HandleKind( \ 00038 VariableLengthData const & encodedValue); \ 00039 static HandleKind##Implementation const* \ 00040 getImplementation(rti1516e::HandleKind const& handle); \ 00041 static HandleKind##Implementation* getImplementation( \ 00042 rti1516e::HandleKind& handle); \ 00043 }; \ 00044 inline HandleKind##Friend::HandleKind##Friend() \ 00045 { \ 00046 } \ 00047 inline rti1516e::HandleKind HandleKind##Friend::HandleKind( \ 00048 Dt##HandleKind handleValue) \ 00049 { \ 00050 return rti1516e::HandleKind( \ 00051 (HandleKind##Implementation*)handleValue); \ 00052 } \ 00053 inline rti1516e::HandleKind HandleKind##Friend::HandleKind( \ 00054 VariableLengthData const & encodedValue) \ 00055 { \ 00056 return rti1516e::HandleKind(encodedValue); \ 00057 } \ 00058 inline HandleKind##Implementation const * \ 00059 HandleKind##Friend::getImplementation(rti1516e::HandleKind const& handle) \ 00060 { \ 00061 return handle.getImplementation(); \ 00062 } \ 00063 inline HandleKind##Implementation* \ 00064 HandleKind##Friend::getImplementation(rti1516e::HandleKind & handle) \ 00065 { \ 00066 return handle.getImplementation(); \ 00067 } \ 00068 inline rti1516e::HandleKind make##HandleKind(Dt##HandleKind handle) \ 00069 { \ 00070 return HandleKind##Friend::HandleKind(handle); \ 00071 } \ 00072 inline rti1516e::HandleKind make##HandleKind( \ 00073 VariableLengthData const & encodedValue) \ 00074 { \ 00075 return HandleKind##Friend::HandleKind(encodedValue); \ 00076 } \ 00077 inline Dt##HandleKind make##HandleKind##Impl(rti1516e::HandleKind handle) \ 00078 { \ 00079 return (Dt##HandleKind)HandleKind##Friend::getImplementation(handle); \ 00080 } 00081 00084 #define DEFINE_FILL_HANDLE_SET_IMPL(HandleKind) \ 00085 inline void fill##HandleKind##SetImpl( \ 00086 rti1516e::HandleKind##Set const & rtiHandleSet, \ 00087 Dt##HandleKind##Set & internHandleSet) \ 00088 { \ 00089 for (rti1516e::HandleKind##Set::const_iterator iter = rtiHandleSet.begin(); \ 00090 iter != rtiHandleSet.end(); \ 00091 iter++) \ 00092 { \ 00093 internHandleSet.insert(make##HandleKind##Impl(*iter)); \ 00094 } \ 00095 } 00096 00099 #define DEFINE_FILL_HANDLE_SET(HandleKind) \ 00100 inline void fill##HandleKind##Set( \ 00101 Dt##HandleKind##Set const & internHandleSet, \ 00102 rti1516e::HandleKind##Set & rtiHandleSet) \ 00103 { \ 00104 for (Dt##HandleKind##Set::const_iterator iter = internHandleSet.begin(); \ 00105 iter != internHandleSet.end(); \ 00106 iter++) \ 00107 { \ 00108 rtiHandleSet.insert(make##HandleKind(*iter)); \ 00109 } \ 00110 } 00111 00112 DEFINE_HANDLE_CLASS_FRIEND(FederateHandle) 00113 DEFINE_HANDLE_CLASS_FRIEND(ObjectClassHandle) 00114 DEFINE_HANDLE_CLASS_FRIEND(InteractionClassHandle) 00115 DEFINE_HANDLE_CLASS_FRIEND(ObjectInstanceHandle) 00116 DEFINE_HANDLE_CLASS_FRIEND(AttributeHandle) 00117 DEFINE_HANDLE_CLASS_FRIEND(ParameterHandle) 00118 DEFINE_HANDLE_CLASS_FRIEND(DimensionHandle) 00119 DEFINE_HANDLE_CLASS_FRIEND(RegionHandle) 00120 00121 DEFINE_FILL_HANDLE_SET(DimensionHandle) 00122 DEFINE_FILL_HANDLE_SET_IMPL(DimensionHandle) 00123 DEFINE_FILL_HANDLE_SET(RegionHandle) 00124 DEFINE_FILL_HANDLE_SET_IMPL(RegionHandle) 00125 00129 class MessageRetractionHandleFriend 00130 { 00131 public: 00132 MessageRetractionHandleFriend(); 00133 static rti1516e::MessageRetractionHandle MessageRetractionHandle( 00134 DtMessageRetractionHandle handleValue); 00135 static rti1516e::MessageRetractionHandle MessageRetractionHandle( 00136 VariableLengthData const & encodedValue); 00137 static MessageRetractionHandleImplementation const* 00138 getImplementation(rti1516e::MessageRetractionHandle const& handle); 00139 static MessageRetractionHandleImplementation* getImplementation( 00140 rti1516e::MessageRetractionHandle& handle); 00141 }; 00142 inline MessageRetractionHandleFriend::MessageRetractionHandleFriend() 00143 { 00144 } 00145 inline rti1516e::MessageRetractionHandle 00146 MessageRetractionHandleFriend::MessageRetractionHandle( 00147 DtMessageRetractionHandle handleValue) 00148 { 00149 return rti1516e::MessageRetractionHandle( 00150 (MessageRetractionHandleImplementation*)&handleValue); 00151 } 00152 inline rti1516e::MessageRetractionHandle 00153 MessageRetractionHandleFriend::MessageRetractionHandle( 00154 VariableLengthData const & encodedValue) 00155 { 00156 return rti1516e::MessageRetractionHandle(encodedValue); 00157 } 00158 inline MessageRetractionHandleImplementation const * 00159 MessageRetractionHandleFriend::getImplementation( 00160 rti1516e::MessageRetractionHandle const& handle) 00161 { 00162 return handle.getImplementation(); 00163 } 00164 inline MessageRetractionHandleImplementation* 00165 MessageRetractionHandleFriend::getImplementation( 00166 rti1516e::MessageRetractionHandle & handle) 00167 { 00168 return handle.getImplementation(); 00169 } 00170 inline rti1516e::MessageRetractionHandle makeMessageRetractionHandle( 00171 DtMessageRetractionHandle handle) 00172 { 00173 return MessageRetractionHandleFriend::MessageRetractionHandle(handle); 00174 00175 } 00176 inline rti1516e::MessageRetractionHandle makeMessageRetractionHandle( 00177 VariableLengthData const & encodedValue) 00178 { 00179 return MessageRetractionHandleFriend::MessageRetractionHandle(encodedValue); 00180 00181 } 00182 inline DtMessageRetractionHandle makeMessageRetractionHandleImpl( 00183 rti1516e::MessageRetractionHandle handle) 00184 { 00185 return MessageRetractionHandleFriend::getImplementation(handle)->value(); 00186 } 00187 00188 inline rti1516e::MessageRetractionHandle makeMessageRetractionHandle( 00189 DtFederateHandle fedHandle, unsigned long serialNumber) 00190 { 00191 DtMessageRetractionHandle handleImpl = {serialNumber, fedHandle}; 00192 return makeMessageRetractionHandle(handleImpl); 00193 }; 00194 00195 inline MAKRti::DtOrderType makeOrderTypeImpl(rti1516e::OrderType order) 00196 { 00197 return (order == RECEIVE) ? MAKRti::DtReceive : MAKRti::DtTimestamp; 00198 } 00199 00200 inline MAKRti::DtTransportType makeTransportTypeImpl(rti1516e::TransportationType transport) 00201 { 00202 return (transport == RELIABLE) ? MAKRti::DtReliable : MAKRti::DtBest_Effort; 00203 } 00204 00205 inline rti1516e::OrderType makeOrderType(MAKRti::DtOrderType order) 00206 { 00207 return (order == MAKRti::DtReceive) ? RECEIVE : TIMESTAMP; 00208 } 00209 00210 inline rti1516e::TransportationType makeTransportType(MAKRti::DtTransportType transport) 00211 { 00212 return (transport == MAKRti::DtReliable) ? RELIABLE : BEST_EFFORT; 00213 } 00214 00215 00216 }; 00217 00218 #endif //! DtIFSPEC1516 00219 #endif //! handleCreator_H_