*/
ListOfStrings GetLockerID();
+/*!
+ TODO: Write comments.
+*/
+ void SetReal( in string theVarName, in double theValue );
+/*!
+
+ TODO: Write comments.
+*/
+ void SetInteger( in string theVarName, in long theValue );
+/*!
+ TODO: Write comments.
+*/
+ void SetBoolean( in string theVarName, in boolean theValue );
+
+/*!
+ TODO: Write comments.
+*/
+ double GetReal( in string theVarName );
+/*!
+ TODO: Write comments.
+*/
+ long GetInteger( in string theVarName );
+
+/*!
+ TODO: Write comments.
+*/
+ boolean GetBoolean( in string theVarName );
+
+
+/*!
+ TODO: Write comments.
+*/
+ boolean IsReal( in string theVarName );
+
+/*!
+ TODO: Write comments.
+*/
+ boolean IsInteger( in string theVarName );
+/*!
+ TODO: Write comments.
+*/
+ boolean IsBoolean( in string theVarName );
+
+/*!
+ TODO: Write comments.
+*/
+ boolean IsVariable( in string theVarName );
+ ListOfStrings GetVariableNames();
};
//==========================================================================
salome_ComponentGUI.py \
omnipatch.py \
iparameters.py \
- salome_version.py
+ salome_version.py \
+ salome_notebook.py
sharedpkgpython_PYTHON = kernel_shared_modules.py
--- /dev/null
+# Copyright (C) 2008 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# 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
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+# File : salome_notebook.py
+# Author : Roman NIKOLAEV, Open CASCADE S.A.S.
+# Module : SALOME
+# $Header:
+"""
+Module salome_notebook gives access to Salome Notebook.
+"""
+
+import salome
+
+class NoteBook:
+
+ def __init__(self, Study):
+ self.myStudy = Study
+
+ def set(self, variableName, variable):
+ if type(variable) == float:
+ self.myStudy.SetReal(variableName, variable)
+
+ elif type(variable) == int:
+ self.myStudy.SetInteger(variableName, variable)
+
+ elif type(variable) == bool:
+ self.myStudy.SetBoolean(variableName, variable)
+
+ def get(self, variableName):
+ aResult = None
+ if self.myStudy.IsVariable(variableName):
+
+ if self.myStudy.IsReal(variableName):
+ aResult = self.myStudy.GetReal(variableName)
+
+ elif self.myStudy.IsInteger(variableName):
+ aResult = self.myStudy.GetInteger(variableName)
+
+ elif self.myStudy.IsBoolean(variableName):
+ aResult = self.myStudy.GetBoolean(variableName)
+
+ return aResult
+
+notebook = NoteBook(salome.myStudy)
#include "SALOMEDSImpl_SComponentIterator.hxx"
#include "SALOMEDSImpl_AttributeStudyProperties.hxx"
#include "SALOMEDSImpl_AttributeParameter.hxx"
+#include "SALOMEDSImpl_GenericVariable.hxx"
#include "SALOMEDSImpl_UseCaseBuilder.hxx"
#include "SALOMEDS_Driver_i.hxx"
return aVector;
}
+
+void SALOMEDS_Study::SetReal(const string& theVarName, const double theValue)
+{
+ if (_isLocal) {
+ SALOMEDS::Locker lock;
+ _local_impl->SetVariable(theVarName,
+ theValue,
+ SALOMEDSImpl_GenericVariable::REAL_VAR);
+ }
+ else
+ _corba_impl->SetReal((char*)theVarName.c_str(),theValue);
+}
+
+void SALOMEDS_Study::SetInteger(const string& theVarName, const int theValue)
+{
+ if (_isLocal) {
+ SALOMEDS::Locker lock;
+ _local_impl->SetVariable(theVarName,
+ theValue,
+ SALOMEDSImpl_GenericVariable::INTEGER_VAR);
+ }
+ else
+ _corba_impl->SetInteger((char*)theVarName.c_str(),theValue);
+}
+
+void SALOMEDS_Study::SetBoolean(const string& theVarName, const bool theValue)
+{
+ if (_isLocal) {
+ SALOMEDS::Locker lock;
+ _local_impl->SetVariable(theVarName,
+ theValue,
+ SALOMEDSImpl_GenericVariable::BOOLEAN_VAR);
+ }
+ else
+ _corba_impl->SetBoolean((char*)theVarName.c_str(),theValue);
+}
+
+double SALOMEDS_Study::GetReal(const string& theVarName)
+{
+ double aResult;
+ if (_isLocal) {
+ SALOMEDS::Locker lock;
+ aResult = _local_impl->GetVariable(theVarName);
+ }
+ else
+ aResult = _corba_impl->GetReal((char*)theVarName.c_str());
+ return aResult;
+}
+
+int SALOMEDS_Study::GetInteger(const string& theVarName)
+{
+ int aResult;
+ if (_isLocal) {
+ SALOMEDS::Locker lock;
+ aResult = (int) _local_impl->GetVariable(theVarName);
+ }
+ else
+ aResult = _corba_impl->GetInteger((char*)theVarName.c_str());
+ return aResult;
+}
+
+bool SALOMEDS_Study::GetBoolean(const string& theVarName)
+{
+ bool aResult;
+ if (_isLocal) {
+ SALOMEDS::Locker lock;
+ aResult = (bool) _local_impl->GetVariable(theVarName);
+ }
+ else
+ aResult = _corba_impl->GetBoolean((char*)theVarName.c_str());
+ return aResult;
+}
+
+bool SALOMEDS_Study::IsReal(const string& theVarName)
+{
+ bool aResult;
+ if (_isLocal) {
+ SALOMEDS::Locker lock;
+ aResult = _local_impl->IsTypeOf(theVarName,
+ SALOMEDSImpl_GenericVariable::REAL_VAR);
+ }
+ else
+ aResult = _corba_impl->IsReal((char*)theVarName.c_str());
+ return aResult;
+}
+
+bool SALOMEDS_Study::IsInteger(const string& theVarName)
+{
+ bool aResult;
+ if (_isLocal) {
+ SALOMEDS::Locker lock;
+ aResult = _local_impl->IsTypeOf(theVarName,
+ SALOMEDSImpl_GenericVariable::INTEGER_VAR);
+ }
+ else
+ aResult = _corba_impl->IsInteger((char*)theVarName.c_str());
+ return aResult;
+}
+
+bool SALOMEDS_Study::IsBoolean(const string& theVarName)
+{
+ bool aResult;
+ if (_isLocal) {
+ SALOMEDS::Locker lock;
+ aResult = _local_impl->IsTypeOf(theVarName,
+ SALOMEDSImpl_GenericVariable::BOOLEAN_VAR);
+ }
+ else
+ aResult = _corba_impl->IsBoolean((char*)theVarName.c_str());
+ return aResult;
+}
+
+bool SALOMEDS_Study::IsVariable(const string& theVarName)
+{
+ bool aResult;
+ if (_isLocal) {
+ SALOMEDS::Locker lock;
+ aResult = _local_impl->IsVariable(theVarName);
+ }
+ else
+ aResult = _corba_impl->IsVariable((char*)theVarName.c_str());
+ return aResult;
+}
+
+vector<string> SALOMEDS_Study::GetVariableNames()
+{
+ vector<string> aVector;
+ if (_isLocal) {
+ SALOMEDS::Locker lock;
+ aVector = _local_impl->GetVariableNames();
+ }
+ else {
+ SALOMEDS::ListOfStrings_var aSeq = _corba_impl->GetVariableNames();
+ int aLength = aSeq->length();
+ for (int i = 0; i < aLength; i++)
+ aVector.push_back( string(aSeq[i].in()) );
+ }
+ return aVector;
+}
+
std::string SALOMEDS_Study::ConvertObjectToIOR(CORBA::Object_ptr theObject)
{
return _orb->object_to_string(theObject);
virtual void UnLockStudy(const std::string& theLockerID);
virtual std::vector<std::string> GetLockerID();
+ virtual void SetReal(const std::string& theVarName, const double theValue);
+ virtual void SetInteger(const std::string& theVarName, const int theValue);
+ virtual void SetBoolean(const std::string& theVarName, const bool theValue);
+
+ virtual double GetReal(const std::string& theVarName);
+ virtual int GetInteger(const std::string& theVarName);
+ virtual bool GetBoolean(const std::string& theVarName);
+
+ virtual bool IsReal(const std::string& theVarName);
+ virtual bool IsInteger(const std::string& theVarName);
+ virtual bool IsBoolean(const std::string& theVarName);
+
+ virtual bool IsVariable(const std::string& theVarName);
+ virtual std::vector<std::string> GetVariableNames();
+
std::string ConvertObjectToIOR(CORBA::Object_ptr theObject);
CORBA::Object_ptr ConvertIORToObject(const std::string& theIOR);
}
return aResult._retn();
}
+//============================================================================
+/*! Function : SetReal
+ * Purpose :
+ */
+//============================================================================
+void SALOMEDS_Study_i::SetReal(const char* theVarName, CORBA::Double theValue)
+{
+ _impl->SetVariable(string(theVarName),
+ theValue,
+ SALOMEDSImpl_GenericVariable::REAL_VAR);
+}
+
+//============================================================================
+/*! Function : SetInteger
+ * Purpose :
+ */
+//============================================================================
+void SALOMEDS_Study_i::SetInteger(const char* theVarName, CORBA::Long theValue)
+{
+ _impl->SetVariable(string(theVarName),
+ theValue,
+ SALOMEDSImpl_GenericVariable::INTEGER_VAR);
+}
+
+//============================================================================
+/*! Function : SetBoolean
+ * Purpose :
+ */
+//============================================================================
+void SALOMEDS_Study_i::SetBoolean(const char* theVarName, CORBA::Boolean theValue)
+{
+ _impl->SetVariable(string(theVarName),
+ theValue,
+ SALOMEDSImpl_GenericVariable::BOOLEAN_VAR);
+}
+
+//============================================================================
+/*! Function : GetReal
+ * Purpose :
+ */
+//============================================================================
+CORBA::Double SALOMEDS_Study_i::GetReal(const char* theVarName)
+{
+ return _impl->GetVariable(string(theVarName));
+}
+
+//============================================================================
+/*! Function : GetInteger
+ * Purpose :
+ */
+//============================================================================
+CORBA::Long SALOMEDS_Study_i::GetInteger(const char* theVarName)
+{
+ return (int)_impl->GetVariable(string(theVarName));
+}
+
+//============================================================================
+/*! Function : GetBoolean
+ * Purpose :
+ */
+//============================================================================
+CORBA::Boolean SALOMEDS_Study_i::GetBoolean(const char* theVarName)
+{
+ return (bool)_impl->GetVariable(string(theVarName));
+}
+
+//============================================================================
+/*! Function : IsReal
+ * Purpose :
+ */
+//============================================================================
+CORBA::Boolean SALOMEDS_Study_i::IsReal(const char* theVarName)
+{
+ return _impl->IsTypeOf(string(theVarName),
+ SALOMEDSImpl_GenericVariable::REAL_VAR);
+}
+
+//============================================================================
+/*! Function : IsInteger
+ * Purpose :
+ */
+//============================================================================
+CORBA::Boolean SALOMEDS_Study_i::IsInteger(const char* theVarName)
+{
+ return _impl->IsTypeOf(string(theVarName),
+ SALOMEDSImpl_GenericVariable::INTEGER_VAR);
+}
+
+//============================================================================
+/*! Function : IsBoolean
+ * Purpose :
+ */
+//============================================================================
+CORBA::Boolean SALOMEDS_Study_i::IsBoolean(const char* theVarName)
+{
+ return _impl->IsTypeOf(string(theVarName),
+ SALOMEDSImpl_GenericVariable::BOOLEAN_VAR);
+}
+
+//============================================================================
+/*! Function : IsVariable
+ * Purpose :
+ */
+//============================================================================
+CORBA::Boolean SALOMEDS_Study_i::IsVariable(const char* theVarName)
+{
+ return _impl->IsVariable(string(theVarName));
+}
+
+//============================================================================
+/*! Function : GetVariableNames
+ * Purpose :
+ */
+//============================================================================
+SALOMEDS::ListOfStrings* SALOMEDS_Study_i::GetVariableNames()
+{
+ vector<string> aVarNames = _impl->GetVariableNames();
+ SALOMEDS::ListOfStrings_var aResult = new SALOMEDS::ListOfStrings;
+
+ int aLen = aVarNames.size();
+ aResult->length(aLen);
+
+ for (int anInd = 0; anInd < aLen; anInd++)
+ aResult[anInd] = CORBA::string_dup(aVarNames[anInd].c_str());
+
+ return aResult._retn();
+}
//============================================================================
/*! Function : GetDefaultScript
virtual SALOMEDS::ListOfStrings* GetLockerID();
+ virtual void SetReal(const char* theVarName, CORBA::Double theValue);
+
+ virtual void SetInteger(const char* theVarName, CORBA::Long theValue);
+
+ virtual void SetBoolean(const char* theVarName, CORBA::Boolean theValue);
+
+ virtual CORBA::Double GetReal(const char* theVarName);
+
+ virtual CORBA::Long GetInteger(const char* theVarName);
+
+ virtual CORBA::Boolean GetBoolean(const char* theVarName);
+
+ virtual CORBA::Boolean IsReal(const char* theVarName);
+
+ virtual CORBA::Boolean IsInteger(const char* theVarName);
+
+ virtual CORBA::Boolean IsBoolean(const char* theVarName);
+
+ virtual CORBA::Boolean IsVariable(const char* theVarName);
+
+ virtual SALOMEDS::ListOfStrings* GetVariableNames();
+
virtual char* GetDefaultScript(const char* theModuleName, const char* theShift);
virtual CORBA::Boolean DumpStudy(const char* thePath, const char* theBaseName, CORBA::Boolean isPublished);
virtual bool IsStudyLocked() = 0;
virtual void UnLockStudy(const std::string& theLockerID) = 0;
virtual std::vector<std::string> GetLockerID() = 0;
+
+ virtual void SetReal(const std::string& theVarName, const double theValue) = 0;
+ virtual void SetInteger(const std::string& theVarName, const int theValue) = 0;
+ virtual void SetBoolean(const std::string& theVarName, const bool theValue) = 0;
+
+ virtual double GetReal(const std::string& theVarName) = 0;
+ virtual int GetInteger(const std::string& theVarName) = 0;
+ virtual bool GetBoolean(const std::string& theVarName) = 0;
+
+ virtual bool IsReal(const std::string& theVarName) = 0;
+ virtual bool IsInteger(const std::string& theVarName) = 0;
+ virtual bool IsBoolean(const std::string& theVarName) = 0;
+
+ virtual bool IsVariable(const std::string& theVarName) = 0;
+ virtual std::vector<std::string> GetVariableNames() = 0;
+
};
SALOMEDSImpl_ChildNodeIterator.hxx \
SALOMEDSImpl_Defines.hxx \
SALOMEDSImpl_IParameters.hxx \
- SALOMEDSImpl_TMPFile.hxx
+ SALOMEDSImpl_TMPFile.hxx \
+ SALOMEDSImpl_GenericVariable.hxx \
+ SALOMEDSImpl_ScalarVariable.hxx
#
# ===============================================================
SALOMEDSImpl_StudyManager.cxx \
SALOMEDSImpl_IParameters.cxx \
SALOMEDSImpl_TMPFile.cxx \
+ SALOMEDSImpl_GenericVariable.cxx \
+ SALOMEDSImpl_ScalarVariable.cxx \
\
SALOMEDSImpl_AttributeComment.hxx \
SALOMEDSImpl_AttributeDrawable.hxx \
SALOMEDSImpl_StudyManager.hxx \
SALOMEDSImpl_Tool.hxx \
SALOMEDSImpl_UseCaseBuilder.hxx \
- SALOMEDSImpl_UseCaseIterator.hxx
+ SALOMEDSImpl_UseCaseIterator.hxx \
+ SALOMEDSImpl_GenericVariable.hxx \
+ SALOMEDSImpl_ScalarVariable.hxx
libSalomeDSImpl_la_CPPFLAGS = $(COMMON_CPPFLAGS)
libSalomeDSImpl_la_LDFLAGS = -no-undefined -version-info=0:0:0
--- /dev/null
+// Copyright (C) 2008 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// 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
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+// File : SALOMEDSImpl_GenericVariable.cxx
+// Author : Roman NIKOLAEV, Open CASCADE S.A.S.
+// Module : SALOME
+
+#include "SALOMEDSImpl_GenericVariable.hxx"
+#include "SALOMEDSImpl_Attributes.hxx"
+#include "SALOMEDSImpl_Study.hxx"
+
+#include <string>
+
+
+using namespace std;
+
+//============================================================================
+/*! Function : SALOMEDSImpl_GenericVariable
+ * Purpose :
+ */
+//============================================================================
+SALOMEDSImpl_GenericVariable::
+SALOMEDSImpl_GenericVariable(SALOMEDSImpl_GenericVariable::VariableTypes theType):
+ _type(theType)
+{}
+
+//============================================================================
+/*! Function : ~SALOMEDSImpl_GenericVariable
+ * Purpose :
+ */
+//============================================================================
+SALOMEDSImpl_GenericVariable::~SALOMEDSImpl_GenericVariable()
+{}
+
+//============================================================================
+/*! Function : Type
+ * Purpose :
+ */
+//============================================================================
+SALOMEDSImpl_GenericVariable::VariableTypes SALOMEDSImpl_GenericVariable::Type() const
+{
+ return _type;
+}
+
+//============================================================================
+/*! Function : setType
+ * Purpose :
+ */
+//============================================================================
+void SALOMEDSImpl_GenericVariable::setType(const SALOMEDSImpl_GenericVariable::VariableTypes theType)
+{
+ _type = theType;
+}
+
+//============================================================================
+/*! Function : CheckLocked
+ * Purpose :
+ */
+//============================================================================
+void SALOMEDSImpl_GenericVariable::CheckLocked()
+{
+ DF_Label aLabel = DF_Label();
+ if(aLabel.IsNull()) return;
+
+ SALOMEDSImpl_Study* aStudy = SALOMEDSImpl_Study::GetStudy(aLabel);
+ if(!aStudy) return;
+ if(aStudy->IsLocked()) {
+ aStudy->_errorCode = "LockProtection";
+ throw LockProtection("LockProtection");
+ }
+}
+
+//============================================================================
+/*! Function : SetModifyFlag
+ * Purpose :
+ */
+//============================================================================
+void SALOMEDSImpl_GenericVariable::SetModifyFlag()
+{
+ DF_Label aLabel = DF_Label();
+ if(aLabel.IsNull()) return;
+
+ SALOMEDSImpl_Study* aStudy = SALOMEDSImpl_Study::GetStudy(aLabel);
+ if(aStudy) aStudy->Modify();
+}
+
+
+//============================================================================
+/*! Function : String2VariableType
+ * Purpose :
+ */
+//============================================================================
+SALOMEDSImpl_GenericVariable::VariableTypes SALOMEDSImpl_GenericVariable::String2VariableType(const string& theStrType)
+{
+ return(SALOMEDSImpl_GenericVariable::VariableTypes)atoi((char*)theStrType.c_str());
+}
+
+//============================================================================
+/*! Function : Save
+ * Purpose :
+ */
+//============================================================================
+string SALOMEDSImpl_GenericVariable::Save() const
+{
+ return string();
+}
+
+//============================================================================
+/*! Function : SaveType
+ * Purpose :
+ */
+//============================================================================
+string SALOMEDSImpl_GenericVariable::SaveType() const
+{
+ return string();
+}
+
+//============================================================================
+/*! Function : Load
+ * Purpose :
+ */
+//============================================================================
+void SALOMEDSImpl_GenericVariable::Load(const string& theStrValue)
+{
+}
--- /dev/null
+// Copyright (C) 2008 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// 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
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+// File : SALOMEDSImpl_GenericVariable.hxx
+// Author : Roman NIKOLAEV, Open CASCADE S.A.S.
+// Module : SALOME
+
+#ifndef _GENERICIMPL_VARIABLE_HXX_
+#define _GENERICIMPL_VARIABLE_HXX_
+
+#include "SALOMEDSImpl_Defines.hxx"
+
+#include <string>
+
+//This is base class for all variable of the Salome notebook
+
+class SALOMEDSIMPL_EXPORT SALOMEDSImpl_GenericVariable
+{
+ public:
+
+ //Supported types of the nootebook variables
+ enum VariableTypes{REAL_VAR, INTEGER_VAR, BOOLEAN_VAR};
+
+ SALOMEDSImpl_GenericVariable(VariableTypes theType);
+ ~SALOMEDSImpl_GenericVariable();
+
+ VariableTypes Type() const;
+
+ static VariableTypes String2VariableType(const std::string& theStrType);
+
+ void setType(const VariableTypes theType);
+
+ virtual void CheckLocked();
+
+ virtual void SetModifyFlag();
+
+ virtual std::string Save() const;
+ virtual std::string SaveType() const;
+
+ virtual void Load(const std::string& theStrValue);
+
+ private:
+ VariableTypes _type;
+};
+
+#endif //_GENERICIMPL_VARIABLE_HXX_
--- /dev/null
+// Copyright (C) 2008 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// 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
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+// File : SALOMEDSImpl_ScalarVariable.cxx
+// Author : Roman NIKOLAEV, Open CASCADE S.A.S.
+// Module : SALOME
+
+#include "SALOMEDSImpl_ScalarVariable.hxx"
+#include "SALOMEDSImpl_GenericVariable.hxx"
+#include <iostream>
+using namespace std;
+
+//============================================================================
+/*! Function : SALOMEDSImpl_ScalarVariable
+ * Purpose :
+ */
+//============================================================================
+SALOMEDSImpl_ScalarVariable::
+SALOMEDSImpl_ScalarVariable(SALOMEDSImpl_GenericVariable::VariableTypes type):
+ SALOMEDSImpl_GenericVariable(type)
+{}
+
+//============================================================================
+/*! Function : ~SALOMEDSImpl_ScalarVariable()
+ * Purpose :
+ */
+//============================================================================
+SALOMEDSImpl_ScalarVariable::~SALOMEDSImpl_ScalarVariable(){}
+
+//============================================================================
+/*! Function :
+ * Purpose :
+ */
+//============================================================================
+void SALOMEDSImpl_ScalarVariable::setValue(const double theValue)
+{
+ CheckLocked();
+
+ if(myValue == theValue)
+ return;
+
+ myValue = theValue;
+
+ SetModifyFlag();
+}
+
+//============================================================================
+/*! Function : getValue()
+ * Purpose :
+ */
+//============================================================================
+double SALOMEDSImpl_ScalarVariable::getValue() const
+{
+ return myValue;
+}
+
+//============================================================================
+/*! Function : Save()
+ * Purpose :
+ */
+//============================================================================
+string SALOMEDSImpl_ScalarVariable::Save() const{
+ char buffer[255];
+ switch(Type())
+ {
+ case SALOMEDSImpl_GenericVariable::REAL_VAR:
+ {
+ sprintf(buffer, "%.64e", myValue);
+ break;
+ }
+ case SALOMEDSImpl_GenericVariable::BOOLEAN_VAR:
+ case SALOMEDSImpl_GenericVariable::INTEGER_VAR:
+ {
+ sprintf(buffer, "%d", (int)myValue);
+ }
+ default:break;
+ }
+ return string(buffer);
+}
+
+
+//============================================================================
+/*! Function : SaveType()
+ * Purpose :
+ */
+//============================================================================
+string SALOMEDSImpl_ScalarVariable::SaveType() const{
+ char buffer[255];
+ sprintf(buffer, "%d", (int)Type());
+ return string(buffer);
+}
+
+//============================================================================
+/*! Function : Load()
+ * Purpose :
+ */
+//============================================================================
+void SALOMEDSImpl_ScalarVariable::Load(const string& theStrValue)
+{
+ double aValue = atof(theStrValue.c_str());
+ setValue(aValue);
+}
--- /dev/null
+// Copyright (C) 2008 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// 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
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+// File : SALOMEDSImpl_ScalarVariable.hxx
+// Author : Roman NIKOLAEV, Open CASCADE S.A.S.
+// Module : SALOME
+
+#ifndef _SALOMEDSImpl_ScalarVariable_HeaderFile
+#define _SALOMEDSImpl_ScalarVariable_HeaderFile
+
+#include "SALOMEDSImpl_Defines.hxx"
+#include "SALOMEDSImpl_GenericVariable.hxx"
+
+class SALOMEDSIMPL_EXPORT SALOMEDSImpl_ScalarVariable :
+ public SALOMEDSImpl_GenericVariable
+{
+public:
+ SALOMEDSImpl_ScalarVariable(SALOMEDSImpl_GenericVariable::VariableTypes theType);
+ ~SALOMEDSImpl_ScalarVariable();
+
+ void setValue(const double theValue);
+ double getValue() const;
+
+ virtual std::string Save() const;
+ virtual std::string SaveType() const;
+
+ virtual void Load(const std::string& theStrValue);
+
+private:
+ double myValue;
+};
+
+
+#endif //_SALOMEDSImpl_ScalarVariable_HeaderFile
#include "SALOMEDSImpl_StudyHandle.hxx"
#include "SALOMEDSImpl_Tool.hxx"
#include "SALOMEDSImpl_IParameters.hxx"
+#include "SALOMEDSImpl_ScalarVariable.hxx"
#include <fstream>
return _lockers;
}
+//============================================================================
+/*! Function : SetVariable
+ * Purpose :
+ */
+//============================================================================
+void SALOMEDSImpl_Study::SetVariable(const string& theVarName,
+ const double theValue,
+ const SALOMEDSImpl_GenericVariable::VariableTypes theType)
+{
+ std::map<std::string, SALOMEDSImpl_GenericVariable*>::iterator it
+ = myNoteBookVars.find(theVarName);
+
+ SALOMEDSImpl_ScalarVariable* aVar = NULL;
+ if( it == myNoteBookVars.end() ) {
+
+ aVar = new SALOMEDSImpl_ScalarVariable(theType);
+
+ aVar->setValue(theValue);
+ myNoteBookVars[theVarName] = aVar;
+ }
+ else {
+ if(aVar = dynamic_cast<SALOMEDSImpl_ScalarVariable*>((*it).second)) {
+ aVar->setValue(theValue);
+ if(aVar->Type() != theType)
+ aVar->setType(theType);
+ }
+ }
+}
+
+//============================================================================
+/*! Function : GetReal
+ * Purpose :
+ */
+//============================================================================
+double SALOMEDSImpl_Study::GetVariable(const string& theVarName)
+{
+ std::map<std::string, SALOMEDSImpl_GenericVariable*>::const_iterator it =
+ myNoteBookVars.find(theVarName);
+
+ if(it != myNoteBookVars.end())
+ if(SALOMEDSImpl_ScalarVariable* aVar = dynamic_cast<SALOMEDSImpl_ScalarVariable*>((*it).second))
+ return aVar->getValue();
+}
+
+//============================================================================
+/*! Function : IsTypeOf
+ * Purpose :
+ */
+//============================================================================
+bool SALOMEDSImpl_Study::IsTypeOf(const string& theVarName,
+ SALOMEDSImpl_GenericVariable::
+ VariableTypes theType) const
+{
+ std::map<std::string, SALOMEDSImpl_GenericVariable*>::const_iterator it =
+ myNoteBookVars.find(theVarName);
+
+ if(it != myNoteBookVars.end())
+ return (*it).second->Type() == theType;
+
+ return false;
+}
+
+//============================================================================
+/*! Function : IsVariable
+ * Purpose :
+ */
+//============================================================================
+bool SALOMEDSImpl_Study::IsVariable(const string& theVarName) const
+{
+ return myNoteBookVars.find(theVarName) != myNoteBookVars.end();
+}
+
+//============================================================================
+/*! Function : GetVariableNames
+ * Purpose :
+ */
+//============================================================================
+vector<string> SALOMEDSImpl_Study::GetVariableNames() const
+{
+ vector<string> aResult;
+ std::map<std::string, SALOMEDSImpl_GenericVariable*>::const_iterator it =
+ myNoteBookVars.begin();
+
+ for(; it != myNoteBookVars.end(); it++)
+ aResult.push_back((*it).first);
+
+ return aResult;
+}
+
+//============================================================================
+/*! Function : AddVariable
+ * Purpose :
+ */
+//============================================================================
+void SALOMEDSImpl_Study::AddVariable(const string& theVarName,
+ SALOMEDSImpl_GenericVariable* theVariable)
+{
+ myNoteBookVars[theVarName] = theVariable;
+}
+
//============================================================================
/*! Function : EnableUseCaseAutoFilling
* Purpose :
#include "SALOMEDSImpl_Callback.hxx"
#include "SALOMEDSImpl_Driver.hxx"
#include "SALOMEDSImpl_ChildIterator.hxx"
+#include "SALOMEDSImpl_GenericVariable.hxx"
class SALOMEDSImpl_StudyManager;
class SALOMEDSImpl_GenericAttribute;
-
class SALOMEDSIMPL_EXPORT SALOMEDSImpl_Study
{
private:
std::map<std::string, SALOMEDSImpl_SObject> _mapOfSO;
std::map<std::string, SALOMEDSImpl_SComponent> _mapOfSCO;
std::map<std::string, DF_Label> myIORLabels;
-
+ std::map<std::string, SALOMEDSImpl_GenericVariable*> myNoteBookVars;
SALOMEDSImpl_SObject _FindObject(const SALOMEDSImpl_SObject& SO,
const std::string& anObjectName,
//Returns an ID of the study locker
std::vector<std::string> GetLockerID();
+ /*!
+ TODO: Write comments for new functions.
+ */
+
+ void SetVariable(const std::string& theVarName,
+ const double theValue,
+ const SALOMEDSImpl_GenericVariable::VariableTypes);
+
+ double GetVariable(const std::string& theVarName);
+
+ bool IsTypeOf(const std::string& theVarName,
+ SALOMEDSImpl_GenericVariable::VariableTypes theType) const;
+
+ bool IsVariable(const std::string& theVarName) const;
+
+ std::vector<std::string> GetVariableNames() const;
+
+ void AddVariable(const std::string& theVarName,
+ SALOMEDSImpl_GenericVariable* theVariable);
+
+
//Returns a callback
SALOMEDSImpl_Callback* GetCallback() { return _cb; }
friend class SALOMEDSImpl_StudyManager;
friend class SALOMEDSImpl_GenericAttribute;
+ friend class SALOMEDSImpl_GenericVariable;
};
#endif
#include "SALOMEDSImpl_Tool.hxx"
#include "SALOMEDSImpl_SComponent.hxx"
#include "SALOMEDSImpl_GenericAttribute.hxx"
+#include "SALOMEDSImpl_ScalarVariable.hxx"
#include <map>
#include "HDFOI.hxx"
static void BuildTree (SALOMEDSImpl_Study*, HDFgroup*);
static void Translate_IOR_to_persistentID (const SALOMEDSImpl_SObject&,
SALOMEDSImpl_Driver*, bool isMultiFile, bool isASCII);
+static void ReadNoteBookVariables(SALOMEDSImpl_Study* theStudy, HDFgroup* theGroup);
//============================================================================
/*! Function : SALOMEDSImpl_StudyManager
// open the HDFFile
HDFfile *hdf_file =0;
HDFgroup *hdf_group_study_structure =0;
+ HDFgroup *hdf_notebook_vars = 0;
char* aC_HDFUrl;
string aHDFUrl;
if (!hdf_file->ExistInternalObject("STUDY_STRUCTURE")) {
_errorCode = "Study is empty";
return Study;
- }
-
+ }
+
//Create the Structure of the Document
hdf_group_study_structure = new HDFgroup("STUDY_STRUCTURE",hdf_file);
return NULL;
}
- hdf_file->CloseOnDisk();
+ //Read and create notebook variables
+ hdf_notebook_vars = new HDFgroup("NOTEBOOK_VARIABLES",hdf_file);
+ ReadNoteBookVariables(Study,hdf_notebook_vars);
+ hdf_notebook_vars =0; //will be deleted by hdf_sco_group destructor
+ hdf_file->CloseOnDisk();
+ hdf_group_study_structure = new HDFgroup("STUDY_STRUCTURE",hdf_file);
+
if (isASCII) {
vector<string> aFilesToRemove;
aFilesToRemove.push_back("hdf_from_ascii.hdf");
HDFgroup *hdf_group_study_structure =0;
HDFgroup *hdf_sco_group =0;
HDFgroup *hdf_sco_group2 =0;
+ HDFgroup *hdf_notebook_vars =0;
+ HDFgroup *hdf_notebook_var = 0;
HDFgroup *hdf_group_datacomponent =0;
HDFdataset *hdf_dataset =0;
hdf_soo_group->CloseOnDisk();
hdf_soo_group=0; // will be deleted by hdf_group_study_structure destructor
}
+ //-----------------------------------------------------------------------
+ //5 - Write the NoteBook Variables
+ //-----------------------------------------------------------------------
+ //5.1 Create group to store all note book variables
+ hdf_notebook_vars = new HDFgroup("NOTEBOOK_VARIABLES",hdf_file);
+ hdf_notebook_vars->CreateOnDisk();
+
+ map <std::string, SALOMEDSImpl_GenericVariable*>::const_iterator it =
+ aStudy->myNoteBookVars.begin();
+ string varValue;
+ string varType;
+
+ for( ;it != aStudy->myNoteBookVars.end(); it++ ){
+ // For each variable create HDF group
+ hdf_notebook_var = new HDFgroup((char*)(*it).first.c_str(),hdf_notebook_vars);
+ hdf_notebook_var->CreateOnDisk();
+
+ // Save Variable type
+ varType = (*it).second->SaveType();
+ name_len = (hdf_int32) varType.length();
+ size[0] = name_len +1 ;
+ hdf_dataset = new HDFdataset("VARIABLE_TYPE",hdf_notebook_var,HDF_STRING,size,1);
+ hdf_dataset->CreateOnDisk();
+ hdf_dataset->WriteOnDisk((char*)varType.c_str());
+ hdf_dataset->CloseOnDisk();
+ hdf_dataset=0; //will be deleted by hdf_sco_group destructor
+
+ // Save Variable value
+ varValue = (*it).second->Save();
+ name_len = (hdf_int32) varValue.length();
+ size[0] = name_len +1 ;
+ hdf_dataset = new HDFdataset("VARIABLE_VALUE",hdf_notebook_var,HDF_STRING,size,1);
+ hdf_dataset->CreateOnDisk();
+ hdf_dataset->WriteOnDisk((char*)varValue.c_str());
+ hdf_dataset->CloseOnDisk();
+ hdf_dataset=0; //will be deleted by hdf_sco_group destructor
+ hdf_notebook_var->CloseOnDisk();
+ hdf_notebook_var = 0; //will be deleted by hdf_sco_group destructor
+ }
+ hdf_notebook_vars->CloseOnDisk();
+ hdf_notebook_vars = 0; //will be deleted by hdf_sco_group destructor
+
if (aLocked) aStudy->GetProperties()->SetLocked(true);
//-----------------------------------------------------------------------
- //5 - Write the Study Properties
+ //6 - Write the Study Properties
//-----------------------------------------------------------------------
string study_name = aStudy->Name();
name_len = (hdf_int32) study_name.size();
}
}
+void ReadNoteBookVariables(SALOMEDSImpl_Study* theStudy, HDFgroup* theGroup)
+{
+ if(!theGroup)
+ return;
+
+ HDFgroup* new_group =0;
+ HDFdataset* new_dataset =0;
+
+ char aVarName[HDF_NAME_MAX_LEN+1];
+ char *currentVarType = 0;
+ char *currentVarValue = 0;
+ //Open HDF group with notebook variables
+ theGroup->OpenOnDisk();
+
+ //Get Nb of variables
+ int aNbVars = theGroup->nInternalObjects();
+
+ for( int iVar=0;iVar < aNbVars;iVar++ ) {
+ theGroup->InternalObjectIndentify(iVar,aVarName);
+ hdf_object_type type = theGroup->InternalObjectType(aVarName);
+ if(type == HDF_GROUP) {
+
+ //Read Variable
+ new_group = new HDFgroup(aVarName,theGroup);
+ new_group->OpenOnDisk();
+
+ //Read Type
+ new_dataset = new HDFdataset("VARIABLE_TYPE",new_group);
+ new_dataset->OpenOnDisk();
+ currentVarType = new char[new_dataset->GetSize()+1];
+ new_dataset->ReadFromDisk(currentVarType);
+ new_dataset->CloseOnDisk();
+ new_dataset = 0; //will be deleted by hdf_sco_group destructor
+
+ //Read Value
+ new_dataset = new HDFdataset("VARIABLE_VALUE",new_group);
+ new_dataset->OpenOnDisk();
+ currentVarValue = new char[new_dataset->GetSize()+1];
+ new_dataset->ReadFromDisk(currentVarValue);
+ new_dataset->CloseOnDisk();
+ new_dataset = 0; //will be deleted by hdf_sco_group destructor
+
+ SALOMEDSImpl_GenericVariable::VariableTypes aVarType =
+ SALOMEDSImpl_GenericVariable::String2VariableType(string(currentVarType));
+ delete currentVarType;
+
+ //Create variable and add it in the study
+ SALOMEDSImpl_GenericVariable* aVariable =
+ new SALOMEDSImpl_ScalarVariable(aVarType);
+ aVariable->Load(string(currentVarValue));
+ delete currentVarValue;
+
+ theStudy->AddVariable(string(aVarName),aVariable);
+ }
+ }
+ theGroup->CloseOnDisk();
+}