CigiCollDetSegDefV3.cpp

Go to the documentation of this file.
00001 
00052 #define _EXPORT_CCL_
00053 
00054 #include "CigiCollDetSegDefV3.h"
00055 #include "CigiSwapping.h"
00056 #include "CigiExceptions.h"
00057 
00058 
00059 // ====================================================================
00060 // Construction/Destruction
00061 // ====================================================================
00062 
00063 
00064 // ================================================
00065 // CigiCollDetSegDefV3
00066 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00067 CigiCollDetSegDefV3::CigiCollDetSegDefV3()
00068 {
00069 
00070    PacketID = CIGI_COLL_DET_SEG_DEF_PACKET_ID_V3;
00071    PacketSize = CIGI_COLL_DET_SEG_DEF_PACKET_SIZE_V3;
00072    Version = 3;
00073    MinorVersion = 0;
00074 
00075    EntityID = 0;
00076    SegmentID = 0;
00077    SegmentEn = false;
00078    X1 = 0.0;
00079    Y1 = 0.0;
00080    Z1 = 0.0;
00081    X2 = 0.0;
00082    Y2 = 0.0;
00083    Z2 = 0.0;
00084    Mask = 0;
00085 
00086 }
00087 
00088 // ================================================
00089 // ~CigiCollDetSegDefV3
00090 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00091 CigiCollDetSegDefV3::~CigiCollDetSegDefV3()
00092 {
00093 
00094 }
00095 
00096 // ====================================================================
00097 // Pack and Unpack
00098 // ====================================================================
00099 
00100 // ================================================
00101 // Pack
00102 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00103 int CigiCollDetSegDefV3::Pack(CigiBasePacket * Base, Cigi_uint8 * Buff, void *Spec) const
00104 {
00105    PackPointer CDta;
00106 
00107    CigiBaseCollDetSegDef * Data = ( CigiBaseCollDetSegDef *)Base;
00108 
00109    CDta.c = Buff;
00110 
00111    *CDta.c++ = PacketID;
00112    *CDta.c++ = PacketSize;
00113 
00114    *CDta.s++ = Data->EntityID;
00115    *CDta.c++ = Data->SegmentID;
00116 
00117    Cigi_uint8 HDta = (Data->SegmentEn) ? 0x01 : 0x00;
00118    *CDta.c++ = HDta;
00119 
00120    *CDta.s++ = 0;
00121 
00122    *CDta.f++ = Data->X1;
00123    *CDta.f++ = Data->Y1;
00124    *CDta.f++ = Data->Z1;
00125    *CDta.f++ = Data->X2;
00126    *CDta.f++ = Data->Y2;
00127    *CDta.f++ = Data->Z2;
00128    *CDta.l++ = Data->Mask;
00129    *CDta.l++ = 0;
00130 
00131    return(PacketSize);
00132 
00133 }
00134 
00135 // ================================================
00136 // Unpack
00137 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00138 int CigiCollDetSegDefV3::Unpack(Cigi_uint8 * Buff, bool Swap, void *Spec)
00139 {
00140    PackPointer CDta;
00141 
00142    CDta.c = Buff;
00143 
00144    CDta.c += 2;  // Step over packet id and size
00145 
00146    if(!Swap)
00147    {
00148       EntityID = *CDta.s++;
00149       SegmentID = *CDta.c++;
00150 
00151       Cigi_uint8 HDta = *CDta.c++;
00152       SegmentEn = ((HDta & 0x01) != 0);
00153 
00154       CDta.s++;
00155 
00156       X1 = *CDta.f++;
00157       Y1 = *CDta.f++;
00158       Z1 = *CDta.f++;
00159       X2 = *CDta.f++;
00160       Y2 = *CDta.f++;
00161       Z2 = *CDta.f++;
00162       Mask = *CDta.l++;
00163    }
00164    else
00165    {
00166       CigiSwap2(&EntityID, CDta.s++);
00167       SegmentID = *CDta.c++;
00168 
00169       Cigi_uint8 HDta = *CDta.c++;
00170       SegmentEn = ((HDta & 0x01) != 0);
00171 
00172       CDta.s++;
00173 
00174       CigiSwap4(&X1, CDta.f++);
00175       CigiSwap4(&Y1, CDta.f++);
00176       CigiSwap4(&Z1, CDta.f++);
00177       CigiSwap4(&X2, CDta.f++);
00178       CigiSwap4(&Y2, CDta.f++);
00179       CigiSwap4(&Z2, CDta.f++);
00180       CigiSwap4(&Mask, CDta.l++);
00181    }
00182 
00183    return(PacketSize);
00184 
00185 }
00186 
00187 
00188 
00189 // ====================================================================
00190 // Accessors
00191 // ====================================================================
00192 

Generated on Wed Apr 29 08:59:58 2009 for CCL by  doxygen 1.4.7