diff --git a/libsrc/general/array.hpp b/libsrc/general/array.hpp index 1429f2c8..69cf2f30 100644 --- a/libsrc/general/array.hpp +++ b/libsrc/general/array.hpp @@ -60,6 +60,7 @@ namespace netgen T operator*() const { return ar[ind]; } T & operator*() { return ar[ind]; } bool operator != (ArrayIterator d2) { return ind != d2.ind; } + bool operator == (ArrayIterator d2) { return ind == d2.ind; } }; diff --git a/libsrc/general/mysimd.hpp b/libsrc/general/mysimd.hpp index bc00adae..62a87baf 100644 --- a/libsrc/general/mysimd.hpp +++ b/libsrc/general/mysimd.hpp @@ -9,7 +9,9 @@ #include -#ifdef WIN32 +#ifdef WIN32 +#ifndef AVX_OPERATORS_DEFINED +#define AVX_OPERATORS_DEFINED inline __m128d operator- (__m128d a) { return _mm_xor_pd(a, _mm_set1_pd(-0.0)); } inline __m128d operator+ (__m128d a, __m128d b) { return _mm_add_pd(a,b); } inline __m128d operator- (__m128d a, __m128d b) { return _mm_sub_pd(a,b); } @@ -36,6 +38,7 @@ inline __m256d operator-= (__m256d &a, __m256d b) { return a = a-b; } inline __m256d operator*= (__m256d &a, __m256d b) { return a = a*b; } inline __m256d operator/= (__m256d &a, __m256d b) { return a = a/b; } #endif +#endif diff --git a/libsrc/meshing/python_mesh.cpp b/libsrc/meshing/python_mesh.cpp index e4f05a8e..56628793 100644 --- a/libsrc/meshing/python_mesh.cpp +++ b/libsrc/meshing/python_mesh.cpp @@ -7,8 +7,6 @@ #include #include #include <../interface/writeuser.hpp> -#include -#include using namespace netgen; @@ -22,6 +20,7 @@ namespace netgen template void ExportArray (py::module &m) { + using TA = Array; string name = string("Array_") + typeid(T).name(); py::class_>(m, name.c_str()) .def ("__len__", [] ( Array &self ) { return self.Size(); } ) @@ -33,6 +32,9 @@ void ExportArray (py::module &m) return self[i]; }), py::return_value_policy::reference) + .def("__iter__", [] ( TA & self) { + return py::make_iterator (self.begin(),self.end()); + }, py::keep_alive<0,1>()) // keep array alive while iterator is used ; } @@ -300,10 +302,6 @@ DLL_HEADER void ExportNetgenMeshing(py::module &m) py::implicitly_convertible< int, PointIndex>(); - py::class_(m, "Ngx_Mesh") - .def(py::init>()) - .def_property_readonly("ngmesh", &Ngx_Mesh::GetMesh) - ; py::class_>(m, "Mesh") // .def(py::init<>("create empty mesh")) @@ -564,7 +562,6 @@ DLL_HEADER void ExportNetgenMeshing(py::module &m) )) ; - py::implicitly_convertible< shared_ptr, Ngx_Mesh >(); typedef MeshingParameters MP;