X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FFeaturesAPI%2FFeaturesAPI.i;h=c0a747b2f65bf52d060c472d250209cf053f792a;hb=13c564bef7d39cd31b142d6723caf03501a4f683;hp=55094b61d90dbda03c7027bcfb59eb7bca9fe477;hpb=e2e1b927dc9767f699d6d245de62cf43efa5580a;p=modules%2Fshaper.git diff --git a/src/FeaturesAPI/FeaturesAPI.i b/src/FeaturesAPI/FeaturesAPI.i index 55094b61d..c0a747b2f 100644 --- a/src/FeaturesAPI/FeaturesAPI.i +++ b/src/FeaturesAPI/FeaturesAPI.i @@ -1,3 +1,22 @@ +// Copyright (C) 2014-2019 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 +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// 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 +// + /* FeaturesAPI.i */ %module FeaturesAPI @@ -18,24 +37,134 @@ %include "typemaps.i" %include "std_shared_ptr.i" +// functions with named parameters +%feature("kwargs") addCommon; +%feature("kwargs") addCut; +%feature("kwargs") addFuse; +%feature("kwargs") addPartition; +%feature("kwargs") addSplit; +%feature("kwargs") addSmash; +%feature("kwargs") addUnion; + // shared pointers -%shared_ptr(FeaturesAPI_Boolean) +%shared_ptr(FeaturesAPI_BooleanCut) +%shared_ptr(FeaturesAPI_BooleanFuse) +%shared_ptr(FeaturesAPI_BooleanCommon) +%shared_ptr(FeaturesAPI_BooleanSmash) +%shared_ptr(FeaturesAPI_BooleanFill) +%shared_ptr(FeaturesAPI_Chamfer) %shared_ptr(FeaturesAPI_Extrusion) %shared_ptr(FeaturesAPI_ExtrusionBoolean) %shared_ptr(FeaturesAPI_ExtrusionCut) %shared_ptr(FeaturesAPI_ExtrusionFuse) -%shared_ptr(FeaturesAPI_Group) +%shared_ptr(FeaturesAPI_Fillet) +%shared_ptr(FeaturesAPI_Intersection) +%shared_ptr(FeaturesAPI_MultiRotation) +%shared_ptr(FeaturesAPI_MultiTranslation) +%shared_ptr(FeaturesAPI_Partition) +%shared_ptr(FeaturesAPI_Pipe) %shared_ptr(FeaturesAPI_Placement) +%shared_ptr(FeaturesAPI_Recover) +%shared_ptr(FeaturesAPI_RemoveSubShapes) %shared_ptr(FeaturesAPI_Revolution) +%shared_ptr(FeaturesAPI_RevolutionBoolean) +%shared_ptr(FeaturesAPI_RevolutionCut) +%shared_ptr(FeaturesAPI_RevolutionFuse) %shared_ptr(FeaturesAPI_Rotation) +%shared_ptr(FeaturesAPI_Scale) +%shared_ptr(FeaturesAPI_Symmetry) %shared_ptr(FeaturesAPI_Translation) +%shared_ptr(FeaturesAPI_Union) +%shared_ptr(FeaturesAPI_FusionFaces) +%shared_ptr(FeaturesAPI_RemoveResults) + + +%typecheck(SWIG_TYPECHECK_POINTER) std::pair, bool>, const std::pair, bool> & { + ModelHighAPI_Selection* temp_selection; + bool* temp_bool; + int newmem = 0; + $1 = 1; + std::list temp_inputlist; + if (PySequence_Check($input)) { + for (Py_ssize_t i = 0; i < PySequence_Size($input) && $1; ++i) { + PyObject * temp = PySequence_GetItem($input, i); + + if ((SWIG_ConvertPtrAndOwn(temp, (void **)&temp_selection, $descriptor(ModelHighAPI_Selection*), SWIG_POINTER_EXCEPTION, &newmem)) == 0) { + if (temp_selection) { + $1 = 1; + } else { + $1 = 0; + } + } else { + $1 = 0; + } + } + } else if (PyBool_Check($input)) { + $1 = 1; + } else { + $1 = 0; + } +} + +%typemap(in) const std::pair, bool> & (std::pair, bool> temp) { + ModelHighAPI_Selection* temp_selection; + std::list temp_selectionlist; + int newmem = 0; + std::list temp_inputlist; + if (PySequence_Check($input)) { + for (Py_ssize_t i = 0; i < PySequence_Size($input); ++i) { + PyObject * temp = PySequence_GetItem($input, i); + + if ((SWIG_ConvertPtrAndOwn(temp, (void **)&temp_selection, $descriptor(ModelHighAPI_Selection*), SWIG_POINTER_EXCEPTION, &newmem)) == 0) { + if (temp_selection) { + temp_selectionlist.push_back(*temp_selection); + if (newmem & SWIG_CAST_NEW_MEMORY) { + delete temp_selection; + } + } + } else { + PyErr_SetString(PyExc_TypeError, "argument must be ModelHighAPI_Selection."); + return NULL; + } + } + temp = std::pair, bool>(temp_selectionlist, false); + } else if (PyBool_Check($input)) { + temp = std::pair, bool>(std::list(), $input == Py_True); + } else { + PyErr_SetString(PyExc_TypeError, "argument must be std::list or bool."); + return NULL; + } + $1 = &temp; +} + +// fix compilation error: 'res*' was not declared in this scope +%typemap(freearg) const std::pair, bool> & {} // all supported interfaces -%include "FeaturesAPI_Boolean.h" +%include "FeaturesAPI_BooleanCut.h" +%include "FeaturesAPI_BooleanFuse.h" +%include "FeaturesAPI_BooleanCommon.h" +%include "FeaturesAPI_BooleanSmash.h" +%include "FeaturesAPI_BooleanFill.h" +%include "FeaturesAPI_Chamfer.h" %include "FeaturesAPI_Extrusion.h" %include "FeaturesAPI_ExtrusionBoolean.h" -%include "FeaturesAPI_Group.h" +%include "FeaturesAPI_Fillet.h" +%include "FeaturesAPI_Intersection.h" +%include "FeaturesAPI_Measurement.h" +%include "FeaturesAPI_MultiRotation.h" +%include "FeaturesAPI_MultiTranslation.h" +%include "FeaturesAPI_Partition.h" +%include "FeaturesAPI_Pipe.h" %include "FeaturesAPI_Placement.h" +%include "FeaturesAPI_Recover.h" +%include "FeaturesAPI_RemoveSubShapes.h" %include "FeaturesAPI_Revolution.h" +%include "FeaturesAPI_RevolutionBoolean.h" %include "FeaturesAPI_Rotation.h" +%include "FeaturesAPI_Scale.h" +%include "FeaturesAPI_Symmetry.h" %include "FeaturesAPI_Translation.h" +%include "FeaturesAPI_Union.h" +%include "FeaturesAPI_FusionFaces.h" +%include "FeaturesAPI_RemoveResults.h"