00001 
00067 #if !defined(_CIGI_COMP_CTRL_V3_INCLUDED_)
00068 #define _CIGI_COMP_CTRL_V3_INCLUDED_
00069 
00070 #include "CigiBaseCompCtrl.h"
00071 
00072 
00073 
00074 class CIGI_SPEC CigiCompCtrlV3 : public CigiBaseCompCtrl
00075 {
00076 
00077 public:
00078 
00079    
00080 
00081    
00084    CigiCompCtrlV3();
00085 
00086    
00089    virtual ~CigiCompCtrlV3();
00090 
00091 
00092    
00093 
00094    
00105    virtual int Pack(CigiBasePacket * Base, Cigi_uint8 * Buff, void *Spec) const;
00106 
00107    
00117    virtual int Unpack(Cigi_uint8 * Buff, bool Swap, void *Spec);
00118 
00119    
00131         virtual int GetCnvt(CigiVersionID &CnvtVersion,
00132                        CigiCnvtInfoType::Type &CnvtInfo);
00133 
00134 
00135 
00136    
00137 
00138    
00139 
00140    
00147    int SetInstanceID(const Cigi_uint16 InstanceIDIn, bool bndchk=true)
00148    {
00149       InstanceID = InstanceIDIn;
00150       return(CIGI_SUCCESS);
00151    }
00152 
00153    
00156    Cigi_uint16 GetInstanceID(void) const { return(InstanceID); }
00157 
00158 
00159    
00160 
00161    
00168    int SetCompState(const Cigi_uint8 CompStateIn, bool bndchk=true)
00169    {
00170       CompState = (Cigi_uint16) CompStateIn;
00171       return(CIGI_SUCCESS);
00172    }
00173 
00174    
00177    Cigi_uint8 GetCompState(void)
00178    {
00179       Cigi_uint8 V3State = (Cigi_uint8)((CompState > 0x00ff) ? 0xff : CompState);
00180       return(V3State);
00181    }
00182 
00183 
00184    
00185 
00186    
00207    int SetCompClassV3(const CompClassV3Grp CompClassV3In, bool bndchk=true);
00208 
00209    
00212    CompClassV3Grp GetCompClassV3(void) const { return(CompClassV3); }
00213 
00214 
00215    
00216 
00217    
00226    int SetCompData(const Cigi_uint8 CompDataIn,
00227                        const unsigned int Word,
00228                        const BytePos Pos,
00229                        bool bndchk=true);
00230 
00231    
00240    int SetCompData(const Cigi_int8 CompDataIn,
00241                        const unsigned int Word,
00242                        const BytePos Pos,
00243                        bool bndchk=true);
00244 
00245    
00254    int SetCompData(const Cigi_uint16 CompDataIn,
00255                        const unsigned int Word,
00256                        const HalfWordPos Pos,
00257                        bool bndchk=true);
00258 
00259    
00268    int SetCompData(const Cigi_int16 CompDataIn,
00269                        const unsigned int Word,
00270                        const HalfWordPos Pos,
00271                        bool bndchk=true);
00272 
00273    
00281    int SetCompData(const Cigi_uint32 CompDataIn,
00282                    const unsigned int Word,
00283                    bool bndchk=true);
00284 
00285    
00293    int SetCompData(const Cigi_int32 CompDataIn,
00294                    const unsigned int Word,
00295                    bool bndchk=true);
00296 
00297    
00305    int SetCompData(const float CompDataIn,
00306                    const unsigned int Word,
00307                    bool bndchk=true);
00308 
00309    
00317    int SetCompData(const Cigi_uint64 CompDataIn,
00318                    const unsigned int Pos,
00319                    bool bndchk=true);
00320 
00321    
00329    int SetCompData(const double CompDataIn,
00330                    const unsigned int Pos,
00331                    bool bndchk=true);
00332 
00333 
00334    
00340    Cigi_uint8 GetUCharCompData(const unsigned int Word,
00341                                   const BytePos Pos);
00342 
00343    
00349    Cigi_int8 GetCharCompData(const unsigned int Word,
00350                         const BytePos Pos);
00351 
00352    
00358    Cigi_uint16 GetUShortCompData(const unsigned int Word,
00359                                     const HalfWordPos Pos);
00360 
00361    
00367    Cigi_int16 GetShortCompData(const unsigned int Word,
00368                           const HalfWordPos Pos);
00369 
00370    
00375    Cigi_uint32 GetULongCompData(const unsigned int Word);
00376 
00377    
00382    Cigi_int32 GetLongCompData(const unsigned int Word);
00383 
00384    
00389    float GetFloatCompData(const unsigned int Word);
00390 
00391    
00396    Cigi_uint64 GetI64CompData(const unsigned int Pos);
00397 
00398    
00403    double GetDoubleCompData(const unsigned int Pos);
00404 
00405 
00406 
00407 
00408 protected:
00409 
00410    
00411    static const int CompClassCnvtSz = 14;
00412    static const CompAssocGrp CompClassV3xV1[CompClassCnvtSz];
00413    static const CompClassV2Grp CompClassV3xV2[CompClassCnvtSz];
00414 
00415 
00416 };
00417 
00418 #endif // #if !defined(_CIGI_COMP_CTRL_V3_INCLUDED_)