Salome HOME
merge BR_v14_rc
[modules/hydro.git] / src / HYDROData / HYDROData_StricklerTable.cxx
index 0e68479d54660cb49495689a2cf3daf0e710de94..5d7623d8047cedf9f153be9b5e9d86a77f25fae4 100644 (file)
@@ -32,7 +32,8 @@
 IMPLEMENT_STANDARD_HANDLE( HYDROData_StricklerTable, HYDROData_Entity )
     IMPLEMENT_STANDARD_RTTIEXT( HYDROData_StricklerTable, HYDROData_Entity )
 
-    HYDROData_StricklerTable::HYDROData_StricklerTable()
+HYDROData_StricklerTable::HYDROData_StricklerTable()
+: HYDROData_Entity( Geom_No )
 {
 }
 
@@ -81,7 +82,7 @@ bool HYDROData_StricklerTable::Import( const TCollection_AsciiString& theFileNam
             else
             {
                 Standard_Real aValue = TCollection_AsciiString( aValueStr ).RealValue();
-                Set( aStr, aValue );
+                Set( QString( (QChar*)aStr.ToExtString(), aStr.Length() ), aValue );
             }
         }
     }
@@ -115,19 +116,20 @@ bool HYDROData_StricklerTable::Export( const TCollection_AsciiString& theFileNam
     return aRes;
 }
 
-double HYDROData_StricklerTable::Get( const TCollection_ExtendedString& theType, double theDefault ) const
+double HYDROData_StricklerTable::Get( const QString& theType, double theDefault ) const
 {
     Handle( TDataStd_NamedData ) aMap = Map();
-    if( aMap->HasReal( theType ) )
-        return aMap->GetReal( theType );
+    TCollection_ExtendedString aType = toExtString( theType );
+    if( aMap->HasReal( aType ) )
+        return aMap->GetReal( aType );
     else
         return theDefault;
 }
 
-void HYDROData_StricklerTable::Set( const TCollection_ExtendedString& theType, double theCoefficient )
+void HYDROData_StricklerTable::Set( const QString& theType, double theCoefficient )
 {
     Handle(TDataStd_NamedData) aMap = Map();
-    aMap->SetReal( theType, theCoefficient );
+    aMap->SetReal( toExtString( theType ), theCoefficient );
 }
 
 void HYDROData_StricklerTable::GetCoefficientRange( double& theMin, double& theMax ) const
@@ -148,23 +150,24 @@ void HYDROData_StricklerTable::GetCoefficientRange( double& theMin, double& theM
   }
 }
 
-TColStd_SequenceOfExtendedString HYDROData_StricklerTable::GetTypes() const
+QStringList HYDROData_StricklerTable::GetTypes() const
 {
-    TColStd_SequenceOfExtendedString aSeq;
+    QStringList aSeq;
     Handle(TDataStd_NamedData) aMap = Map();
     if ( !aMap.IsNull() )
     {
         for ( TDataStd_DataMapIteratorOfDataMapOfStringReal it( aMap->GetRealsContainer() ); it.More(); it.Next() )
-            aSeq.Append( it.Key() );
+            aSeq.append( toQString( it.Key() ) );
     }
     return aSeq;
 }
 
-bool HYDROData_StricklerTable::HasType( const TCollection_ExtendedString& theType ) const
+bool HYDROData_StricklerTable::HasType( const QString& theType ) const
 {
   Handle(TDataStd_NamedData) aMap = Map();
   
-  return !aMap.IsNull() && aMap->HasReal( theType );
+  TCollection_ExtendedString aType = toExtString( theType );
+  return !aMap.IsNull() && aMap->HasReal( aType );
 }
 
 void HYDROData_StricklerTable::Clear()
@@ -204,3 +207,23 @@ Handle(TDataStd_NamedData) HYDROData_StricklerTable::Map() const
         aMap = TDataStd_NamedData::Set( aLabel );
     return aMap;
 }
+
+TCollection_ExtendedString HYDROData_StricklerTable::toExtString( const QString& theStr ) const
+{
+    TCollection_ExtendedString aRes;
+    if( !theStr.isEmpty() )
+    {
+           Standard_ExtString extStr = new Standard_ExtCharacter[ ( theStr.length() + 1 ) * 2 ];
+           memcpy( (void*)extStr, theStr.unicode(), theStr.length() * 2 );
+           ((short*)extStr)[theStr.length()] = '\0';
+
+           aRes = TCollection_ExtendedString( extStr );
+           delete [] extStr;
+    }
+    return aRes;
+}
+
+QString HYDROData_StricklerTable::toQString( const TCollection_ExtendedString& theStr ) const
+{
+    return QString( (QChar*)theStr.ToExtString(), theStr.Length() );
+}