+%{
+#include "libSMESH_Swig.h"
+%}
+
+/* Exception handler for all functions */
+%exception
+{
+ class PyAllowThreadsGuard
+ {
+ public:
+ // Py_BEGIN_ALLOW_THREADS
+ PyAllowThreadsGuard() { _save = PyEval_SaveThread(); }
+ // Py_END_ALLOW_THREADS
+ ~PyAllowThreadsGuard() { PyEval_RestoreThread(_save); }
+ private:
+ PyThreadState *_save;
+ };
+
+ PyAllowThreadsGuard guard;
+
+ $action
+}
+
+%include "typemaps.i"
+%include "std_vector.i"
+
+namespace std {
+ %template(VectorInt) vector<int>;
+};
+
+
+/* Selection mode enumeration (corresponds to constants from the SALOME_Selection.h) */
+enum
+ {
+ Node,
+ Cell,
+ EdgeOfCell,
+ Edge,
+ Face,
+ Volume,
+ Actor,
+ Elem0D,
+ Ball
+ };
+
+class SMESH_Swig
+{
+ public:
+ SMESH_Swig();
+ ~SMESH_Swig();
+
+ void Init(int studyID);
+
+ const char* AddNewMesh(const char* IOR);
+ const char* AddNewHypothesis(const char* IOR);
+ const char* AddNewAlgorithms(const char* IOR);
+
+ void SetShape(const char* ShapeEntry, const char* MeshEntry);
+
+ void SetHypothesis(const char* Mesh_Or_SubMesh_Entry, const char* Hypothesis_Entry);
+ void SetAlgorithms(const char* Mesh_Or_SubMesh_Entry, const char* Algorithms_Entry);
+
+ void UnSetHypothesis(const char* Applied_Hypothesis_Entry );
+
+ const char* AddSubMesh (const char* Mesh_Entry, const char* SM_IOR, int ST);
+ const char* AddSubMeshOnShape (const char* Mesh_Entry, const char* GeomShape_Entry, const char* SM_IOR, int ST);
+
+ void SetName(const char* Entry, const char* Name);
+
+ void SetMeshIcon(const char* Mesh_Entry, const bool isComputed, const bool isEmpty);
+
+ void CreateAndDisplayActor( const char* Mesh_Entry );
+ void EraseActor( const char* Mesh_Entry, const bool allViewers = false );
+
+ // --------------------- for the test purposes -----------------------
+ int getSelectionMode();
+ void select( const char *id, std::vector<int> ids, bool append = false );
+ void select( const char *id, int id1, bool append = false );