CigiEarthModelDefV3.cpp

Go to the documentation of this file.
00001 
00052 #define _EXPORT_CCL_
00053 
00054 #include "CigiEarthModelDefV3.h"
00055 #include "CigiSwapping.h"
00056 #include "CigiExceptions.h"
00057 
00058 
00059 // ====================================================================
00060 // Construction/Destruction
00061 // ====================================================================
00062 
00063 
00064 // ================================================
00065 // CigiEarthModelDefV3
00066 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00067 CigiEarthModelDefV3::CigiEarthModelDefV3()
00068 {
00069 
00070    PacketID = CIGI_EARTH_MODEL_DEF_PACKET_ID_V3;
00071    PacketSize = CIGI_EARTH_MODEL_DEF_PACKET_SIZE_V3;
00072    Version = 3;
00073    MinorVersion = 0;
00074 
00075    CustomERMEn = false;
00076    EquatorialRadius = 0.0;
00077    Flattening = 0.0;
00078 
00079 }
00080 
00081 // ================================================
00082 // ~CigiEarthModelDefV3
00083 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00084 CigiEarthModelDefV3::~CigiEarthModelDefV3()
00085 {
00086 
00087 }
00088 
00089 // ====================================================================
00090 // Pack and Unpack
00091 // ====================================================================
00092 
00093 // ================================================
00094 // Pack
00095 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00096 int CigiEarthModelDefV3::Pack(CigiBasePacket * Base, Cigi_uint8 * Buff, void *Spec) const
00097 {
00098    PackPointer CDta;
00099 
00100    CigiBaseEarthModelDef * Data = ( CigiBaseEarthModelDef *)Base;
00101 
00102    CDta.c = Buff;
00103 
00104    *CDta.c++ = PacketID;
00105    *CDta.c++ = PacketSize;
00106 
00107    *CDta.c++ = (Data->CustomERMEn) ? 0x01 : 0;
00108 
00109    *CDta.c++ = 0;
00110    *CDta.l++ = 0;
00111 
00112    *CDta.d++ = Data->EquatorialRadius;
00113    *CDta.d++ = Data->Flattening;
00114 
00115    return(PacketSize);
00116 
00117 }
00118 
00119 // ================================================
00120 // Unpack
00121 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00122 int CigiEarthModelDefV3::Unpack(Cigi_uint8 * Buff, bool Swap, void *Spec)
00123 {
00124    PackPointer CDta;
00125 
00126    CDta.c = Buff;
00127 
00128    CDta.c += 2;  // Step over packet id and size
00129 
00130    CustomERMEn = ((*CDta.c++ & 0x01) != 0);
00131 
00132    CDta.c += 5;
00133 
00134    if(!Swap)
00135    {
00136       EquatorialRadius = *CDta.d++;
00137       Flattening = *CDta.d++;
00138    }
00139    else
00140    {
00141       CigiSwap8(&EquatorialRadius, CDta.d++);
00142       CigiSwap8(&Flattening, CDta.d++);
00143    }
00144 
00145    return(PacketSize);
00146 
00147 }
00148 
00149 
00150 
00151 // ====================================================================
00152 // Accessors
00153 // ====================================================================
00154 
00155 

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