/* ** Base class for PQDIF records; pure virtual. ** -------------------------------------------------------------------------- ** ** File name: $Workfile: rec_base.h $ ** Last modified: $Modtime: 2/05/98 1:53p $ ** Last modified by: $Author: Rob $ ** ** VCS archive path: $Archive: /Hank/DMM/FirmWare/Level3/ObDatMgr/rec_base.h $ ** VCS revision: $Revision: 4 $ */ // Forward-declare these items class CPQDIF_StreamIO; class CPQDIF_E_Collection; class CPQDIF_E_Scalar; class CPQDIF_E_Vector; union PQDIFValue; class CPQDIFRecord { public: CPQDIFRecord() {} virtual ~CPQDIFRecord() {} // Operations public: virtual bool ReadHeader( CPQDIF_StreamIO * pstream ) = 0; virtual bool ReadBody( CPQDIF_StreamIO * pstream ) = 0; virtual bool WriteHeader( CPQDIF_StreamIO * pstream ) = 0; virtual bool WriteBody( CPQDIF_StreamIO * pstream ) = 0; // Attributes public: virtual bool HeaderGetPos( LINKABS4& pos ) const = 0; virtual bool HeaderSetPos( LINKABS4 pos ) = 0; virtual bool HeaderGetTag( GUID& tagRecord ) const = 0; virtual bool HeaderSetTag( GUID tagRecord ) = 0; virtual bool HeaderGetSize( SIZE4& sizeHeader, SIZE4& sizeBody ) const = 0; virtual bool HeaderSetSize( SIZE4 sizeHeader, SIZE4 sizeBody ) = 0; virtual bool HeaderGetChecksum( UINT& checksum ) const = 0; virtual bool HeaderSetChecksum( UINT checksum ) = 0; virtual bool HeaderGetPosNextRecord( LINKABS4& pos ) const = 0; virtual bool HeaderSetPosNextRecord( LINKABS4 pos ) = 0; virtual CPQDIF_E_Collection * GetMainCollection( void ) const = 0; virtual bool SetMainCollection( CPQDIF_E_Collection * collMain ) = 0; virtual bool GetChanged( void ) = 0; virtual void SetChanged( bool changed ) = 0; // Static functions (do not affect--or even require--an object) public: static CPQDIF_E_Collection * FindCollectionInCollection ( CPQDIF_E_Collection * pcoll, const GUID& tag ); static CPQDIF_E_Scalar * FindScalarInCollection ( CPQDIF_E_Collection * pcoll, const GUID& tag ); static bool GetScalarValueInCollection ( CPQDIF_E_Collection * pcoll, const GUID& tag, UINT4 typePhysical, PQDIFValue& value ); static CPQDIF_E_Vector * FindVectorInCollection ( CPQDIF_E_Collection * pcoll, const GUID& tag ); static CPQDIF_E_Scalar * FindOrCreateScalarInCollection ( CPQDIF_E_Collection * pcoll, const GUID& tag, UINT4 typePhysical ); static CPQDIF_E_Vector * FindOrCreateVectorInCollection ( CPQDIF_E_Collection * pcoll, const GUID& tag, UINT4 typePhysical ); // Implementation protected: // None; pure virtual base class. // Member data protected: // None; pure virtual base class. };