// ============================================================================ // $Id$ // $Name$ // ============================================================================ #ifndef __TDATAELEMENT_HH #define __TDATAELEMENT_HH #include "TGlobals.hh" #include "TStreamableObject.hh" #include "TOutputObjectFile.hh" class TOutputObjectStream; class TOutputObjectFile; class TModule; class TDataElement : public TStreamableObject { private: Tvoid* theData; Telement_t theElementType; Tint theNumberOfPrimitives; public: TDataElement( Tvoid* data, Telement_t type, Tint id = tIDunknown ); TDataElement( Telement_t type, Tint id = tIDunknown ); ~TDataElement(); public: Tint WriteData( TOutputObjectStream* output ); Tint GetDataSize(); Tvoid Print( Tostream& tos = Tstd::Tcout ); public: inline Tvoid* GetData() const; inline Tvoid SetData( Tvoid* data ); inline Telement_t GetElementType() const; inline Tvoid SetElementType( Telement_t elementtype ); inline Tint GetNumberOfPrimitives() const; inline Tvoid SetNumberOfPrimitives( Tint nprimitives ); inline Tvoid FillData( Tvoid* data, Telement_t elementtype ); inline Tvoid FillData( Tvoid* data ); private: Tvoid freeDataSpace(); Tvoid allocateDataSpace( Tvoid* data ); }; inline Tvoid TDataElement::FillData( Tvoid* data, Telement_t elementtype ) { freeDataSpace(); theElementType = elementtype; allocateDataSpace( data ); return; } inline Tvoid TDataElement::FillData( Tvoid* data ) { SetData( data ); return; } inline Tvoid* TDataElement::GetData() const { return( theData ); } inline Tvoid TDataElement::SetData( Tvoid* data ) { FillData( data, theElementType ); return; } inline Telement_t TDataElement::GetElementType() const { return( theElementType ); } inline Tvoid TDataElement::SetElementType( Telement_t elementtype ) { theElementType = elementtype; return; } inline Tint TDataElement::GetNumberOfPrimitives() const { return( theNumberOfPrimitives ); } inline Tvoid TDataElement::SetNumberOfPrimitives( Tint nprimitives ) { theNumberOfPrimitives = nprimitives; return; } #endif