Salome HOME
Merge branch 'jfa/26449_1'
[modules/shaper.git] / src / ModelHighAPI / ModelHighAPI_Double.cpp
index 72667c3ec727f5abdcf32d8556d0bce5943bbc20..7bbd547ab41d7fc364a81554a1dc6f56b6355fff 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2014-2017  CEA/DEN, EDF R&D
+// Copyright (C) 2014-2021  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 //
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
-// See http://www.salome-platform.org/ or
-// email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "ModelHighAPI_Double.h"
 
 #include <ModelAPI_AttributeDouble.h>
+#include <GeomDataAPI_Point.h>
+
+#include <sstream>
 //--------------------------------------------------------------------------------------
 
 //--------------------------------------------------------------------------------------
@@ -30,13 +32,13 @@ ModelHighAPI_Double::ModelHighAPI_Double(double theValue)
 {
 }
 
-ModelHighAPI_Double::ModelHighAPI_Double(const std::string & theValue)
+ModelHighAPI_Double::ModelHighAPI_Double(const std::wstring & theValue)
 : myVariantType(VT_STRING)
 , myString(theValue)
 {
 }
 
-ModelHighAPI_Double::ModelHighAPI_Double(const char * theValue)
+ModelHighAPI_Double::ModelHighAPI_Double(const wchar_t * theValue)
 : myVariantType(VT_STRING)
 , myString(theValue)
 {
@@ -46,6 +48,22 @@ ModelHighAPI_Double::~ModelHighAPI_Double()
 {
 }
 
+double ModelHighAPI_Double::value() const
+{
+  // needed for array of double, which supports no text
+  return myDouble;
+}
+
+std::wstring ModelHighAPI_Double::string() const
+{
+  if (myVariantType == VT_STRING)
+    return myString;
+
+  std::wostringstream anOut;
+  anOut << myDouble;
+  return anOut.str();
+}
+
 //--------------------------------------------------------------------------------------
 void ModelHighAPI_Double::fillAttribute(
     const std::shared_ptr<ModelAPI_AttributeDouble> & theAttribute) const
@@ -55,3 +73,23 @@ void ModelHighAPI_Double::fillAttribute(
     case VT_STRING: theAttribute->setText(myString); return;
   }
 }
+
+void ModelHighAPI_Double::fillAttribute(
+  const std::shared_ptr<GeomDataAPI_Point> & thePoint,
+  const ModelHighAPI_Double & theX,
+  const ModelHighAPI_Double & theY,
+  const ModelHighAPI_Double & theZ) const
+{
+  switch (theX.myVariantType) {
+  case VT_DOUBLE: thePoint->setX(theX.myDouble); break;
+  case VT_STRING: thePoint->setTextX(theX.myString);
+  }
+  switch (theY.myVariantType) {
+  case VT_DOUBLE: thePoint->setY(theY.myDouble); break;
+  case VT_STRING: thePoint->setTextY(theY.myString);
+  }
+  switch (theZ.myVariantType) {
+  case VT_DOUBLE: thePoint->setZ(theZ.myDouble); break;
+  case VT_STRING: thePoint->setTextZ(theZ.myString);
+  }
+}