X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FGeomAPI%2FGeomAPI.i;h=b01c33325a050510eb0fc0badf10ed95da26a77a;hb=77ce6d35ac8d2f0fdaecb4f23e0870bf74e36103;hp=717c7d264ad4ded423606aaa3888e3f0f0add158;hpb=de0f49686ec6655ddc5816c8fa5383964662aec4;p=modules%2Fshaper.git diff --git a/src/GeomAPI/GeomAPI.i b/src/GeomAPI/GeomAPI.i index 717c7d264..b01c33325 100644 --- a/src/GeomAPI/GeomAPI.i +++ b/src/GeomAPI/GeomAPI.i @@ -1,11 +1,26 @@ +// Copyright (C) 2014-2024 CEA, EDF +// +// 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 +// + /* GeomAPI.i */ %module GeomAPI %{ - #include "memory" - #include "GeomAPI.h" - #include "GeomAPI_Interface.h" - #include "GeomAPI_Pnt.h" - #include "GeomAPI_Shape.h" + #include "GeomAPI_swig.h" %} // to avoid error on this @@ -13,16 +28,149 @@ // standard definitions %include "typemaps.i" +%include "std_list.i" +%include "std_map.i" +%include "std_set.i" +%include "std_shared_ptr.i" %include "std_string.i" -%include -// boost pointers -// %include +// shared pointers +%shared_ptr(GeomAPI_AISObject) +%shared_ptr(GeomAPI_Angle) +%shared_ptr(GeomAPI_Angle2d) +%shared_ptr(GeomAPI_Ax1) +%shared_ptr(GeomAPI_Ax2) +%shared_ptr(GeomAPI_Ax3) +%shared_ptr(GeomAPI_Box) +%shared_ptr(GeomAPI_BSpline) +%shared_ptr(GeomAPI_BSpline2d) +%shared_ptr(GeomAPI_Circ) +%shared_ptr(GeomAPI_Circ2d) +%shared_ptr(GeomAPI_Cone) +%shared_ptr(GeomAPI_Curve) +%shared_ptr(GeomAPI_Cylinder) +%shared_ptr(GeomAPI_DataMapOfShapeMapOfShapes) +%shared_ptr(GeomAPI_DataMapOfShapeShape) +%shared_ptr(GeomAPI_Dir) +%shared_ptr(GeomAPI_Dir2d) +%shared_ptr(GeomAPI_Edge) +%shared_ptr(GeomAPI_Ellipse) +%shared_ptr(GeomAPI_Ellipse2d) +%shared_ptr(GeomAPI_Face) +%shared_ptr(GeomAPI_ICustomPrs) %shared_ptr(GeomAPI_Interface) +%shared_ptr(GeomAPI_IPresentable) +%shared_ptr(GeomAPI_Lin) +%shared_ptr(GeomAPI_Lin2d) +%shared_ptr(GeomAPI_PlanarEdges) +%shared_ptr(GeomAPI_Pln) %shared_ptr(GeomAPI_Pnt) +%shared_ptr(GeomAPI_Pnt2d) %shared_ptr(GeomAPI_Shape) +%shared_ptr(GeomAPI_ShapeExplorer) +%shared_ptr(GeomAPI_ShapeIterator) +%shared_ptr(GeomAPI_Shell) +%shared_ptr(GeomAPI_Solid) +%shared_ptr(GeomAPI_Sphere) +%shared_ptr(GeomAPI_Torus) +%shared_ptr(GeomAPI_Trsf) +%shared_ptr(GeomAPI_Vertex) +%shared_ptr(GeomAPI_Wire) +%shared_ptr(GeomAPI_WireExplorer) +%shared_ptr(GeomAPI_XY) +%shared_ptr(GeomAPI_XYZ) + + +%typemap(in) std::list > &thePoints (std::list > temp) { + std::shared_ptr * temp_pnt; + int newmem = 0; + if (PySequence_Check($input)) { + for (Py_ssize_t i = 0; i < PySequence_Size($input); ++i) { + PyObject * item = PySequence_GetItem($input, i); + if ((SWIG_ConvertPtrAndOwn(item, (void **)&temp_pnt, $descriptor(std::shared_ptr *), SWIG_POINTER_EXCEPTION, &newmem)) == 0) { + if (!temp_pnt) { + PyErr_SetString(PyExc_TypeError, "argument must be list of GeomAPI_Pnt."); + return NULL; + } + temp.push_back(*temp_pnt); + if (newmem & SWIG_CAST_NEW_MEMORY) { + delete temp_pnt; + } + } + Py_DECREF(item); + } + $1 = &temp; + } else { + PyErr_SetString(PyExc_ValueError, "argument must be list of GeomAPI_Pnt."); + return NULL; + } +} + +%typemap(in, numinputs=0) double & (double temp) { + $1 = &temp; +} + +%typemap(argout) double & { + $result = SWIG_Python_AppendOutput($result, PyFloat_FromDouble(*$1)); +} + +// std::dynamic_pointer_cast +template std::shared_ptr shared_ptr_cast(std::shared_ptr theObject); +%template(shapeToEdge) shared_ptr_cast; + // all supported interfaces %include "GeomAPI_Interface.h" -%include "GeomAPI_Pnt.h" %include "GeomAPI_Shape.h" +%include "GeomAPI_AISObject.h" +%include "GeomAPI_Angle.h" +%include "GeomAPI_Angle2d.h" +%include "GeomAPI_Ax1.h" +%include "GeomAPI_Ax2.h" +%include "GeomAPI_Ax3.h" +%include "GeomAPI_Box.h" +%include "GeomAPI_BSpline.h" +%include "GeomAPI_BSpline2d.h" +%include "GeomAPI_Circ.h" +%include "GeomAPI_Circ2d.h" +%include "GeomAPI_Cone.h" +%include "GeomAPI_Curve.h" +%include "GeomAPI_Cylinder.h" +%include "GeomAPI_DataMapOfShapeMapOfShapes.h" +%include "GeomAPI_DataMapOfShapeShape.h" +%include "GeomAPI_Dir.h" +%include "GeomAPI_Dir2d.h" +%include "GeomAPI_Edge.h" +%include "GeomAPI_Ellipse.h" +%include "GeomAPI_Ellipse2d.h" +%include "GeomAPI_Face.h" +%include "GeomAPI_ICustomPrs.h" +%include "GeomAPI_IPresentable.h" +%include "GeomAPI_Lin.h" +%include "GeomAPI_Lin2d.h" +%include "GeomAPI_PlanarEdges.h" +%include "GeomAPI_Pln.h" +%include "GeomAPI_Pnt.h" +%include "GeomAPI_Pnt2d.h" +%include "GeomAPI_ShapeExplorer.h" +%include "GeomAPI_ShapeIterator.h" +%include "GeomAPI_Shell.h" +%include "GeomAPI_Solid.h" +%include "GeomAPI_Sphere.h" +%include "GeomAPI_Torus.h" +%include "GeomAPI_Trsf.h" +%include "GeomAPI_Vertex.h" +%include "GeomAPI_Wire.h" +%include "GeomAPI_WireExplorer.h" +%include "GeomAPI_XY.h" +%include "GeomAPI_XYZ.h" + +// std::list -> [] +%template(PointList) std::list >; +%template(ShapeList) std::list >; +// std::set -> [] +%template(CurveSet) std::set, GeomAPI_Curve::Comparator>; +%template(ShapeSet) std::set, GeomAPI_Shape::Comparator>; +%template(OriShapeSet) std::set, GeomAPI_Shape::ComparatorWithOri>; +// std::map -> {} +%template(ShapeToShapesMap) std::map, std::set, GeomAPI_Shape::ComparatorWithOri>, GeomAPI_Shape::Comparator>;