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 
8 namespace pyhelios{
9 
18 public:
19  // *** ATTRIBUTES *** //
20  // ******************** //
21  std::vector<double> *vec = nullptr;
22  bool release = true;
23 
24  // *** CONSTRUCTION / DESTRUCTION *** //
25  // ************************************ //
26  PyDoubleVector(std::vector<double> *vec) : vec(vec), release(false) {}
27  PyDoubleVector(std::vector<double> const vec){
28  this->vec = new std::vector<double>(vec);
29  release = true;
30  }
31  virtual ~PyDoubleVector(){if(release && vec != nullptr) free(vec);}
32 
33  // *** GETTERS and SETTERS *** //
34  // ***************************** //
35  double get(long _index){
36  size_t index = PyHeliosUtils::handlePythonIndex(_index, vec->size());
37  return (*vec)[index];
38  }
39  void set(long _index, double value){
40  size_t index = PyHeliosUtils::handlePythonIndex(_index, vec->size());
41  (*vec)[index] = value;
42  }
43  void insert(double value){vec->push_back(value);}
44  void erase(long _index){
45  size_t index = PyHeliosUtils::handlePythonIndex(_index, vec->size());
46  vec->erase(vec->begin() + index);
47  }
48  size_t length() {return vec->size();}
49 };
50 
51 }
52 
53 #endif
Wrapper for std::vector<double> class.
Definition: PyDoubleVector.h:17
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:16