-using namespace std;
-// File : SALOMEDS_TableOfStringAttribute.cxx
-// Created : Mon Apr 7 10:13:30 2003
-// Author : Sergey Ruin
-// Project : SALOME
-// Module : SALOMEDS
-// Copyright : Open CASCADE
+// SALOME SALOMEDS : data structure of SALOME and sources of Salome data server
+//
+// Copyright (C) 2003 CEA/DEN, EDF R&D
+//
+//
+//
+// File : SALOMEDS_TableOfStringAttribute.cxx
+// Author : Sergey Ruin
+// Module : SALOME
#include <SALOMEDS_TableOfStringAttribute.ixx>
#include <Standard_Failure.hxx>
#include <string>
#include <stdio.h>
+using namespace std;
const Standard_GUID& SALOMEDS_TableOfStringAttribute::GetID()
{
- static Standard_GUID SALOMEDS_TableOfStringAttributeID ("128371A2-8F52-11d6-A8A3-0001021E8C7F");
+ static Standard_GUID SALOMEDS_TableOfStringAttributeID ("128371A4-8F52-11d6-A8A3-0001021E8C7F");
return SALOMEDS_TableOfStringAttributeID;
}
myNbColumns = aTable->myNbColumns;
myTitle = aTable->myTitle;
- for(anIndex = 1; anIndex <= aTable->GetNbRows();anIndex++) {
- SetRowTitle(anIndex,aTable->GetRowTitle(anIndex));
- }
+ for(anIndex = 1; anIndex <= aTable->GetNbRows();anIndex++)
+ myRows->Append(aTable->GetRowTitle(anIndex));
+
for(anIndex = 1; anIndex <= aTable->GetNbColumns(); anIndex++)
- SetColumnTitle(anIndex, aTable->GetColumnTitle(anIndex));
+ myCols->Append(aTable->GetColumnTitle(anIndex));
}
Handle(TDF_Attribute) SALOMEDS_TableOfStringAttribute::NewEmpty() const
aTable->myNbRows = myNbRows;
aTable->myNbColumns = myNbColumns;
- for(anIndex = 1; anIndex <= GetNbRows();anIndex++) {
- aTable->SetRowTitle(anIndex,GetRowTitle(anIndex));
- }
+ for(anIndex = 1; anIndex <= GetNbRows();anIndex++)
+ aTable->myRows->Append(GetRowTitle(anIndex));
for(anIndex = 1; anIndex <= GetNbColumns(); anIndex++)
- aTable->SetColumnTitle(anIndex, GetColumnTitle(anIndex));
+ aTable->myCols->Append(GetColumnTitle(anIndex));
}
void SALOMEDS_TableOfStringAttribute::ConvertToString(ostrstream& theStream)
{
int i, j, l;
-cout << "########## ConvertToString BEGIN " << endl;
//Title
l = myTitle.Length();
theStream << l << "\n";
SALOMEDS_DataMapIteratorOfDataMapOfIntegerString anIterator(myTable);
for(; anIterator.More(); anIterator.Next()) {
- theStream << anIterator.Key() << "\n";
- theStream << anIterator.Value() << "\n";
-// l = anIterator.Value().Length();
-// theStream << l << "\n";
-// for(j=1; j<=l; j++)
-// theStream << anIterator.Value().Value(j) << "\n";
+ if (anIterator.Value().Length()) { // check empty string in the value table
+ theStream << anIterator.Key() << "\n";
+ unsigned long aValueSize = anIterator.Value().Length();
+ theStream<<aValueSize << "\n";
+ theStream.write((TCollection_AsciiString(anIterator.Value()).ToCString()),aValueSize);
+ theStream<<"\n";
+ } else { // write index only of kind: "0key"; "05", for an example
+ theStream << "0" << anIterator.Key() << "\n";
+ }
}
-cout << "########## ConvertToString END " << endl;
return;
}
{
Backup();
+ theStream.seekg(0, ios::end);
+ long aSize = theStream.tellg();
+ theStream.seekg(0, ios::beg);
+
int i, j, l;
+ char *aValueString = new char[aSize];
Standard_ExtCharacter anExtChar;
TCollection_ExtendedString aStr;
TCollection_AsciiString aValue;
theStream >> l;
myTable.Clear();
+ theStream.getline(aValueString,aSize,'\n');
for(i=1; i<=l; i++) {
Standard_Integer aKey;
- theStream >> aKey;
- theStream >> aValue;
+
+ theStream.getline(aValueString,aSize,'\n');
+ aValue = aValueString;
+ aKey = aValue.IntegerValue();
+ if (aValue.Value(1) == '0')
+ aValue = "";
+ else {
+ unsigned long aValueSize;
+ theStream >> aValueSize;
+ theStream.read(aValueString, 1); // an '\n' omitting
+ theStream.read(aValueString, aValueSize);
+ theStream.read(aValueString, 1); // an '\n' omitting
+ aValue = aValueString;
+ }
myTable.Bind(aKey, aValue);
-// theStream >> l;
-// aStr = TCollection_ExtendedString(l,0);
-// for(j=1; j<=l; j++) {
-// theStream >> anExtChar;
-// aStr.SetValue(j, anExtChar);
-// }
-// myTable.Bind(aKey, aStr);
}
-
+ delete(aValueString);
return true;
}