Developer Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Circulator.hh
1 #ifndef OPENMESH_PYTHON_CIRCULATOR_HH
2 #define OPENMESH_PYTHON_CIRCULATOR_HH
3 
4 #include "Python/Bindings.hh"
5 
6 namespace OpenMesh {
7 namespace Python {
8 
18 template<class Circulator, class CenterEntityHandle>
20  public:
21 
28  CirculatorWrapperT(PolyMesh& _mesh, CenterEntityHandle _center) :
29  circulator_(_mesh, _center) {
30  }
31 
38  CirculatorWrapperT(TriMesh& _mesh, CenterEntityHandle _center) :
39  circulator_(_mesh, _center) {
40  }
41 
48  return *this;
49  }
50 
57  typename Circulator::value_type next() {
58  if (circulator_.is_valid()) {
59  typename Circulator::value_type res = *circulator_;
60  ++circulator_;
61  return res;
62  }
63  else {
64  PyErr_SetString(PyExc_StopIteration, "No more data.");
65  boost::python::throw_error_already_set();
66  }
67  return typename Circulator::value_type();
68  }
69 
70  private:
71  Circulator circulator_;
72 };
73 
85 template<class Circulator, class CenterEntityHandle>
86 void expose_circulator(const char *_name) {
87  class_<CirculatorWrapperT<Circulator, CenterEntityHandle> >(_name, init<TriMesh&, CenterEntityHandle>())
88  .def(init<PolyMesh&, CenterEntityHandle>())
92  ;
93 }
94 
95 } // namespace OpenMesh
96 } // namespace Python
97 
98 #endif
CirculatorWrapperT iter() const
Definition: Circulator.hh:47
CirculatorWrapperT(TriMesh &_mesh, CenterEntityHandle _center)
Definition: Circulator.hh:38
CirculatorWrapperT(PolyMesh &_mesh, CenterEntityHandle _center)
Definition: Circulator.hh:28
void expose_circulator(const char *_name)
Definition: Circulator.hh:86
Circulator::value_type next()
Definition: Circulator.hh:57