CigiSymbolCloneV3_3.cpp

Go to the documentation of this file.
00001 
00040 #define _EXPORT_CCL_
00041 
00042 
00043 #include "CigiSymbolCloneV3_3.h"
00044 #include "CigiSwapping.h"
00045 #include "CigiExceptions.h"
00046 
00047 
00048 
00049 // ====================================================================
00050 // Construction/Destruction
00051 // ====================================================================
00052 
00053 // ================================================
00054 // CigiBaseEntityCtrl
00055 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00056 CigiSymbolCloneV3_3::CigiSymbolCloneV3_3(void)
00057 {
00058    PacketID = CIGI_SYMBOL_CLONE_PACKET_ID_V3_3;
00059    PacketSize = CIGI_SYMBOL_CLONE_PACKET_SIZE_V3_3;
00060    Version = 3;
00061    MinorVersion = 3;
00062 
00063    SymbolID = 0;
00064    SourceType = CigiBaseSymbolClone::SymbolSrc;
00065    SourceID = 0;
00066 
00067 }
00068 
00069 // ================================================
00070 // ~CigiBaseEntityCtrl
00071 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00072 CigiSymbolCloneV3_3::~CigiSymbolCloneV3_3(void)
00073 {
00074 }
00075 
00076 
00077 
00078 // ====================================================================
00079 // Pack and Unpack
00080 // ====================================================================
00081 
00082 // ================================================
00083 // Pack
00084 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00085 int CigiSymbolCloneV3_3::Pack(CigiBasePacket * Base, Cigi_uint8 * Buff, void *Spec) const
00086 {
00087    PackPointer CDta;
00088 
00089    CigiSymbolCloneV3_3 * Data =
00090       ( CigiSymbolCloneV3_3 *)Base;
00091 
00092    CDta.c = Buff;
00093 
00094    *CDta.c++ = PacketID;
00095    *CDta.c++ = PacketSize;
00096 
00097    *CDta.s++ = Data->SymbolID;
00098 
00099    if(Data->SourceType == CigiBaseSymbolClone::SymbolTemplateSrc)
00100       *CDta.c++ = 0x01;
00101    else
00102       *CDta.c++ = 0;
00103 
00104    *CDta.c++ = 0;
00105 
00106    *CDta.s++ = Data->SourceID;
00107 
00108    return(PacketSize);
00109 
00110 }
00111 
00112 // ================================================
00113 // Unpack
00114 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00115 int CigiSymbolCloneV3_3::Unpack(Cigi_uint8 * Buff, bool Swap, void *Spec)
00116 {
00117    PackPointer CDta;
00118    unsigned char HDta = 0;
00119 
00120    CDta.c = Buff;
00121 
00122    CDta.c += 2;  // Step over packet id and size
00123 
00124    if(!Swap)
00125    {
00126 
00127       SymbolID = *CDta.s++;
00128 
00129       HDta = *CDta.c++;
00130 
00131       CDta.c++;
00132 
00133       SourceID = *CDta.s++;
00134 
00135    }
00136    else
00137    {
00138 
00139       CigiSwap2(&SymbolID, CDta.s++);
00140 
00141       HDta = *CDta.c++;
00142 
00143       CDta.c++;
00144 
00145       CigiSwap2(&SourceID, CDta.s++);
00146 
00147    }
00148 
00149    SourceType = (CigiBaseSymbolClone::SymbolSourceGrp)(HDta & 0x01);
00150 
00151    return(PacketSize);
00152 
00153 }
00154 
00155 
00156 
00157 

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