Helios++
Helios software for LiDAR simulations
PyDoubleVector.h
1 #pragma once
2 
3 #ifdef PYTHON_BINDING
4 
5 #include <PyHeliosUtils.h>
6 #include <vector>
7 
16 public:
17  // *** ATTRIBUTES *** //
18  // ******************** //
19  std::vector<double> *vec = nullptr;
20  bool release = true;
21 
22  // *** CONSTRUCTION / DESTRUCTION *** //
23  // ************************************ //
24  PyDoubleVector(std::vector<double> *vec) : vec(vec), release(false) {}
25  PyDoubleVector(std::vector<double> const vec){
26  this->vec = new std::vector<double>(vec);
27  release = true;
28  }
29  virtual ~PyDoubleVector(){if(release && vec != nullptr) free(vec);}
30 
31  // *** GETTERS and SETTERS *** //
32  // ***************************** //
33  double get(long _index){
34  size_t index = PyHeliosUtils::handlePythonIndex(_index, vec->size());
35  return (*vec)[index];
36  }
37  void set(long _index, double value){
38  size_t index = PyHeliosUtils::handlePythonIndex(_index, vec->size());
39  (*vec)[index] = value;
40  }
41  void insert(double value){vec->push_back(value);}
42  void erase(long _index){
43  size_t index = PyHeliosUtils::handlePythonIndex(_index, vec->size());
44  vec->erase(vec->begin() + index);
45  }
46  size_t length() {return vec->size();}
47 };
48 
49 #endif
static size_t handlePythonIndex(long _index, size_t n)
Translate received index from python, where negative values have a special meaning (i...
Definition: PyHeliosUtils.h:14
Wrapper for std::vector<double> class.
Definition: PyDoubleVector.h:15