- TDF_Label aLab = theTag == 0 ? myLab : myLab.FindChild(theTag);
- // array is empty, remove the attribute
- if (theLen <= 0) {
- aLab.ForgetAttribute(TDataStd_ByteArray::GetID());
- return;
- }
- // store data of image in byte array
- Handle(TDataStd_ByteArray) aData;
- if (!aLab.FindAttribute(TDataStd_ByteArray::GetID(), aData)) {
- aData = TDataStd_ByteArray::Set(aLab, 1, theLen);
- }
- // copy bytes one by one
- if (aData->Length() != theLen) {
- Handle(TColStd_HArray1OfByte) aNewData = new TColStd_HArray1OfByte(1, theLen);
- for(int a = 0; a < theLen; a++)
- aNewData->SetValue(a + 1, theData[a]);
- aData->ChangeArray(aNewData);
- } else {
- for(int a = 0; a < theLen; a++)
- aData->SetValue(a + 1, theData[a]);
- }
-}
-
-const char* HYDROData_Object::ByteArray(const int theTag, int& theLen) const
-{
- TDF_Label aLab = theTag == 0 ? myLab : myLab.FindChild(theTag);
- Handle(TDataStd_ByteArray) aData;
- if (!aLab.FindAttribute(TDataStd_ByteArray::GetID(), aData))
- return NULL; // return empty image if there is no array
- theLen = aData->Length();
- if (theLen)
- return (const char*)(&(aData->InternalArray()->ChangeArray1().ChangeValue(1)));
- return NULL;
-}
-
-int HYDROData_Object::NbReferenceObjects( const int theTag ) const
-{
- Handle(TDataStd_ReferenceList) aRefs = getReferenceList( theTag, false );
- return aRefs.IsNull() ? 0 : aRefs->Extent();
-}
-
-void HYDROData_Object::AddReferenceObject( const Handle_HYDROData_Object& theObj,
- const int theTag )
-{
- if ( theObj.IsNull() )
- return;
-
- Handle(TDataStd_ReferenceList) aRefs = getReferenceList( theTag, true );
- aRefs->Append( theObj->Label() );