data_types.h
Go to the documentation of this file.
1 
16 #ifndef DATA_TYPES_H
17 #define DATA_TYPES_H
18 
19 
33 class DataPointer {
34 protected:
37  public:
39  };
40 public:
41  // DataPointer& operator=(const DataPointer&) = delete;
42  // DataPointer(const DataPointer&) = delete;
43 
50  DataPointer(unsigned char* pointer, unsigned int size,
51  PrivateImplementation* private_impl = 0) :
52  m_pointer(pointer), m_size(size), m_private_impl(private_impl) {
53  }
54 
64  m_pointer = other.m_pointer;
65  m_size = other.m_size;
66  // take ownership of this value, other is a temporary and will deconstruct
68  other.m_private_impl = 0;
69  };
70 
76  m_pointer = other.m_pointer;
77  m_size = other.m_size;
78  // take ownership of this value, other is a temporary and will deconstruct
79  m_private_impl = other.m_private_impl;
80  other.m_private_impl = 0;
81  }
82 
85  if(m_private_impl != 0)
86  delete m_private_impl;
87  }
88 
90  inline bool valid() {
91  return m_size != 0;
92  }
93 
94  inline unsigned char* get_raw_pointer() const { return m_pointer; }
95 
96 protected:
97  unsigned char* m_pointer;
98  unsigned int m_size;
99 
100 private:
102 };
103 
104 
105 
106 template<typename T>
107 class SingleArray : public DataPointer {
108 public:
111  DataPointer(temp)
112  {
113  }
114 
116  DataPointer(temp)
117  {
118  }
119 
121  inline T& operator[](unsigned int i) const
122  {
123  return *(reinterpret_cast<T*>(m_pointer) + i);
124  }
125 
127  unsigned int size() {
128  return m_size / sizeof(T);
129  }
130 };
131 
132 
133 
134 template<typename T>
135 class TripleArray : public DataPointer {
136 public:
139  DataPointer(temp)
140  {
141  }
142 
144  DataPointer(temp)
145  {
146  }
147 
149  inline T* operator[](unsigned int i) const
150  {
151  return reinterpret_cast<T*>(m_pointer) + (i*3);
152  }
153 
155  unsigned int size() const {
156  return m_size / (3 * sizeof(T));
157  }
158 };
159 
160 
161 
162 template<typename T>
163 class SingleObject : public DataPointer {
164 public:
167  DataPointer(temp)
168  {
169  }
170 
172  DataPointer(temp)
173  {
174  }
175 
177  inline T& get() const
178  {
179  return *reinterpret_cast<T*>(m_pointer);
180  }
181 
183  unsigned int size() const {
184  return 1;
185  }
186 };
187 
188 
189 
194 template<typename T>
196 public:
199  unsigned int size = data.size();
200  m_array = new T*[size];
201  for(unsigned int i = 0; i < size; ++i)
202  m_array[i] = data[i];
203  }
204 
207  delete[] m_array;
208  }
209 
211  inline T** get() const { return m_array; }
212 private:
213  T** m_array;
214 };
215 
216 // TODO: naming, see scan.h
224 
225 #endif //DATA_TYPES_H
SingleObject::SingleObject
SingleObject(DataPointer &&temp)
Cast return-by-value temporary DataPointer to this type of object.
Definition: data_types.h:166
DataXYZFloat
TripleArray< float > DataXYZFloat
Definition: data_types.h:218
TripleArray::operator[]
T * operator[](unsigned int i) const
Represent the pointer as an array of T[3].
Definition: data_types.h:149
DataPointer::get_raw_pointer
unsigned char * get_raw_pointer() const
Definition: data_types.h:94
SingleArray
Definition: data_types.h:107
DataPointer::PrivateImplementation
Subclass for storing further members and attaching an overloadable dtor.
Definition: data_types.h:36
DataDeviation
SingleArray< float > DataDeviation
Definition: data_types.h:223
PointerArray::~PointerArray
~PointerArray()
Removes the temporary array on destruction (RAII)
Definition: data_types.h:206
SingleObject::get
T & get() const
Type-cast.
Definition: data_types.h:177
DataPointer::~DataPointer
~DataPointer()
Delete the private implementation with its derived dtor.
Definition: data_types.h:84
DataReflectance
SingleArray< float > DataReflectance
Definition: data_types.h:220
PointerArray::PointerArray
PointerArray(const TripleArray< T > &data)
Create a temporary array and fill it sequentially with pointers to points.
Definition: data_types.h:198
PointerArray::get
T ** get() const
Conversion operator to interface the TripleArray to a T** array.
Definition: data_types.h:211
SingleObject::SingleObject
SingleObject(SingleObject &&temp)
Definition: data_types.h:171
DataPointer::PrivateImplementation::~PrivateImplementation
virtual ~PrivateImplementation()
Definition: data_types.h:38
TripleArray::size
unsigned int size() const
The number of T[3] instances in this array.
Definition: data_types.h:155
DataPointer::DataPointer
DataPointer(DataPointer &&other)
Definition: data_types.h:75
SingleObject::size
unsigned int size() const
There is only one object in here.
Definition: data_types.h:183
SingleArray::size
unsigned int size()
The number of T instances in this array.
Definition: data_types.h:127
DataXYZ
TripleArray< double > DataXYZ
Definition: data_types.h:217
DataPointer::m_size
unsigned int m_size
Definition: data_types.h:98
DataPointer
Definition: data_types.h:33
DataRGB
TripleArray< unsigned char > DataRGB
Definition: data_types.h:219
DataPointer::DataPointer
DataPointer(unsigned char *pointer, unsigned int size, PrivateImplementation *private_impl=0)
Definition: data_types.h:50
DataPointer::valid
bool valid()
Indicator for nullpointer / no data contained if false.
Definition: data_types.h:90
SingleArray::SingleArray
SingleArray(SingleArray &&temp)
Definition: data_types.h:115
SingleArray::operator[]
T & operator[](unsigned int i) const
Represent the pointer as an array of T.
Definition: data_types.h:121
SingleObject
Definition: data_types.h:163
PointerArray
Definition: data_types.h:195
DataPointer::m_pointer
unsigned char * m_pointer
Definition: data_types.h:97
DataPointer::DataPointer
DataPointer(DataPointer &other)
Definition: data_types.h:63
SingleArray::SingleArray
SingleArray(DataPointer &&temp)
Cast return-by-value temporary DataPointer to this type of array.
Definition: data_types.h:110
DataType
SingleArray< int > DataType
Definition: data_types.h:222
DataPointer::m_private_impl
PrivateImplementation * m_private_impl
Definition: data_types.h:101
TripleArray::TripleArray
TripleArray(TripleArray &&temp)
Definition: data_types.h:143
DataAmplitude
SingleArray< float > DataAmplitude
Definition: data_types.h:221
PointerArray::m_array
T ** m_array
Definition: data_types.h:213
TripleArray
Definition: data_types.h:135
TripleArray::TripleArray
TripleArray(DataPointer &&temp)
Cast return-by-value temporary DataPointer to this type of array.
Definition: data_types.h:138


lvr2
Author(s): Thomas Wiemann , Sebastian Pütz , Alexander Mock , Lars Kiesow , Lukas Kalbertodt , Tristan Igelbrink , Johan M. von Behren , Dominik Feldschnieders , Alexander Löhr
autogenerated on Wed Mar 2 2022 00:37:23