API Documentation
Loading...
Searching...
No Matches
TableColumnType.h
Go to the documentation of this file.
1/**--------------------------------------------------------------------------------------------
2Copyright (c) 2019, NDEVR LLC
3tyler.parke@ndevr.org
4 __ __ ____ _____ __ __ _______
5 | \ | | | __ \ | ___|\ \ / / | __ \
6 | \ | | | | \ \ | |___ \ \ / / | |__) |
7 | . \| | | |__/ / | |___ \ V / | _ /
8 | |\ |_|_____/__|_____|___\_/____| | \ \
9 |__| \__________________________________| \__\
10
11Subject to the terms of the Enterprise+ Agreement, NDEVR hereby grants
12Licensee a limited, non-exclusive, non-transferable, royalty-free license
13(without the right to sublicense) to use the API solely for the purpose of
14Licensee's internal development efforts to develop applications for which
15the API was provided.
16
17The above copyright notice and this permission notice shall be included in all
18copies or substantial portions of the Software.
19
20THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
21INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
22PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
23FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
24OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
25DEALINGS IN THE SOFTWARE.
26
27Library: Database
28File: TableColumnType
29Included in API: True
30Author(s): Tyler Parke
31 *-----------------------------------------------------------------------------------------**/
32#pragma once
33#if __clang__
34 #pragma clang diagnostic push
35 #pragma clang diagnostic ignored "-Woverloaded-virtual"
36#endif
37#include "DLLInfo.h"
38#include <NDEVR/TableColumn.h>
39#include <NDEVR/RGBColor.h>
40#include <NDEVR/Matrix.h>
41#include <NDEVR/TypeInfo.h>
42#include <NDEVR/BinaryFile.h>
43#include <NDEVR/String.h>
44#include <NDEVR/Compressor.h>
45namespace NDEVR
46{
47 template<class t_type>
49 {
50 public:
51
54 , m_buffer(1U, Constant<t_type>::NaN)
55 {
56 }
57 TableColumnBuffer(const String& label, const TypeInfo type, const t_type& default_value)
59 , m_buffer(1U, default_value)
60 {
61 }
64 , m_buffer(1U, Constant<t_type>::NaN)
65 {
66 m_buffer.addAll(buffer);
67 }
68 void insert(uint04 index) override
69 {
70 index += 1;
71 m_buffer.template addSpace<true>(index, 1U);
72 m_buffer[index] = defaultValue();
73 }
74
75 void setSize(uint04 size) override
76 {
77 size += 1;//add 1 for default value
78 uint04 old_size = m_buffer.size();
79 m_buffer.setSize(size);
80 if (old_size < size)
81 m_buffer.setAllToValue(defaultValue(), old_size, size - old_size);
82 }
83
84 virtual void copyRow(uint04 source, uint04 destination) override
85 {
86 m_buffer[destination + 1] = m_buffer[source + 1];
87 }
88 virtual void copyRows(uint04 source, uint04 destination, uint04 size) override
89 {
90 destination += 1;
91 source += 1;
92 if (destination < source)//prevent overlap
93 {
94 for (uint04 i = 0; i < size; i++)
95 m_buffer[destination + i] = m_buffer[source + i];
96 }
97 else
98 {
99 for (uint04 i = size - 1; !isNaN(i); i--)
100 m_buffer[destination + i] = m_buffer[source + i];
101 }
102 }
103 void removeRow(uint04 index) override
104 {
105 m_buffer.removeIndex(index + 1);
106 }
107 virtual void removeRows(uint04 index, uint04 size) override
108 {
109 index += 1;
110 m_buffer.removeAllIndex(index, index + size);
111 }
112 virtual void removeRows(const Buffer<uint04>& sorted_romove_indices) override
113 {
114 if (sorted_romove_indices.size() == 0)
115 return;
116 uint04 current_position = 1;
117 uint04 current_remove_index = 0;
118 for (uint04 i = 1; i < m_buffer.size(); i++)
119 {
120 if (current_remove_index >= sorted_romove_indices.size() || (i - 1) != sorted_romove_indices[current_remove_index])
121 {
122 m_buffer[current_position++] = m_buffer[i];
123 }
124 else
125 {
126 current_remove_index++;
127 }
128 }
129 lib_assert(current_remove_index == sorted_romove_indices.size() + 1, "Unexpected end remove value");
130 m_buffer.setSize(current_position);
131 }
132
133 void removeRows(uint04 offset, const Buffer<bool>& indices) override
134 {
135 offset += 1;
136 uint04 current_position = offset;
137 for (uint04 i = 0; i < indices.size(); i++)
138 {
139 if (!indices[i])
140 {
141 m_buffer[current_position] = m_buffer[offset + i];
142 current_position++;
143 }
144 }
145 uint04 removed_size = current_position;
146 for (uint04 i = offset + indices.size(); i < m_buffer.size(); i++)
147 {
148 m_buffer[current_position] = m_buffer[i];
149 current_position++;
150 }
151 m_buffer.setSize(m_buffer.size() - (indices.size() - (removed_size - offset)));
152 }
153 virtual void compress(BinaryCompressionObject& object) override
154 {
156 object.compression_mode = m_compression_mode;
158 m_compression_object = object;
159 m_compression_valid = true;
160 }
161 virtual void mapToFile(BinaryFile& file, int compression) override
162 {
163 _mapToFile(file, cast<CompressionMode>(compression));
164 }
165 virtual void mapToFile(BinaryFile& file, BinaryCompressionObject& object) override
166 {
167 _mapToFile(file, object);
168 }
169
170 virtual void mapFromFile(BinaryFile& file, uint08 version_number) override
171 {
172 if (version_number <= 1539350691)//versions <= 1539350691 had error in default value, so ignore
173 {
174 t_type default_value = defaultValue();
175 file.seek(file.position() + sizeof(t_type));
176 file.readNow(m_buffer);
177 m_buffer.add(0, default_value);
178 }
179 else if (version_number <= 1613942093)
180 {
181 Buffer<t_type> default_value_buffer;
182 file.readNow(default_value_buffer);
183 lib_assert(default_value_buffer.size() == 1, "Bad buffer read");
184 file.readNow(m_buffer);
185 m_buffer.add(0, default_value_buffer[0]);
186 }
187 else
188 {
189 file.read(m_buffer);
190 }
191 }
192 void* begin() override { lib_assert(!ObjectInfo<t_type>::Boolean, "Begin not supported for boolean"); return m_buffer.ptr() + 1; }
193 void* end() override { return ((uint01*)m_buffer.ptr()) + m_buffer.memSize(); }
194
195 const void* begin() const override { lib_assert(!ObjectInfo<t_type>::Boolean, "Begin not supported for boolean"); return m_buffer.ptr() + 1; }
196 const void* end() const override { return ((uint01*)m_buffer.ptr()) + m_buffer.memSize(); }
197
198 virtual void addRow() override
199 {
200 t_type value = defaultValue();
201 m_buffer.add(value);
202 }
203
204 virtual void insertRows(uint04 location, uint04 size) override
205 {
206 m_buffer.template addSpace<true>(location + 1U, size);
207 m_buffer.setAllToValue(defaultValue(), location + 1, size);
208 }
209 [[nodiscard]] bool isSame(uint04 index, const String& value) const override { return value == String(_value(index)); }
210 [[nodiscard]] bool isSame(uint04 index, const char* value) const override { return value == String(_value(index)); }
211 [[nodiscard]] bool contains(uint04 index, const String& value, bool ignore_case) const override { return String(_value(index)).hasSubString(value, ignore_case); }
212 [[nodiscard]] bool contains(uint04 index, const char* value, bool ignore_case) const override { return String(_value(index)).hasSubString(value, ignore_case); }
213 [[nodiscard]] bool beginsWith(uint04 index, const String& value, bool ignore_case) const override { return String(_value(index)).beginsWith(value, ignore_case); }
214 [[nodiscard]] bool beginsWith(uint04 index, const char* value, bool ignore_case) const override { return String(_value(index)).beginsWith(value, ignore_case); }
215 uint04 size() const override { return m_buffer.size() - 1; }
216 protected:
217
218 void _mapToFile(BinaryFile& file, CompressionMode compression)
219 {
220 file.write(m_buffer, compression);
221 }
223 {
224 file.writeCompression(object);
225 }
226 protected:
227 decltype(auto) _setDefaultValue(const t_type& value)
228 {
229 return m_buffer[0] = value;
230 }
231 decltype(auto) _value(uint04 index)
232 {
233 return isNaN(index) ? defaultValue() : m_buffer[index + 1];
234 }
235 decltype(auto) _value(uint04 index) const
236 {
237 return isNaN(index) ? defaultValue() : m_buffer[index + 1];
238 }
239 decltype(auto) defaultValue()
240 {
241 return m_buffer[0];
242 }
243 decltype(auto) defaultValue() const
244 {
245 return m_buffer[0];
246 }
249 };
250
251 template<uint01 t_dims, class t_type>
252 class TableVectorType : public TableColumnBuffer<Vector<t_dims, t_type>>
253 {
254 public:
256 : TableColumnBuffer<Vector<t_dims, t_type>>(label, GetTypeInfo<Vector<t_dims, t_type>>())
257 {}
258
260 : TableColumnBuffer<Vector<t_dims, t_type>>(buffer, label, GetTypeInfo<Vector<t_dims, t_type>>())
261 {}
262
263 virtual uint04 getRowSize(uint04) const override { return t_dims; };
264
265 void set(uint04 index, uint04 vector_pos, bool value) override { TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[cast<uint01>(vector_pos)] = cast<t_type>(value); };
266 void set(uint04 index, uint04 vector_pos, uint01 value) override { TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[cast<uint01>(vector_pos)] = cast<t_type>(value); };
267 void set(uint04 index, uint04 vector_pos, uint02 value) override { TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[cast<uint01>(vector_pos)] = cast<t_type>(value); };
268 void set(uint04 index, uint04 vector_pos, uint04 value) override { TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[cast<uint01>(vector_pos)] = cast<t_type>(value); };
269 void set(uint04 index, uint04 vector_pos, uint08 value) override { TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[cast<uint01>(vector_pos)] = cast<t_type>(value); };
270 void set(uint04 index, uint04 vector_pos, sint01 value) override { TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[cast<uint01>(vector_pos)] = cast<t_type>(value); };
271 void set(uint04 index, uint04 vector_pos, sint02 value) override { TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[cast<uint01>(vector_pos)] = cast<t_type>(value); };
272 void set(uint04 index, uint04 vector_pos, sint04 value) override { TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[cast<uint01>(vector_pos)] = cast<t_type>(value); };
273 void set(uint04 index, uint04 vector_pos, sint08 value) override { TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[cast<uint01>(vector_pos)] = cast<t_type>(value); };
274 void set(uint04 index, uint04 vector_pos, fltp04 value) override { TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[cast<uint01>(vector_pos)] = cast<t_type>(value); };
275 void set(uint04 index, uint04 vector_pos, fltp08 value) override { TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[cast<uint01>(vector_pos)] = cast<t_type>(value); };
276
277 void set(uint04 index, uint04 vector_pos, const String& value) override { TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[cast<uint01>(vector_pos)] = value.getAs<t_type>(); };
278
279 void set(uint04 index, bool value) override { TableColumnBuffer<Vector<t_dims, t_type>>::_value(index) = cast<t_type>(value); };
280 void set(uint04 index, uint01 value) override { TableColumnBuffer<Vector<t_dims, t_type>>::_value(index) = cast<t_type>(value); };
281 void set(uint04 index, uint02 value) override { TableColumnBuffer<Vector<t_dims, t_type>>::_value(index) = cast<t_type>(value); };
282 void set(uint04 index, uint04 value) override { TableColumnBuffer<Vector<t_dims, t_type>>::_value(index) = cast<t_type>(value); };
283 void set(uint04 index, uint08 value) override { TableColumnBuffer<Vector<t_dims, t_type>>::_value(index) = cast<t_type>(value); };
284 void set(uint04 index, sint01 value) override { TableColumnBuffer<Vector<t_dims, t_type>>::_value(index) = cast<t_type>(value); };
285 void set(uint04 index, sint02 value) override { TableColumnBuffer<Vector<t_dims, t_type>>::_value(index) = cast<t_type>(value); };
286 void set(uint04 index, sint04 value) override { TableColumnBuffer<Vector<t_dims, t_type>>::_value(index) = cast<t_type>(value); };
287 void set(uint04 index, sint08 value) override { TableColumnBuffer<Vector<t_dims, t_type>>::_value(index) = cast<t_type>(value); };
288 void set(uint04 index, fltp04 value) override { TableColumnBuffer<Vector<t_dims, t_type>>::_value(index) = cast<t_type>(value); };
289 void set(uint04 index, fltp08 value) override { TableColumnBuffer<Vector<t_dims, t_type>>::_value(index) = cast<t_type>(value); };
290 void set(uint04 index, const String& value) override { TableColumnBuffer<Vector<t_dims, t_type>>::_value(index) = value.getAs<Vector<t_dims, t_type>>(); };
291 void set(uint04 index, RGBColor value) override { TableColumnBuffer<Vector<t_dims, t_type>>::_value(index) = value.as<t_dims, t_type>(); };
292
293 void get(uint04 index, uint04 vector_pos, bool& value) const override { value = cast<bool>(TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[cast<uint01>(vector_pos)]); };
294 void get(uint04 index, uint04 vector_pos, uint01& value) const override { value = cast<uint01>(TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[cast<uint01>(vector_pos)]); };
295 void get(uint04 index, uint04 vector_pos, uint02& value) const override { value = cast<uint02>(TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[cast<uint01>(vector_pos)]); };
296 void get(uint04 index, uint04 vector_pos, uint04& value) const override { value = cast<uint04>(TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[cast<uint01>(vector_pos)]); };
297 void get(uint04 index, uint04 vector_pos, uint08& value) const override { value = cast<uint08>(TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[cast<uint01>(vector_pos)]); };
298 void get(uint04 index, uint04 vector_pos, sint01& value) const override { value = cast<sint01>(TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[cast<uint01>(vector_pos)]); };
299 void get(uint04 index, uint04 vector_pos, sint02& value) const override { value = cast<sint02>(TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[cast<uint01>(vector_pos)]); };
300 void get(uint04 index, uint04 vector_pos, sint04& value) const override { value = cast<sint04>(TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[cast<uint01>(vector_pos)]); };
301 void get(uint04 index, uint04 vector_pos, sint08& value) const override { value = cast<sint08>(TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[cast<uint01>(vector_pos)]); };
302 void get(uint04 index, uint04 vector_pos, fltp04& value) const override { value = cast<fltp04>(TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[cast<uint01>(vector_pos)]); };
303 void get(uint04 index, uint04 vector_pos, fltp08& value) const override { value = cast<fltp08>(TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[cast<uint01>(vector_pos)]); };
304 void get(uint04 index, uint04 vector_pos, String& value) const override { value = String(TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[cast<uint01>(vector_pos)]); };
305
306 void get(uint04 index, bool& value) const override { if constexpr (t_dims == 1) value = cast<bool>(TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[0]); else value = cast<bool>(TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[0]); };
307 void get(uint04 index, uint01& value) const override { if constexpr (t_dims == 1) value = cast<uint01>(TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[0]); else value = cast<uint01>(TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[0]); };
308 void get(uint04 index, uint02& value) const override { if constexpr (t_dims == 1) value = cast<uint02>(TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[0]); else value = cast<uint02>(TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[0]); };
309 void get(uint04 index, uint04& value) const override { if constexpr (t_dims == 1) value = cast<uint04>(TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[0]); else value = cast<uint04>(TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[0]); };
310 void get(uint04 index, uint08& value) const override { if constexpr (t_dims == 1) value = cast<uint08>(TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[0]); else value = cast<uint08>(TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[0]); };
311 void get(uint04 index, sint01& value) const override { if constexpr (t_dims == 1) value = cast<sint01>(TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[0]); else value = cast<sint01>(TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[0]); };
312 void get(uint04 index, sint02& value) const override { if constexpr (t_dims == 1) value = cast<sint02>(TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[0]); else value = cast<sint02>(TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[0]); };
313 void get(uint04 index, sint04& value) const override { if constexpr (t_dims == 1) value = cast<sint04>(TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[0]); else value = cast<sint04>(TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[0]); };
314 void get(uint04 index, sint08& value) const override { if constexpr (t_dims == 1) value = cast<sint08>(TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[0]); else value = cast<sint08>(TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[0]); };
315 void get(uint04 index, fltp04& value) const override { if constexpr (t_dims == 1) value = cast<fltp04>(TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[0]); else value = cast<fltp04>(TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[0]); };
316 void get(uint04 index, fltp08& value) const override { if constexpr (t_dims == 1) value = cast<fltp08>(TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[0]); else value = cast<fltp08>(TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)[0]); };
317 void get(uint04 index, String& value) const override { value = String(TableColumnBuffer<Vector<t_dims, t_type>>::_value(index)); };
318 void get(uint04 index, RGBColor& value) const override { value = RGBColor(TableColumnBuffer<Vector<t_dims, t_type>>::_value(index).template as<4, t_type>()); };
319
320 void getVector(uint04 index, Vector<3, fltp04>& vector) const override
321 {
322 vector = TableColumnBuffer<Vector<t_dims, t_type>>::_value(index).template as<3, fltp04>();
323 }
324
325 void getVector(uint04 index, Vector<3, fltp08>& vector) const override
326 {
327 vector = TableColumnBuffer<Vector<t_dims, t_type>>::_value(index).template as<3, fltp08>();
328 }
329
330 void getVector(uint04 index, Vector<3, uint04>& vector) const override
331 {
332 vector = TableColumnBuffer<Vector<t_dims, t_type>>::_value(index).template as<3, uint04>();
333 }
334
335 void getVector(uint04 index, Vector<2, uint04>& vector) const override
336 {
337 vector = TableColumnBuffer<Vector<t_dims, t_type>>::_value(index).template as<2, uint04>();
338 }
339 uint08 tableHash() const override
340 {
341 uint08 result = 2166136261U;
342 std::hash<t_type> hash;
344 {
345 for (uint01 i = 0; i < t_dims; i++)
346 result = (127 * result) + hash(v[i]);
347 }
348 return result;
349 }
350 TableVectorType<t_dims, t_type>* getSelected(const Buffer<bool>& selected_indices) const override
351 {
353 new_vector_array->setSize(selected_indices.count(true));
354 uint04 current_index = 1;
355 for (uint04 i = 0; i < selected_indices.size(); i++)
356 {
357 if (selected_indices[i])
358 {
359 new_vector_array->m_buffer[current_index++] = TableColumnBuffer<Vector<t_dims, t_type>>::m_buffer[i + 1];
360 }
361 }
362 return new_vector_array;
363 }
364
365 virtual void insertIndices(uint04 location, uint04 size) override
366 {
367 if (size == 0)
368 return;
370 for (uint04 i = 1; i < TableColumnBuffer<Vector<t_dims, t_type>>::m_buffer.size(); i++)
371 {
372 for (uint01 n = 0; n < t_dims; n++)
373 {
376 {
378 update_range.addToBounds(i);
379 }
380 }
381 }
382 if (update_range != Constant<Bounds<1, uint04>>::Min)
383 {
384 update_range -= 1U;
386 TableChange(TableChange::e_update, update_range[MIN], update_range.span()));
388 }
389 }
390 virtual void removeIndices(uint04 location, uint04 size) override
391 {
392 if (size == 0)
393 return;
395 for (uint04 i = 1; i < TableColumnBuffer<Vector<t_dims, t_type>>::m_buffer.size(); i++)
396 {
397 for (uint01 n = 0; n < t_dims; n++)
398 {
401 {
404 else
406 update_range.addToBounds(i);
407 }
408 }
409 }
410 if (update_range != Constant<Bounds<1, uint04>>::Min)
411 {
412 update_range -= 1U;
414 TableChange(TableChange::e_update, update_range[MIN], update_range.span()));
416 }
417 }
418 virtual void removeIndices(const Buffer<uint04>& offset_lookup_list) override
419 {
421 for (uint04 i = 1; i < TableColumnBuffer<Vector<t_dims, t_type>>::m_buffer.size(); i++)
422 {
423 for (uint01 n = 0; n < t_dims; n++)
424 {
426 {
427 uint04 new_index = offset_lookup_list[cast<uint04>(TableColumnBuffer<Vector<t_dims, t_type>>::m_buffer[i][n])];;
429 update_range.addToBounds(i);
430 }
431 }
432 }
433 if (update_range != Constant<Bounds<1, uint04>>::Min)
434 {
435 update_range -= 1U;
437 TableChange(TableChange::e_update, update_range[MIN], update_range.span()));
439 }
440 }
441
442 };
443
444 template<class t_type, uint01 t_cols, uint01 t_rows>
445 class TableMatrixType : public TableVectorType<t_cols* t_rows, t_type>
446 {
447 public:
449 : TableVectorType<t_cols* t_rows, t_type>(label)
450 {}
451
452 void set(uint04 index, const String& value) override
453 {
456 };
457 void get(uint04 index, String& value) const override
458 {
460 };
461 virtual void get(uint04 index, Matrix<fltp08>& transform) const override
462 {
465 transform = matrix.template as<fltp08, 4, 4>();
466 }
467 virtual void get(uint04 index, Matrix<fltp04>& transform) const override
468 {
471 transform = matrix.template as<fltp04, 4, 4>();
472 }
473 virtual void set(uint04 index, const Matrix<fltp08>& transform) override
474 {
475 Matrix<t_type, t_cols, t_rows> matrix = transform.as<t_type, t_cols, t_rows>();
477 }
478 virtual void set(uint04 index, const Matrix<fltp04>& transform) override
479 {
480 Matrix<t_type, t_cols, t_rows> matrix = transform.as<t_type, t_cols, t_rows>();
482 }
483 };
484
485
486 template<class t_type>
487 class TableVectorType<1, t_type> : public TableColumnBuffer<t_type>
488 {
489 public:
491 : TableColumnBuffer<t_type>(label, GetTypeInfo<t_type>())
492 {}
493
495 : TableColumnBuffer<t_type>(buffer, label, GetTypeInfo<t_type>())
496 {}
497
498 virtual uint04 getRowSize(uint04) const override { return 1; };
499
500 void set(uint04 index, uint04, bool value) override { TableColumnBuffer<t_type>::_value(index) = value; };
501 void set(uint04 index, uint04, uint01 value) override { TableColumnBuffer<t_type>::_value(index) = cast<t_type>(value); };
502 void set(uint04 index, uint04, uint02 value) override { TableColumnBuffer<t_type>::_value(index) = cast<t_type>(value); };
503 void set(uint04 index, uint04, uint04 value) override { TableColumnBuffer<t_type>::_value(index) = cast<t_type>(value); };
504 void set(uint04 index, uint04, uint08 value) override { TableColumnBuffer<t_type>::_value(index) = cast<t_type>(value); };
505 void set(uint04 index, uint04, sint01 value) override { TableColumnBuffer<t_type>::_value(index) = cast<t_type>(value); };
506 void set(uint04 index, uint04, sint02 value) override { TableColumnBuffer<t_type>::_value(index) = cast<t_type>(value); };
507 void set(uint04 index, uint04, sint04 value) override { TableColumnBuffer<t_type>::_value(index) = cast<t_type>(value); };
508 void set(uint04 index, uint04, sint08 value) override { TableColumnBuffer<t_type>::_value(index) = cast<t_type>(value); };
509 void set(uint04 index, uint04, fltp04 value) override { TableColumnBuffer<t_type>::_value(index) = cast<t_type>(value); };
510 void set(uint04 index, uint04, fltp08 value) override { TableColumnBuffer<t_type>::_value(index) = cast<t_type>(value); };
511
512 void set(uint04 index, uint04, const String& value) override { TableColumnBuffer<t_type>::_value(index) = value.getAs<t_type>(); };
513
514 void set(uint04 index, bool value) override { TableColumnBuffer<t_type>::_value(index) = value; };
515 void set(uint04 index, uint01 value) override { TableColumnBuffer<t_type>::_value(index) = cast<t_type>(value); };
516 void set(uint04 index, uint02 value) override { TableColumnBuffer<t_type>::_value(index) = cast<t_type>(value); };
517 void set(uint04 index, uint04 value) override { TableColumnBuffer<t_type>::_value(index) = cast<t_type>(value); };
518 void set(uint04 index, uint08 value) override { TableColumnBuffer<t_type>::_value(index) = cast<t_type>(value); };
519 void set(uint04 index, sint01 value) override { TableColumnBuffer<t_type>::_value(index) = cast<t_type>(value); };
520 void set(uint04 index, sint02 value) override { TableColumnBuffer<t_type>::_value(index) = cast<t_type>(value); };
521 void set(uint04 index, sint04 value) override { TableColumnBuffer<t_type>::_value(index) = cast<t_type>(value); };
522 void set(uint04 index, sint08 value) override { TableColumnBuffer<t_type>::_value(index) = cast<t_type>(value); };
523 void set(uint04 index, fltp04 value) override { TableColumnBuffer<t_type>::_value(index) = cast<t_type>(value); };
524 void set(uint04 index, fltp08 value) override { TableColumnBuffer<t_type>::_value(index) = cast<t_type>(value); };
525 void set(uint04 index, const String& value) override { TableColumnBuffer<t_type>::_value(index) = value.getAs<t_type>(); };
526 void set(uint04, RGBColor) override { /*TableColumnBuffer<t_type>::_value(index) = value.getAs<Vector<t_dims, t_type>>();*/ };
527
528 void get(uint04 index, uint04, bool& value) const override { value = cast<bool>(TableColumnBuffer<t_type>::_value(index)); };
529 void get(uint04 index, uint04, uint01& value) const override { value = cast<uint01>(TableColumnBuffer<t_type>::_value(index)); };
530 void get(uint04 index, uint04, uint02& value) const override { value = cast<uint02>(TableColumnBuffer<t_type>::_value(index)); };
531 void get(uint04 index, uint04, uint04& value) const override { value = cast<uint04>(TableColumnBuffer<t_type>::_value(index)); };
532 void get(uint04 index, uint04, uint08& value) const override { value = cast<uint08>(TableColumnBuffer<t_type>::_value(index)); };
533 void get(uint04 index, uint04, sint01& value) const override { value = cast<sint01>(TableColumnBuffer<t_type>::_value(index)); };
534 void get(uint04 index, uint04, sint02& value) const override { value = cast<sint02>(TableColumnBuffer<t_type>::_value(index)); };
535 void get(uint04 index, uint04, sint04& value) const override { value = cast<sint04>(TableColumnBuffer<t_type>::_value(index)); };
536 void get(uint04 index, uint04, sint08& value) const override { value = cast<sint08>(TableColumnBuffer<t_type>::_value(index)); };
537 void get(uint04 index, uint04, fltp04& value) const override { value = cast<fltp04>(TableColumnBuffer<t_type>::_value(index)); };
538 void get(uint04 index, uint04, fltp08& value) const override { value = cast<fltp08>(TableColumnBuffer<t_type>::_value(index)); };
539 void get(uint04 index, uint04, String& value) const override { value = String(TableColumnBuffer<t_type>::_value(index)); };
540
541 void get(uint04 index, bool& value) const override { value = TableColumnBuffer<t_type>::_value(index); };
542 void get(uint04 index, uint01& value) const override { value = cast<uint01>(TableColumnBuffer<t_type>::_value(index)); };
543 void get(uint04 index, uint02& value) const override { value = cast<uint02>(TableColumnBuffer<t_type>::_value(index)); };
544 void get(uint04 index, uint04& value) const override { value = cast<uint04>(TableColumnBuffer<t_type>::_value(index)); };
545 void get(uint04 index, uint08& value) const override { value = cast<uint08>(TableColumnBuffer<t_type>::_value(index)); };
546 void get(uint04 index, sint01& value) const override { value = cast<sint01>(TableColumnBuffer<t_type>::_value(index)); };
547 void get(uint04 index, sint02& value) const override { value = cast<sint02>(TableColumnBuffer<t_type>::_value(index)); };
548 void get(uint04 index, sint04& value) const override { value = cast<sint04>(TableColumnBuffer<t_type>::_value(index)); };
549 void get(uint04 index, sint08& value) const override { value = cast<sint08>(TableColumnBuffer<t_type>::_value(index)); };
550 void get(uint04 index, fltp04& value) const override { value = cast<fltp04>(TableColumnBuffer<t_type>::_value(index)); };
551 void get(uint04 index, fltp08& value) const override { value = cast<fltp08>(TableColumnBuffer<t_type>::_value(index)); };
552 void get(uint04 index, String& value) const override { value = String(TableColumnBuffer<t_type>::_value(index)); };
553 void get(uint04, RGBColor&) const override { /*value = RGBColor(m_buffer[index].getAs<4, t_type>());*/ };
554 TableVectorType<1, t_type>* getSelected(const Buffer<bool>& selected_indices) const override
555 {
557 new_vector_array->setSize(selected_indices.count(true));
558 uint04 current_index = 1;
559 for (uint04 i = 0; i < selected_indices.size(); i++)
560 {
561 if (selected_indices[i])
562 {
563 new_vector_array->m_buffer[current_index++] = TableColumnBuffer<t_type>::m_buffer[i + 1];
564 }
565 }
566 return new_vector_array;
567 }
568 virtual void insertIndices(uint04 location, uint04 size) override
569 {
570 this->template _insertIndices<t_type>(location, size);
571 }
572 virtual void removeIndices(uint04 location, uint04 size) override
573 {
574 this->template _removeIndices<t_type>(location, size);
575 }
576 virtual void removeIndices(const Buffer<uint04>& offset_lookup_list) override
577 {
578 this->template _removeIndices<t_type>(offset_lookup_list);
579 }
580 protected:
581 template<class t_n_type>
583 {
584 if (size == 0)
585 return;
587 for (uint04 i = 1; i < TableColumnBuffer<t_type>::m_buffer.size(); i++)
588 {
590 uint04 value = cast<uint04>(it);
591 if (value >= location && !isNaN(value))
592 {
593 it += cast<t_type>(size);
594 update_range.addToBounds(i);
595 }
596 }
597 if (update_range != Constant<Bounds<1, uint04>>::Min)
598 {
599 update_range -= 1U;
601 TableChange(TableChange::e_update, update_range[MIN], update_range.span()));
603 }
604 }
605 template<class t_n_type>
607 UNUSED(location);
608 UNUSED(size);
609 };
610
611 template<class t_n_type>
613 {
614 if (size == 0)
615 return;
617 for (uint04 i = 1; i < TableColumnBuffer<t_type>::m_buffer.size(); i++)
618 {
620 {
623 else
625 update_range.addToBounds(i);
626 }
627 }
628 if (update_range != Constant<Bounds<1, uint04>>::Min)
629 {
630 update_range -= 1U;
632 TableChange(TableChange::e_update, update_range[MIN], update_range.span()));
634 }
635 }
636 template<class t_n_type>
638
639 template<class t_n_type>
640 void _removeIndices(typename std::enable_if<ObjectInfo<t_n_type>::Number, const Buffer<uint04>&>::type offset_lookup_list)
641 {
643 for (uint04 i = 1; i < TableColumnBuffer<t_type>::m_buffer.size(); i++)
644 {
646 {
647 uint04 value = offset_lookup_list[cast<uint04>(TableColumnBuffer<t_type>::m_buffer[i])];
649 {
651 update_range.addToBounds(i);
652 }
653 }
654 }
655 if (update_range != Constant<Bounds<1, uint04>>::Min)
656 {
657 update_range -= 1U;
659 TableChange(TableChange::e_update, update_range[MIN], update_range.span()));
661 }
662 }
663
664 template<class t_n_type>
665 void _removeIndices(typename std::enable_if<!ObjectInfo<t_n_type>::Number, const Buffer<uint04>&>::type offset_lookup_list) {UNUSED(offset_lookup_list);}
666
667 };
668
669 template<>
670 class TableVectorType<1, UUID> : public TableVectorType<16, uint01>
671 {
672 public:
678 {
679 UNUSED(type);//We already know the type
680 }
681 void get(uint04, bool& value) const override { value = false; };
682 void set(uint04 index, bool value) override { TableVectorType<16, uint01>::_value(index) = UUID(0).appendUUID(value); };
683 void set(uint04 index, uint01 value) override { TableVectorType<16, uint01>::_value(index) = UUID(0).appendUUID(value); };
684 void set(uint04 index, uint02 value) override { TableVectorType<16, uint01>::_value(index) = UUID(0).appendUUID(value); };
685 void set(uint04 index, uint04 value) override { TableVectorType<16, uint01>::_value(index) = UUID(0).appendUUID(value); };
686 void set(uint04 index, uint08 value) override { TableVectorType<16, uint01>::_value(index) = UUID(0).appendUUID(value); };
687 void set(uint04 index, sint01 value) override { TableVectorType<16, uint01>::_value(index) = UUID(0).appendUUID(value); };
688 void set(uint04 index, sint02 value) override { TableVectorType<16, uint01>::_value(index) = UUID(0).appendUUID(value); };
689 void set(uint04 index, sint04 value) override { TableVectorType<16, uint01>::_value(index) = UUID(0).appendUUID(value); };
690 void set(uint04 index, sint08 value) override { TableVectorType<16, uint01>::_value(index) = UUID(0).appendUUID(value); };
691 void set(uint04 index, fltp04 value) override { TableVectorType<16, uint01>::_value(index) = UUID(0).appendUUID(value); };
692 void set(uint04 index, fltp08 value) override { TableVectorType<16, uint01>::_value(index) = UUID(0).appendUUID(value); };
693 void set(uint04 index, RGBColor value) override { UNUSED(index); UNUSED(value);/*TableColumnBuffer<t_type>::_value(index) = value.getAs<Vector<t_dims, t_type>>();*/ };
694 void set(uint04 index, const String& value) override { TableVectorType<16, uint01>::_value(index) = value.getAs<UUID>(); };
695 void get(uint04 index, String& value) const override { value = String(UUID(TableVectorType<16, uint01>::_value(index))); };
696 virtual void set(uint04 index, const UUID& value) final override
697 {
699 }
700 virtual void get(uint04 index, UUID& id) const final override
701 {
703 }
704 decltype(auto) _value(uint04 index)
705 {
706 return isNaN(index) ? defaultValue() : m_buffer[index + 1];
707 }
708 decltype(auto) _value(uint04 index) const
709 {
710 return isNaN(index) ? defaultValue() : m_buffer[index + 1];
711 }
712 };
713 template<class t_type>
714 class TableColumnTypeBuffer : public TableColumnBuffer<Buffer<t_type>>
715 {
716 public:
720
721 void set(uint04 index, uint04 vector_pos, bool value) override { TableColumnBuffer<Buffer<t_type>>::_value(index)[vector_pos] = cast<t_type>(value); };
722 void set(uint04 index, uint04 vector_pos, uint01 value) override { TableColumnBuffer<Buffer<t_type>>::_value(index)[vector_pos] = cast<t_type>(value); };
723 void set(uint04 index, uint04 vector_pos, uint02 value) override { TableColumnBuffer<Buffer<t_type>>::_value(index)[vector_pos] = cast<t_type>(value); };
724 void set(uint04 index, uint04 vector_pos, uint04 value) override { TableColumnBuffer<Buffer<t_type>>::_value(index)[vector_pos] = cast<t_type>(value); };
725 void set(uint04 index, uint04 vector_pos, uint08 value) override { TableColumnBuffer<Buffer<t_type>>::_value(index)[vector_pos] = cast<t_type>(value); };
726 void set(uint04 index, uint04 vector_pos, sint01 value) override { TableColumnBuffer<Buffer<t_type>>::_value(index)[vector_pos] = cast<t_type>(value); };
727 void set(uint04 index, uint04 vector_pos, sint02 value) override { TableColumnBuffer<Buffer<t_type>>::_value(index)[vector_pos] = cast<t_type>(value); };
728 void set(uint04 index, uint04 vector_pos, sint04 value) override { TableColumnBuffer<Buffer<t_type>>::_value(index)[vector_pos] = cast<t_type>(value); };
729 void set(uint04 index, uint04 vector_pos, sint08 value) override { TableColumnBuffer<Buffer<t_type>>::_value(index)[vector_pos] = cast<t_type>(value); };
730 void set(uint04 index, uint04 vector_pos, fltp04 value) override { TableColumnBuffer<Buffer<t_type>>::_value(index)[vector_pos] = cast<t_type>(value); };
731 void set(uint04 index, uint04 vector_pos, fltp08 value) override { TableColumnBuffer<Buffer<t_type>>::_value(index)[vector_pos] = cast<t_type>(value); };
732
733 void set(uint04 index, uint04 vector_pos, const String& value) override { UNUSED(index); UNUSED(vector_pos); UNUSED(value);/*TableColumnBuffer<Buffer<t_type>>::_value(index)[vector_pos] = value.getAs<t_type>();*/ };
734
735 void set(uint04 index, bool value) override { TableColumnBuffer<Buffer<t_type>>::_value(index).setAllToValue(cast<t_type>(value)); };
736 void set(uint04 index, uint01 value) override { TableColumnBuffer<Buffer<t_type>>::_value(index).setAllToValue(cast<t_type>(value)); };
737 void set(uint04 index, uint02 value) override { TableColumnBuffer<Buffer<t_type>>::_value(index).setAllToValue(cast<t_type>(value)); };
738 void set(uint04 index, uint04 value) override { TableColumnBuffer<Buffer<t_type>>::_value(index).setAllToValue(cast<t_type>(value)); };
739 void set(uint04 index, uint08 value) override { TableColumnBuffer<Buffer<t_type>>::_value(index).setAllToValue(cast<t_type>(value)); };
740 void set(uint04 index, sint01 value) override { TableColumnBuffer<Buffer<t_type>>::_value(index).setAllToValue(cast<t_type>(value)); };
741 void set(uint04 index, sint02 value) override { TableColumnBuffer<Buffer<t_type>>::_value(index).setAllToValue(cast<t_type>(value)); };
742 void set(uint04 index, sint04 value) override { TableColumnBuffer<Buffer<t_type>>::_value(index).setAllToValue(cast<t_type>(value)); };
743 void set(uint04 index, sint08 value) override { TableColumnBuffer<Buffer<t_type>>::_value(index).setAllToValue(cast<t_type>(value)); };
744 void set(uint04 index, fltp04 value) override { TableColumnBuffer<Buffer<t_type>>::_value(index).setAllToValue(cast<t_type>(value)); };
745 void set(uint04 index, fltp08 value) override { TableColumnBuffer<Buffer<t_type>>::_value(index).setAllToValue(cast<t_type>(value)); };
746 void set(uint04 index, const String& value) override { UNUSED(index); UNUSED(value);/*TableColumnBuffer<Buffer<t_type>>::_value(index).setAllToValue(value.getAs<Vector<t_dims, t_type>>());*/ };
747 void set(uint04 index, RGBColor value) override { UNUSED(index); UNUSED(value);/*TableColumnBuffer<Buffer<t_type>>::_value(index).setAllToValue(value.getAs<t_dims, t_type>());*/ };
748
749 void get(uint04 index, uint04 vector_pos, bool& value) const override { value = cast<bool>(TableColumnBuffer<Buffer<t_type>>::_value(index)[vector_pos]); };
750 void get(uint04 index, uint04 vector_pos, uint01& value) const override { value = cast<uint01>(TableColumnBuffer<Buffer<t_type>>::_value(index)[vector_pos]); };
751 void get(uint04 index, uint04 vector_pos, uint02& value) const override { value = cast<uint02>(TableColumnBuffer<Buffer<t_type>>::_value(index)[vector_pos]); };
752 void get(uint04 index, uint04 vector_pos, uint04& value) const override { value = cast<uint04>(TableColumnBuffer<Buffer<t_type>>::_value(index)[vector_pos]); };
753 void get(uint04 index, uint04 vector_pos, uint08& value) const override { value = cast<uint08>(TableColumnBuffer<Buffer<t_type>>::_value(index)[vector_pos]); };
754 void get(uint04 index, uint04 vector_pos, sint01& value) const override { value = cast<sint01>(TableColumnBuffer<Buffer<t_type>>::_value(index)[vector_pos]); };
755 void get(uint04 index, uint04 vector_pos, sint02& value) const override { value = cast<sint02>(TableColumnBuffer<Buffer<t_type>>::_value(index)[vector_pos]); };
756 void get(uint04 index, uint04 vector_pos, sint04& value) const override { value = cast<sint04>(TableColumnBuffer<Buffer<t_type>>::_value(index)[vector_pos]); };
757 void get(uint04 index, uint04 vector_pos, sint08& value) const override { value = cast<sint08>(TableColumnBuffer<Buffer<t_type>>::_value(index)[vector_pos]); };
758 void get(uint04 index, uint04 vector_pos, fltp04& value) const override { value = cast<fltp04>(TableColumnBuffer<Buffer<t_type>>::_value(index)[vector_pos]); };
759 void get(uint04 index, uint04 vector_pos, fltp08& value) const override { value = cast<fltp08>(TableColumnBuffer<Buffer<t_type>>::_value(index)[vector_pos]); };
760 void get(uint04 index, uint04 vector_pos, String& value) const override { UNUSED(index); UNUSED(vector_pos); UNUSED(value);/*value = String(TableColumnBuffer<Buffer<t_type>>::_value(index)[vector_pos]);*/ };
761
762
763 void get(uint04 index, bool& value) const override { value = cast<bool>(TableColumnBuffer<Buffer<t_type>>::_value(index).last()); };
764 void get(uint04 index, uint01& value) const override { value = cast<uint01>(TableColumnBuffer<Buffer<t_type>>::_value(index).last()); };
765 void get(uint04 index, uint02& value) const override { value = cast<uint02>(TableColumnBuffer<Buffer<t_type>>::_value(index).last()); };
766 void get(uint04 index, uint04& value) const override { value = cast<uint04>(TableColumnBuffer<Buffer<t_type>>::_value(index).last()); };
767 void get(uint04 index, uint08& value) const override { value = cast<uint08>(TableColumnBuffer<Buffer<t_type>>::_value(index).last()); };
768 void get(uint04 index, sint01& value) const override { value = cast<sint01>(TableColumnBuffer<Buffer<t_type>>::_value(index).last()); };
769 void get(uint04 index, sint02& value) const override { value = cast<sint02>(TableColumnBuffer<Buffer<t_type>>::_value(index).last()); };
770 void get(uint04 index, sint04& value) const override { value = cast<sint04>(TableColumnBuffer<Buffer<t_type>>::_value(index).last()); };
771 void get(uint04 index, sint08& value) const override { value = cast<sint08>(TableColumnBuffer<Buffer<t_type>>::_value(index).last()); };
772 void get(uint04 index, fltp04& value) const override { value = cast<fltp04>(TableColumnBuffer<Buffer<t_type>>::_value(index).last()); };
773 void get(uint04 index, fltp08& value) const override { value = cast<fltp08>(TableColumnBuffer<Buffer<t_type>>::_value(index).last()); };
774 void get(uint04 index, String& value) const override { UNUSED(index); UNUSED(value);/*value = String(TableColumnBuffer<Buffer<t_type>>::_value(index));*/ };
775 void get(uint04 index, RGBColor& value) const override { UNUSED(index); UNUSED(value);/*value = RGBColor(m_buffer[index].last());*/ };
776 virtual void insertIndices(uint04 location, uint04 size) override
777 {
778 this->template _insertIndices<t_type>(location, size);
779 }
780 virtual void removeIndices(uint04 location, uint04 size) override
781 {
782 this->template _removeIndices<t_type>(location, size);
783 }
784 virtual void removeIndices(const Buffer<uint04>& offset_lookup_list) override
785 {
786 this->template _removeIndices<t_type>(offset_lookup_list);
787 }
788 uint08 tableHash() const override
789 {
790 uint08 result = 2166136261U;
791 std::hash<t_type> hash;
793 {
794 for(uint04 i = 0; i < b.size(); i++)
795 result = (127 * result) + hash(b[i]);
796 }
797 return result;
798 }
800 uint04 getRowSize(uint04 index) const override { return TableColumnBuffer<Buffer<t_type>>::m_buffer[index + 1].size(); };
801 TableColumnTypeBuffer<t_type>* getSelected(const Buffer<bool>& selected_indices) const override { UNUSED(selected_indices); return nullptr; };
802 protected:
803 template<class t_n_type>
804 void _insertIndices(uint04 location, typename std::enable_if<ObjectInfo<t_n_type>::Number, uint04>::type size)
805 {
806 if (size == 0)
807 return;
809 for (uint04 i = 1; i < TableColumnBuffer<Buffer<t_type>>::m_buffer.size(); i++)
810 {
811 for (uint04 n = 0; n < TableColumnBuffer<Buffer<t_type>>::m_buffer[i].size(); n++)
812 {
815 {
817 update_range.addToBounds(i);
818 }
819 }
820 }
821 if (update_range != Constant<Bounds<1, uint04>>::Min)
822 {
823 update_range -= 1U;
825 TableChange(TableChange::e_update, update_range[MIN], update_range.span()));
827 }
828 }
829 template<class t_n_type>
830 void _insertIndices(uint04 location, typename std::enable_if<!ObjectInfo<t_n_type>::Number, uint04>::type size) { UNUSED(location); UNUSED(size); }
831
832 template<class t_n_type>
833 void _removeIndices(uint04 location, typename std::enable_if<ObjectInfo<t_n_type>::Number, uint04>::type size)
834 {
835 if (size == 0)
836 return;
838 for (uint04 i = 1; i < TableColumnBuffer<Buffer<t_type>>::m_buffer.size(); i++)
839 {
840 for (uint04 n = TableColumnBuffer<Buffer<t_type>>::m_buffer[i].size() - 1; !isNaN(n); --n)
841 {
843 {
846 else
848 update_range.addToBounds(i);
849 }
850 }
851 }
852 if (update_range != Constant<Bounds<1, uint04>>::Min)
853 {
854 update_range -= 1U;
856 TableChange(TableChange::e_update, update_range[MIN], update_range.span()));
858 }
859 }
860
861 template<class t_n_type>
862 void _removeIndices(uint04 location, typename std::enable_if<!ObjectInfo<t_n_type>::Number, uint04>::type size)
863 {
864 UNUSED(location);
865 UNUSED(size);
866 }
867
868 template<class t_n_type>
869 void _removeIndices(typename std::enable_if<ObjectInfo<t_n_type>::Number, const Buffer<uint04>&>::type offset_lookup_list)
870 {
872 for (uint04 i = 1; i < TableColumnBuffer<Buffer<t_type>>::m_buffer.size(); i++)
873 {
874 for (uint04 n = TableColumnBuffer<Buffer<t_type>>::m_buffer[i].size() - 1; !isNaN(n); --n)
875 {
877 {
878 uint04 value = offset_lookup_list[cast<uint04>(TableColumnBuffer<Buffer<t_type>>::m_buffer[i][n])];
879 if (isNaN(value))
880 {
882 update_range.addToBounds(i);
883 }
885 {
887 update_range.addToBounds(i);
888 }
889 }
890 }
891 }
892 if (update_range != Constant<Bounds<1, uint04>>::Min)
893 {
894 update_range -= 1U;
896 TableChange(TableChange::e_update, update_range[MIN], update_range.span()));
898 }
899 }
900
901 template<class t_n_type>
902 void _removeIndices(typename std::enable_if<!ObjectInfo<t_n_type>::Number, const Buffer<uint04>&>::type offset_lookup_list)
903 {
904 UNUSED(offset_lookup_list);
905 }
906 };
907
908
910 {
911 public:
914 {}
915
916 void removeRows(uint04 offset, const Buffer<bool>& indices) override { UNUSED(offset); UNUSED(indices);};
917 void set(uint04 index, uint04 vector_pos, bool value) override { TableColumnBuffer<String>::_value(index).insert(vector_pos, String(value)); };
918 void set(uint04 index, uint04 vector_pos, uint01 value) override { TableColumnBuffer<String>::_value(index).insert(vector_pos, String(value)); };
919 void set(uint04 index, uint04 vector_pos, uint02 value) override { TableColumnBuffer<String>::_value(index).insert(vector_pos, String(value)); };
920 void set(uint04 index, uint04 vector_pos, uint04 value) override { TableColumnBuffer<String>::_value(index).insert(vector_pos, String(value)); };
921 void set(uint04 index, uint04 vector_pos, uint08 value) override { TableColumnBuffer<String>::_value(index).insert(vector_pos, String(value)); };
922 void set(uint04 index, uint04 vector_pos, sint01 value) override { TableColumnBuffer<String>::_value(index).insert(vector_pos, String(value)); };
923 void set(uint04 index, uint04 vector_pos, sint02 value) override { TableColumnBuffer<String>::_value(index).insert(vector_pos, String(value)); };
924 void set(uint04 index, uint04 vector_pos, sint04 value) override { TableColumnBuffer<String>::_value(index).insert(vector_pos, String(value)); };
925 void set(uint04 index, uint04 vector_pos, sint08 value) override { TableColumnBuffer<String>::_value(index).insert(vector_pos, String(value)); };
926 void set(uint04 index, uint04 vector_pos, fltp04 value) override { TableColumnBuffer<String>::_value(index).insert(vector_pos, String(value)); };
927 void set(uint04 index, uint04 vector_pos, fltp08 value) override { TableColumnBuffer<String>::_value(index).insert(vector_pos, String(value)); };
928
929 void set(uint04 index, uint04 vector_pos, const String& value) override { TableColumnBuffer<String>::_value(index).insert(vector_pos, value); };
930
931 void set(uint04 index, bool value) override { TableColumnBuffer<String>::_value(index) = String(value); };
932 void set(uint04 index, uint01 value) override { TableColumnBuffer<String>::_value(index) = String(value); };
933 void set(uint04 index, uint02 value) override { TableColumnBuffer<String>::_value(index) = String(value); };
934 void set(uint04 index, uint04 value) override { TableColumnBuffer<String>::_value(index) = String(value); };
935 void set(uint04 index, uint08 value) override { TableColumnBuffer<String>::_value(index) = String(value); };
936 void set(uint04 index, sint01 value) override { TableColumnBuffer<String>::_value(index) = String(value); };
937 void set(uint04 index, sint02 value) override { TableColumnBuffer<String>::_value(index) = String(value); };
938 void set(uint04 index, sint04 value) override { TableColumnBuffer<String>::_value(index) = String(value); };
939 void set(uint04 index, sint08 value) override { TableColumnBuffer<String>::_value(index) = String(value); };
940 void set(uint04 index, fltp04 value) override { TableColumnBuffer<String>::_value(index) = String(value); };
941 void set(uint04 index, fltp08 value) override { TableColumnBuffer<String>::_value(index) = String(value); };
942 void set(uint04 index, const String& value) override { TableColumnBuffer<String>::_value(index) = value; };
943 void set(uint04 index, RGBColor value) override { TableColumnBuffer<String>::_value(index) = String(value); };
944
945 void get(uint04 index, uint04 vector_pos, bool& value) const override { value = String(&TableColumnBuffer<String>::_value(index)[vector_pos]).getAs<bool>(); };
946 void get(uint04 index, uint04 vector_pos, uint01& value) const override { value = String(&TableColumnBuffer<String>::_value(index)[vector_pos]).getAs<uint01>(); };
947 void get(uint04 index, uint04 vector_pos, uint02& value) const override { value = String(&TableColumnBuffer<String>::_value(index)[vector_pos]).getAs<uint02>(); };
948 void get(uint04 index, uint04 vector_pos, uint04& value) const override { value = String(&TableColumnBuffer<String>::_value(index)[vector_pos]).getAs<uint04>(); };
949 void get(uint04 index, uint04 vector_pos, uint08& value) const override { value = String(&TableColumnBuffer<String>::_value(index)[vector_pos]).getAs<uint08>(); };
950 void get(uint04 index, uint04 vector_pos, sint01& value) const override { value = String(&TableColumnBuffer<String>::_value(index)[vector_pos]).getAs<uint01>(); };
951 void get(uint04 index, uint04 vector_pos, sint02& value) const override { value = String(&TableColumnBuffer<String>::_value(index)[vector_pos]).getAs<sint02>(); };
952 void get(uint04 index, uint04 vector_pos, sint04& value) const override { value = String(&TableColumnBuffer<String>::_value(index)[vector_pos]).getAs<sint04>(); };
953 void get(uint04 index, uint04 vector_pos, sint08& value) const override { value = String(&TableColumnBuffer<String>::_value(index)[vector_pos]).getAs<sint08>(); };
954 void get(uint04 index, uint04 vector_pos, fltp04& value) const override { value = String(&TableColumnBuffer<String>::_value(index)[vector_pos]).getAs<fltp04>(); };
955 void get(uint04 index, uint04 vector_pos, fltp08& value) const override { value = String(&TableColumnBuffer<String>::_value(index)[vector_pos]).getAs<fltp08>(); };
956 void get(uint04 index, uint04 vector_pos, String& value) const override { value = String(&TableColumnBuffer<String>::_value(index)[vector_pos]); };
957
958 void get(uint04 index, bool& value) const override { value = TableColumnBuffer<String>::_value(index).getAs<bool>(); };
959 void get(uint04 index, uint01& value) const override { value = TableColumnBuffer<String>::_value(index).getAs<uint01>(); };
960 void get(uint04 index, uint02& value) const override { value = TableColumnBuffer<String>::_value(index).getAs<uint02>(); };
961 void get(uint04 index, uint04& value) const override { value = TableColumnBuffer<String>::_value(index).getAs<uint04>(); };
962 void get(uint04 index, uint08& value) const override { value = TableColumnBuffer<String>::_value(index).getAs<uint08>(); };
963 void get(uint04 index, sint01& value) const override { value = TableColumnBuffer<String>::_value(index).getAs<sint01>(); };
964 void get(uint04 index, sint02& value) const override { value = TableColumnBuffer<String>::_value(index).getAs<sint02>(); };
965 void get(uint04 index, sint04& value) const override { value = TableColumnBuffer<String>::_value(index).getAs<sint04>(); };
966 void get(uint04 index, sint08& value) const override { value = TableColumnBuffer<String>::_value(index).getAs<sint08>(); };
967 void get(uint04 index, fltp04& value) const override { value = TableColumnBuffer<String>::_value(index).getAs<fltp04>(); };
968 void get(uint04 index, fltp08& value) const override { value = TableColumnBuffer<String>::_value(index).getAs<fltp08>(); };
969 void get(uint04 index, String& value) const override { value = TableColumnBuffer<String>::_value(index); };
970 void get(uint04 index, RGBColor& value) const override { value = TableColumnBuffer<String>::_value(index).getAs<RGBColor>(); };
971
972 TableColumnString* getSelected(const Buffer<bool>& selected_indices) const override { UNUSED(selected_indices); return nullptr; };
973 virtual void insertIndices(uint04 location, uint04 size) override
974 {
976 for (uint04 i = 1; i < m_buffer.size(); i++)
977 {
978 uint04 value = m_buffer[i].getAs<uint04>();
979 if (!isNaN(value) && value >= location)
980 {
981 m_buffer[i] = String(value + size);
982 update_range.addToBounds(i);
983 }
984 }
985 if (update_range != Constant<Bounds<1, uint04>>::Min)
986 {
987 update_range -= 1U;
988 m_changes.add(TableChange(TableChange::e_update, update_range[MIN], update_range.span()));
989 m_modified_time = Time::SystemTime();
990 }
991 }
992 uint08 tableHash() const override
993 {
994 uint08 result = 2166136261U;
995 for (const String& s : m_buffer)
996 result = (127 * result) ^ s.hash();
997 return result;
998 }
999 virtual void removeIndices(uint04 location, uint04 size) override
1000 {
1001 if (size == 0)
1002 return;
1003 Bounds<1, uint04> update_range = Constant<Bounds<1, uint04>>::Min;
1004 for (uint04 i = 1; i < m_buffer.size(); i++)
1005 {
1006 uint04 value = m_buffer[i].getAs<uint04>();
1007 if (!isNaN(value) && value > location)
1008 {
1009 if (value < location + size)
1010 m_buffer[i] = "NaN";
1011 else
1012 m_buffer[i] = String(value -= size);
1013 update_range.addToBounds(i);
1014 }
1015 }
1016 if (update_range != Constant<Bounds<1, uint04>>::Min)
1017 {
1018 update_range -= 1U;
1019 m_changes.add(TableChange(TableChange::e_update, update_range[MIN], update_range.span()));
1020 m_modified_time = Time::SystemTime();
1021 }
1022 }
1023 virtual void removeIndices(const Buffer<uint04>& offset_lookup_list) override
1024 {
1025 UNUSED(offset_lookup_list);
1026 lib_assert(false, "Not yet implemented");
1027 }
1028
1029 virtual void mapFromFile(BinaryFile& file, uint08 version_number) override
1030 {
1031 if (version_number >= 1614203273)//versions <= 1539350691 had error in default value, so ignore
1032 {
1033 if (version_number > 1614739690 && m_compression_object.compression_mode != e_default_compression && m_compression_object.compression_mode != e_string_reference && m_compression_object.compression_mode != e_string_compression)
1034 {
1035 TableColumnBuffer<String>::mapFromFile(file, version_number);
1036 }
1037 else
1038 {
1039 bool allow_multithreading = false;
1040 file.readStringBuffer(m_buffer, allow_multithreading);
1041 }
1042 }
1043 else
1044 {
1045 TableColumnBuffer<String>::mapFromFile(file, version_number);
1046 }
1047 }
1048 void setRowSize(uint04 index, uint04 size) override { m_buffer[index + 1].setSize(size); }
1049 [[nodiscard]] uint04 getRowSize(uint04 index) const override { return m_buffer[index + 1].size(); }
1050 [[nodiscard]] bool isSame(uint04 index, const String& value) const override { return value == m_buffer[index + 1];}
1051 [[nodiscard]] bool isSame(uint04 index, const char* value) const override { return value == m_buffer[index + 1]; }
1052 [[nodiscard]] bool contains(uint04 index, const String& value, bool ignore_case) const final override { return _value(index).hasSubString(value, ignore_case); }
1053 [[nodiscard]] bool contains(uint04 index, const char* value, bool ignore_case) const final override { return _value(index).hasSubString(value, ignore_case); }
1054 [[nodiscard]] bool beginsWith(uint04 index, const String& value, bool ignore_case) const final override { return _value(index).beginsWith(value, ignore_case); }
1055 [[nodiscard]] bool beginsWith(uint04 index, const char* value, bool ignore_case) const final override { return _value(index).beginsWith(value, ignore_case); }
1056 };
1057
1059 {
1060 public:
1067
1068 void set(uint04 index, uint04 vector_pos, bool value) override { RGBColor color(TableColumnBuffer<RGBColor>::_value(index)); color[cast<uint01>(vector_pos)] = value ? 255 : 0; TableColumnBuffer<RGBColor>::_value(index) = color; };
1069 void set(uint04 index, uint04 vector_pos, uint01 value) override { RGBColor color(TableColumnBuffer<RGBColor>::_value(index)); color[cast<uint01>(vector_pos)] = cast<uint01>(value); TableColumnBuffer<RGBColor>::_value(index) = color; };
1070 void set(uint04 index, uint04 vector_pos, uint02 value) override { RGBColor color(TableColumnBuffer<RGBColor>::_value(index)); color[cast<uint01>(vector_pos)] = cast<uint01>(value); TableColumnBuffer<RGBColor>::_value(index) = color; };
1071 void set(uint04 index, uint04 vector_pos, uint04 value) override { RGBColor color(TableColumnBuffer<RGBColor>::_value(index)); color[cast<uint01>(vector_pos)] = cast<uint01>(value); TableColumnBuffer<RGBColor>::_value(index) = color; };
1072 void set(uint04 index, uint04 vector_pos, uint08 value) override { RGBColor color(TableColumnBuffer<RGBColor>::_value(index)); color[cast<uint01>(vector_pos)] = cast<uint01>(value); TableColumnBuffer<RGBColor>::_value(index) = color; };
1073 void set(uint04 index, uint04 vector_pos, sint01 value) override { RGBColor color(TableColumnBuffer<RGBColor>::_value(index)); color[cast<uint01>(vector_pos)] = cast<uint01>(value); TableColumnBuffer<RGBColor>::_value(index) = color; };
1074 void set(uint04 index, uint04 vector_pos, sint02 value) override { RGBColor color(TableColumnBuffer<RGBColor>::_value(index)); color[cast<uint01>(vector_pos)] = cast<uint01>(value); TableColumnBuffer<RGBColor>::_value(index) = color; };
1075 void set(uint04 index, uint04 vector_pos, sint04 value) override { RGBColor color(TableColumnBuffer<RGBColor>::_value(index)); color[cast<uint01>(vector_pos)] = cast<uint01>(value); TableColumnBuffer<RGBColor>::_value(index) = color; };
1076 void set(uint04 index, uint04 vector_pos, sint08 value) override { RGBColor color(TableColumnBuffer<RGBColor>::_value(index)); color[cast<uint01>(vector_pos)] = cast<uint01>(value); TableColumnBuffer<RGBColor>::_value(index) = color; };
1077 void set(uint04 index, uint04 vector_pos, fltp04 value) override { RGBColor color(TableColumnBuffer<RGBColor>::_value(index)); color[cast<uint01>(vector_pos)] = cast<uint01>(value * 255); TableColumnBuffer<RGBColor>::_value(index) = color; };
1078 void set(uint04 index, uint04 vector_pos, fltp08 value) override { RGBColor color(TableColumnBuffer<RGBColor>::_value(index)); color[cast<uint01>(vector_pos)] = cast<uint01>(value * 255); TableColumnBuffer<RGBColor>::_value(index) = color; };
1079 void set(uint04 index, uint04 vector_pos, const String& value) override { set(index, vector_pos, value.getAs<uint01>()); };
1080
1081 void set(uint04 index, bool value) override { TableColumnBuffer<RGBColor>::_value(index) = value ? RGBColor(255, 255, 255) : RGBColor(0, 0, 0); };
1082 void set(uint04 index, uint02 value) override { TableColumnBuffer<RGBColor>::_value(index) = RGBColor(value); };
1083 void set(uint04 index, uint01 value) override { TableColumnBuffer<RGBColor>::_value(index) = RGBColor(cast<uint04>(value)); };
1084 void set(uint04 index, sint02 value) override { TableColumnBuffer<RGBColor>::_value(index) = RGBColor(value); };
1085 void set(uint04 index, sint01 value) override { TableColumnBuffer<RGBColor>::_value(index) = RGBColor(cast<uint04>(value)); };
1086 void set(uint04 index, uint04 value) override { TableColumnBuffer<RGBColor>::_value(index) = RGBColor(value); };
1087 void set(uint04 index, uint08 value) override { TableColumnBuffer<RGBColor>::_value(index) = RGBColor(cast<uint04>(value)); };
1088 void set(uint04 index, sint04 value) override { TableColumnBuffer<RGBColor>::_value(index) = RGBColor(cast<uint04>(value)); };
1089 void set(uint04 index, sint08 value) override { TableColumnBuffer<RGBColor>::_value(index) = RGBColor(cast<uint04>(value)); };
1090 void set(uint04 index, fltp04 value) override { TableColumnBuffer<RGBColor>::_value(index) = RGBColor(value, value, value); };
1091 void set(uint04 index, fltp08 value) override { TableColumnBuffer<RGBColor>::_value(index) = RGBColor(value, value, value); };
1092 void set(uint04 index, const String& value) override { TableColumnBuffer<RGBColor>::_value(index) = value.getAs<RGBColor>(); };
1093 void set(uint04 index, RGBColor value) override { TableColumnBuffer<RGBColor>::_value(index) = value; };
1094
1095 void get(uint04 index, uint04 vector_pos, bool& value) const override { value = cast<bool>(TableColumnBuffer<RGBColor>::_value(index)[cast<uint01>(vector_pos)]); };
1096 void get(uint04 index, uint04 vector_pos, uint01& value) const override { value = cast<uint01>(TableColumnBuffer<RGBColor>::_value(index)[cast<uint01>(vector_pos)]); };
1097 void get(uint04 index, uint04 vector_pos, uint02& value) const override { value = cast<uint02>(TableColumnBuffer<RGBColor>::_value(index)[cast<uint01>(vector_pos)]); };
1098 void get(uint04 index, uint04 vector_pos, uint04& value) const override { value = cast<uint04>(TableColumnBuffer<RGBColor>::_value(index)[cast<uint01>(vector_pos)]); };
1099 void get(uint04 index, uint04 vector_pos, uint08& value) const override { value = cast<uint08>(TableColumnBuffer<RGBColor>::_value(index)[cast<uint01>(vector_pos)]); };
1100 void get(uint04 index, uint04 vector_pos, sint01& value) const override { value = cast<sint01>(TableColumnBuffer<RGBColor>::_value(index)[cast<uint01>(vector_pos)]); };
1101 void get(uint04 index, uint04 vector_pos, sint02& value) const override { value = cast<sint02>(TableColumnBuffer<RGBColor>::_value(index)[cast<uint01>(vector_pos)]); };
1102 void get(uint04 index, uint04 vector_pos, sint04& value) const override { value = cast<sint04>(TableColumnBuffer<RGBColor>::_value(index)[cast<uint01>(vector_pos)]); };
1103 void get(uint04 index, uint04 vector_pos, sint08& value) const override { value = cast<sint08>(TableColumnBuffer<RGBColor>::_value(index)[cast<uint01>(vector_pos)]); };
1104 void get(uint04 index, uint04 vector_pos, fltp04& value) const override { value = TableColumnBuffer<RGBColor>::_value(index).getF(cast<uint01>(vector_pos)); };
1105 void get(uint04 index, uint04 vector_pos, fltp08& value) const override { value = TableColumnBuffer<RGBColor>::_value(index).getF(cast<uint01>(vector_pos)); };
1106 void get(uint04 index, uint04 vector_pos, String& value) const override { value = String(TableColumnBuffer<RGBColor>::_value(index)[cast<uint01>(vector_pos)]); };
1107
1108 void get(uint04 index, bool& value) const override { value = TableColumnBuffer<RGBColor>::_value(index).convertToRGBA32BitColor() == 0; };
1109 void get(uint04 index, sint01& value) const override { value = cast<sint01>(TableColumnBuffer<RGBColor>::_value(index).convertToRGBA32BitColor()); lib_assert(false, "unexpected conversion"); };
1110 void get(uint04 index, sint02& value) const override { value = cast<sint02>(TableColumnBuffer<RGBColor>::_value(index).convertToRGBA32BitColor()); lib_assert(false, "unexpected conversion"); };
1111 void get(uint04 index, uint01& value) const override { value = cast<uint01>(TableColumnBuffer<RGBColor>::_value(index).convertToRGBA32BitColor()); lib_assert(false, "unexpected conversion"); };
1112 void get(uint04 index, uint02& value) const override { value = cast<uint02>(TableColumnBuffer<RGBColor>::_value(index).convertToRGBA32BitColor()); lib_assert(false, "unexpected conversion"); };
1113 void get(uint04 index, uint04& value) const override { value = TableColumnBuffer<RGBColor>::_value(index).convertToRGBA32BitColor(); };
1114 void get(uint04 index, uint08& value) const override { value = TableColumnBuffer<RGBColor>::_value(index).convertToRGBA32BitColor(); };
1115 void get(uint04 index, sint04& value) const override { value = rcast<sint04>(TableColumnBuffer<RGBColor>::_value(index).convertToRGBA32BitColor()); };
1116 void get(uint04 index, sint08& value) const override { value = cast<sint08>(TableColumnBuffer<RGBColor>::_value(index).convertToRGBA32BitColor()); };
1117 void get(uint04 index, fltp04& value) const override { value = TableColumnBuffer<RGBColor>::_value(index).luminance(); };
1118 void get(uint04 index, fltp08& value) const override { value = TableColumnBuffer<RGBColor>::_value(index).luminance(); };
1119 void get(uint04 index, String& value) const override { value = String(TableColumnBuffer<RGBColor>::_value(index)); };
1120 void get(uint04 index, RGBColor& value) const override { value = TableColumnBuffer<RGBColor>::_value(index); };
1121 void insertIndices(uint04 location, uint04 size) override { UNUSED(location); UNUSED(size); lib_assert(false, "Insert indices not implemented for color channel"); }
1122 void removeIndices(uint04 location, uint04 size) override { UNUSED(location); UNUSED(size); lib_assert(false, "Remove indices not implemented for color channel"); }
1123 void removeIndices(const Buffer<uint04>& offset_lookup_list) override { UNUSED(offset_lookup_list); lib_assert(false, "Remove indices not implemented for color channel"); }
1124 TableColumnColorType* getSelected(const Buffer<bool>& selected_indices) const override
1125 {
1127 new_vector_array->setSize(selected_indices.count(true));
1128 uint04 current_index = 1;
1129 for (uint04 i = 0; i < selected_indices.size(); i++)
1130 {
1131 if (selected_indices[i])
1132 {
1133 new_vector_array->m_buffer[current_index++] = TableColumnBuffer<RGBColor>::m_buffer[i + 1];
1134 }
1135 }
1136 return new_vector_array;
1137 }
1138 };
1139}
1140#if __clang__
1141 #pragma clang diagnostic pop
1142#endif
#define UNUSED(expr)
Definition BaseValues.hpp:433
#define NDEVR_DATABASE_API
Definition DLLInfo.h:71
#define lib_assert(expression, message)
Asserts some logic in the code. Disabled in non debug mode by default. Can be re-enabled in release u...
Definition LibAssert.h:70
Definition BinaryFile.h:51
void write(const t_type &data)
Definition BinaryFile.h:115
void writeCompression(BinaryCompressionObject &compression_object)
Definition BinaryFile.cpp:52
void seek(uint08 location)
Definition BinaryFile.h:467
void readNow(Buffer< t_type, t_index_type, t_memory_allocator, t_memory_manager > &data)
Definition BinaryFile.h:327
uint08 position()
Definition BinaryFile.h:447
void readStringBuffer(Buffer< String, t_index_type, t_memory_allocator, t_memory_manager > &data, bool &allow_multithread)
Definition BinaryFile.h:354
t_type read()
Definition BinaryFile.h:225
A specification of upper and lower bounds in N-dimensions.
Definition Bounds.hpp:57
constexpr void addToBounds(const t_vertex &vector)
Adds to the bounds such that the new bounds fully encompasses the argument.
Definition Bounds.hpp:498
constexpr Ray< t_dims, t_type > span() const
The side lengths of these bounds. For each dimension, the span is max - min.
Definition Bounds.hpp:139
The equivelent of std::vector but with a bit more control. The basic array unit of the library.
Definition Buffer.hpp:64
constexpr t_index_type size() const
Definition Buffer.hpp:1461
t_index_type count(const t_type &element) const
Definition Buffer.hpp:728
static std::enable_if<!ObjectInfo< t_type >::Buffer >::type Compress(BinaryCompressionObject &object, Buffer< uint01 > &compression_data, const Buffer< t_type, t_index_type, t_memory_allocator, t_memory_manager > &data)
Definition Compressor.h:101
Definition Matrix.hpp:173
constexpr Matrix< t_new_type > as() const
Definition Matrix.hpp:245
Represents a color in the RGB space with optional alpha transparency.
Definition RGBColor.h:53
Definition String.h:40
NDEVR_BASE_API bool hasSubString(const String &sub_string, bool ignore_case=false) const
Definition String.cpp:331
t_type getAs() const
Definition String.h:334
NDEVR_BASE_API bool beginsWith(const String &s, bool ignore_case=false) const
Definition String.cpp:412
Definition TableColumnType.h:49
bool beginsWith(uint04 index, const char *value, bool ignore_case) const override
Definition TableColumnType.h:214
decltype(auto) _setDefaultValue(const t_type &value)
Definition TableColumnType.h:227
uint04 size() const override
Definition TableColumnType.h:215
virtual void copyRow(uint04 source, uint04 destination) override
Definition TableColumnType.h:84
virtual void copyRows(uint04 source, uint04 destination, uint04 size) override
Definition TableColumnType.h:88
virtual void compress(BinaryCompressionObject &object) override
Definition TableColumnType.h:153
decltype(auto) _value(uint04 index)
Definition TableColumnType.h:231
Buffer< t_type > m_buffer
Definition TableColumnType.h:247
void * end() override
Definition TableColumnType.h:193
void setSize(uint04 size) override
Definition TableColumnType.h:75
virtual void addRow() override
Definition TableColumnType.h:198
TableColumnBuffer(const String &label, const TypeInfo type)
Definition TableColumnType.h:52
const void * end() const override
Definition TableColumnType.h:196
bool contains(uint04 index, const char *value, bool ignore_case) const override
Definition TableColumnType.h:212
void removeRows(uint04 offset, const Buffer< bool > &indices) override
Definition TableColumnType.h:133
decltype(auto) defaultValue()
Definition TableColumnType.h:239
TableColumnBuffer(const String &label, const TypeInfo type, const t_type &default_value)
Definition TableColumnType.h:57
void insert(uint04 index) override
Definition TableColumnType.h:68
bool isSame(uint04 index, const char *value) const override
Definition TableColumnType.h:210
virtual void removeRows(uint04 index, uint04 size) override
Definition TableColumnType.h:107
void removeRow(uint04 index) override
Definition TableColumnType.h:103
Buffer< uint01 > m_compressed_data
Definition TableColumnType.h:248
void _mapToFile(BinaryFile &file, BinaryCompressionObject &object)
Definition TableColumnType.h:222
void _mapToFile(BinaryFile &file, CompressionMode compression)
Definition TableColumnType.h:218
virtual void mapToFile(BinaryFile &file, int compression) override
Definition TableColumnType.h:161
void * begin() override
Definition TableColumnType.h:192
virtual void mapFromFile(BinaryFile &file, uint08 version_number) override
Definition TableColumnType.h:170
virtual void removeRows(const Buffer< uint04 > &sorted_romove_indices) override
Definition TableColumnType.h:112
bool beginsWith(uint04 index, const String &value, bool ignore_case) const override
Definition TableColumnType.h:213
decltype(auto) defaultValue() const
Definition TableColumnType.h:243
decltype(auto) _value(uint04 index) const
Definition TableColumnType.h:235
virtual void insertRows(uint04 location, uint04 size) override
Definition TableColumnType.h:204
bool isSame(uint04 index, const String &value) const override
Definition TableColumnType.h:209
const void * begin() const override
Definition TableColumnType.h:195
virtual void mapToFile(BinaryFile &file, BinaryCompressionObject &object) override
Definition TableColumnType.h:165
TableColumnBuffer(const Buffer< t_type > &buffer, const String &label, const TypeInfo type)
Definition TableColumnType.h:62
bool contains(uint04 index, const String &value, bool ignore_case) const override
Definition TableColumnType.h:211
Definition TableColumnType.h:1059
void get(uint04 index, sint02 &value) const override
Definition TableColumnType.h:1110
void set(uint04 index, fltp08 value) override
Definition TableColumnType.h:1091
void set(uint04 index, uint04 vector_pos, uint04 value) override
Definition TableColumnType.h:1071
void set(uint04 index, sint01 value) override
Definition TableColumnType.h:1085
void get(uint04 index, uint04 vector_pos, uint01 &value) const override
Definition TableColumnType.h:1096
void set(uint04 index, sint08 value) override
Definition TableColumnType.h:1089
void get(uint04 index, sint08 &value) const override
Definition TableColumnType.h:1116
void get(uint04 index, uint04 vector_pos, uint02 &value) const override
Definition TableColumnType.h:1097
void set(uint04 index, uint04 vector_pos, sint04 value) override
Definition TableColumnType.h:1075
void set(uint04 index, uint04 vector_pos, fltp08 value) override
Definition TableColumnType.h:1078
void get(uint04 index, uint01 &value) const override
Definition TableColumnType.h:1111
void set(uint04 index, uint04 vector_pos, uint08 value) override
Definition TableColumnType.h:1072
void set(uint04 index, uint04 vector_pos, const String &value) override
Definition TableColumnType.h:1079
void get(uint04 index, uint04 vector_pos, sint01 &value) const override
Definition TableColumnType.h:1100
void get(uint04 index, uint04 vector_pos, fltp08 &value) const override
Definition TableColumnType.h:1105
void get(uint04 index, uint04 vector_pos, sint08 &value) const override
Definition TableColumnType.h:1103
void removeIndices(const Buffer< uint04 > &offset_lookup_list) override
Definition TableColumnType.h:1123
void removeIndices(uint04 location, uint04 size) override
Definition TableColumnType.h:1122
void set(uint04 index, uint04 vector_pos, uint01 value) override
Definition TableColumnType.h:1069
void set(uint04 index, uint08 value) override
Definition TableColumnType.h:1087
void get(uint04 index, uint02 &value) const override
Definition TableColumnType.h:1112
void set(uint04 index, uint04 vector_pos, sint08 value) override
Definition TableColumnType.h:1076
void set(uint04 index, uint02 value) override
Definition TableColumnType.h:1082
void get(uint04 index, fltp04 &value) const override
Definition TableColumnType.h:1117
void get(uint04 index, uint04 vector_pos, sint04 &value) const override
Definition TableColumnType.h:1102
void set(uint04 index, RGBColor value) override
Definition TableColumnType.h:1093
void get(uint04 index, bool &value) const override
Definition TableColumnType.h:1108
void set(uint04 index, uint04 vector_pos, bool value) override
Definition TableColumnType.h:1068
void get(uint04 index, uint04 vector_pos, uint04 &value) const override
Definition TableColumnType.h:1098
void set(uint04 index, const String &value) override
Definition TableColumnType.h:1092
void set(uint04 index, uint04 vector_pos, fltp04 value) override
Definition TableColumnType.h:1077
void set(uint04 index, uint04 vector_pos, sint01 value) override
Definition TableColumnType.h:1073
void get(uint04 index, uint04 &value) const override
Definition TableColumnType.h:1113
void get(uint04 index, uint04 vector_pos, uint08 &value) const override
Definition TableColumnType.h:1099
void get(uint04 index, fltp08 &value) const override
Definition TableColumnType.h:1118
void get(uint04 index, uint04 vector_pos, bool &value) const override
Definition TableColumnType.h:1095
void get(uint04 index, uint08 &value) const override
Definition TableColumnType.h:1114
void set(uint04 index, uint01 value) override
Definition TableColumnType.h:1083
void get(uint04 index, sint04 &value) const override
Definition TableColumnType.h:1115
void set(uint04 index, fltp04 value) override
Definition TableColumnType.h:1090
void get(uint04 index, uint04 vector_pos, fltp04 &value) const override
Definition TableColumnType.h:1104
TableColumnColorType(const Buffer< RGBColor > &buffer, const String &label)
Definition TableColumnType.h:1064
void get(uint04 index, uint04 vector_pos, sint02 &value) const override
Definition TableColumnType.h:1101
void set(uint04 index, uint04 vector_pos, sint02 value) override
Definition TableColumnType.h:1074
void insertIndices(uint04 location, uint04 size) override
Definition TableColumnType.h:1121
TableColumnColorType(const String &label)
Definition TableColumnType.h:1061
void get(uint04 index, sint01 &value) const override
Definition TableColumnType.h:1109
void set(uint04 index, uint04 value) override
Definition TableColumnType.h:1086
void set(uint04 index, bool value) override
Definition TableColumnType.h:1081
TableColumnColorType * getSelected(const Buffer< bool > &selected_indices) const override
Definition TableColumnType.h:1124
void set(uint04 index, sint04 value) override
Definition TableColumnType.h:1088
void set(uint04 index, uint04 vector_pos, uint02 value) override
Definition TableColumnType.h:1070
void set(uint04 index, sint02 value) override
Definition TableColumnType.h:1084
void get(uint04 index, uint04 vector_pos, String &value) const override
Definition TableColumnType.h:1106
void get(uint04 index, RGBColor &value) const override
Definition TableColumnType.h:1120
void get(uint04 index, String &value) const override
Definition TableColumnType.h:1119
Definition TableColumn.h:68
bool m_compression_valid
Definition TableColumn.h:613
Time m_modified_time
Definition TableColumn.h:607
CompressionMode m_compression_mode
Definition TableColumn.h:612
BinaryCompressionObject m_compression_object
Definition TableColumn.h:606
const String & label() const
Definition TableColumn.cpp:303
virtual TypeInfo type() const
Definition TableColumn.h:78
Buffer< TableChange > m_changes
Definition TableColumn.h:611
Definition TableColumnType.h:910
void get(uint04 index, sint02 &value) const override
Definition TableColumnType.h:964
void set(uint04 index, fltp08 value) override
Definition TableColumnType.h:941
void set(uint04 index, uint04 vector_pos, uint04 value) override
Definition TableColumnType.h:920
void set(uint04 index, sint01 value) override
Definition TableColumnType.h:936
bool beginsWith(uint04 index, const String &value, bool ignore_case) const final override
Definition TableColumnType.h:1054
uint08 tableHash() const override
Definition TableColumnType.h:992
void get(uint04 index, uint04 vector_pos, uint01 &value) const override
Definition TableColumnType.h:946
void set(uint04 index, sint08 value) override
Definition TableColumnType.h:939
void get(uint04 index, sint08 &value) const override
Definition TableColumnType.h:966
virtual void insertIndices(uint04 location, uint04 size) override
Definition TableColumnType.h:973
void get(uint04 index, uint04 vector_pos, uint02 &value) const override
Definition TableColumnType.h:947
void set(uint04 index, uint04 vector_pos, sint04 value) override
Definition TableColumnType.h:924
void set(uint04 index, uint04 vector_pos, fltp08 value) override
Definition TableColumnType.h:927
void get(uint04 index, uint01 &value) const override
Definition TableColumnType.h:959
TableColumnString(const String &label)
Definition TableColumnType.h:912
void set(uint04 index, uint04 vector_pos, uint08 value) override
Definition TableColumnType.h:921
void set(uint04 index, uint04 vector_pos, const String &value) override
Definition TableColumnType.h:929
void get(uint04 index, uint04 vector_pos, sint01 &value) const override
Definition TableColumnType.h:950
bool contains(uint04 index, const String &value, bool ignore_case) const final override
Definition TableColumnType.h:1052
void get(uint04 index, uint04 vector_pos, fltp08 &value) const override
Definition TableColumnType.h:955
bool beginsWith(uint04 index, const char *value, bool ignore_case) const final override
Definition TableColumnType.h:1055
void get(uint04 index, uint04 vector_pos, sint08 &value) const override
Definition TableColumnType.h:953
void set(uint04 index, uint04 vector_pos, uint01 value) override
Definition TableColumnType.h:918
void set(uint04 index, uint08 value) override
Definition TableColumnType.h:935
void removeRows(uint04 offset, const Buffer< bool > &indices) override
Definition TableColumnType.h:916
void get(uint04 index, uint02 &value) const override
Definition TableColumnType.h:960
void set(uint04 index, uint04 vector_pos, sint08 value) override
Definition TableColumnType.h:925
void setRowSize(uint04 index, uint04 size) override
Definition TableColumnType.h:1048
void set(uint04 index, uint02 value) override
Definition TableColumnType.h:933
bool isSame(uint04 index, const char *value) const override
Definition TableColumnType.h:1051
uint04 getRowSize(uint04 index) const override
Definition TableColumnType.h:1049
void get(uint04 index, fltp04 &value) const override
Definition TableColumnType.h:967
void get(uint04 index, uint04 vector_pos, sint04 &value) const override
Definition TableColumnType.h:952
bool contains(uint04 index, const char *value, bool ignore_case) const final override
Definition TableColumnType.h:1053
void set(uint04 index, RGBColor value) override
Definition TableColumnType.h:943
void get(uint04 index, bool &value) const override
Definition TableColumnType.h:958
void set(uint04 index, uint04 vector_pos, bool value) override
Definition TableColumnType.h:917
void get(uint04 index, uint04 vector_pos, uint04 &value) const override
Definition TableColumnType.h:948
void set(uint04 index, const String &value) override
Definition TableColumnType.h:942
virtual void removeIndices(uint04 location, uint04 size) override
Definition TableColumnType.h:999
void set(uint04 index, uint04 vector_pos, fltp04 value) override
Definition TableColumnType.h:926
void set(uint04 index, uint04 vector_pos, sint01 value) override
Definition TableColumnType.h:922
void get(uint04 index, uint04 &value) const override
Definition TableColumnType.h:961
void get(uint04 index, uint04 vector_pos, uint08 &value) const override
Definition TableColumnType.h:949
void get(uint04 index, fltp08 &value) const override
Definition TableColumnType.h:968
void get(uint04 index, uint04 vector_pos, bool &value) const override
Definition TableColumnType.h:945
virtual void mapFromFile(BinaryFile &file, uint08 version_number) override
Definition TableColumnType.h:1029
void get(uint04 index, uint08 &value) const override
Definition TableColumnType.h:962
void set(uint04 index, uint01 value) override
Definition TableColumnType.h:932
void get(uint04 index, sint04 &value) const override
Definition TableColumnType.h:965
void set(uint04 index, fltp04 value) override
Definition TableColumnType.h:940
void get(uint04 index, uint04 vector_pos, fltp04 &value) const override
Definition TableColumnType.h:954
TableColumnString * getSelected(const Buffer< bool > &selected_indices) const override
Definition TableColumnType.h:972
void get(uint04 index, uint04 vector_pos, sint02 &value) const override
Definition TableColumnType.h:951
void set(uint04 index, uint04 vector_pos, sint02 value) override
Definition TableColumnType.h:923
void get(uint04 index, sint01 &value) const override
Definition TableColumnType.h:963
void set(uint04 index, uint04 value) override
Definition TableColumnType.h:934
void set(uint04 index, bool value) override
Definition TableColumnType.h:931
void set(uint04 index, sint04 value) override
Definition TableColumnType.h:938
bool isSame(uint04 index, const String &value) const override
Definition TableColumnType.h:1050
virtual void removeIndices(const Buffer< uint04 > &offset_lookup_list) override
Definition TableColumnType.h:1023
void set(uint04 index, uint04 vector_pos, uint02 value) override
Definition TableColumnType.h:919
void set(uint04 index, sint02 value) override
Definition TableColumnType.h:937
void get(uint04 index, uint04 vector_pos, String &value) const override
Definition TableColumnType.h:956
void get(uint04 index, RGBColor &value) const override
Definition TableColumnType.h:970
void get(uint04 index, String &value) const override
Definition TableColumnType.h:969
Definition TableColumnType.h:715
void get(uint04 index, sint02 &value) const override
Definition TableColumnType.h:769
void set(uint04 index, fltp08 value) override
Definition TableColumnType.h:745
void set(uint04 index, uint04 vector_pos, uint04 value) override
Definition TableColumnType.h:724
TableColumnTypeBuffer(const String &label)
Definition TableColumnType.h:717
void set(uint04 index, sint01 value) override
Definition TableColumnType.h:740
uint08 tableHash() const override
Definition TableColumnType.h:788
void get(uint04 index, uint04 vector_pos, uint01 &value) const override
Definition TableColumnType.h:750
void set(uint04 index, sint08 value) override
Definition TableColumnType.h:743
void get(uint04 index, sint08 &value) const override
Definition TableColumnType.h:771
virtual void insertIndices(uint04 location, uint04 size) override
Definition TableColumnType.h:776
void get(uint04 index, uint04 vector_pos, uint02 &value) const override
Definition TableColumnType.h:751
void set(uint04 index, uint04 vector_pos, sint04 value) override
Definition TableColumnType.h:728
void set(uint04 index, uint04 vector_pos, fltp08 value) override
Definition TableColumnType.h:731
void get(uint04 index, uint01 &value) const override
Definition TableColumnType.h:764
void set(uint04 index, uint04 vector_pos, uint08 value) override
Definition TableColumnType.h:725
void set(uint04 index, uint04 vector_pos, const String &value) override
Definition TableColumnType.h:733
void get(uint04 index, uint04 vector_pos, sint01 &value) const override
Definition TableColumnType.h:754
void get(uint04 index, uint04 vector_pos, fltp08 &value) const override
Definition TableColumnType.h:759
void get(uint04 index, uint04 vector_pos, sint08 &value) const override
Definition TableColumnType.h:757
void set(uint04 index, uint04 vector_pos, uint01 value) override
Definition TableColumnType.h:722
void set(uint04 index, uint08 value) override
Definition TableColumnType.h:739
void get(uint04 index, uint02 &value) const override
Definition TableColumnType.h:765
void set(uint04 index, uint04 vector_pos, sint08 value) override
Definition TableColumnType.h:729
void setRowSize(uint04 index, uint04 size) override
Definition TableColumnType.h:799
void _removeIndices(uint04 location, typename std::enable_if<!ObjectInfo< t_n_type >::Number, uint04 >::type size)
Definition TableColumnType.h:862
void set(uint04 index, uint02 value) override
Definition TableColumnType.h:737
uint04 getRowSize(uint04 index) const override
Definition TableColumnType.h:800
void get(uint04 index, fltp04 &value) const override
Definition TableColumnType.h:772
void get(uint04 index, uint04 vector_pos, sint04 &value) const override
Definition TableColumnType.h:756
void _insertIndices(uint04 location, typename std::enable_if<!ObjectInfo< t_n_type >::Number, uint04 >::type size)
Definition TableColumnType.h:830
void set(uint04 index, RGBColor value) override
Definition TableColumnType.h:747
void get(uint04 index, bool &value) const override
Definition TableColumnType.h:763
void set(uint04 index, uint04 vector_pos, bool value) override
Definition TableColumnType.h:721
void _removeIndices(typename std::enable_if< ObjectInfo< t_n_type >::Number, const Buffer< uint04 > & >::type offset_lookup_list)
Definition TableColumnType.h:869
void get(uint04 index, uint04 vector_pos, uint04 &value) const override
Definition TableColumnType.h:752
void set(uint04 index, const String &value) override
Definition TableColumnType.h:746
virtual void removeIndices(uint04 location, uint04 size) override
Definition TableColumnType.h:780
void set(uint04 index, uint04 vector_pos, fltp04 value) override
Definition TableColumnType.h:730
void set(uint04 index, uint04 vector_pos, sint01 value) override
Definition TableColumnType.h:726
void get(uint04 index, uint04 &value) const override
Definition TableColumnType.h:766
TableColumnTypeBuffer< t_type > * getSelected(const Buffer< bool > &selected_indices) const override
Definition TableColumnType.h:801
void get(uint04 index, uint04 vector_pos, uint08 &value) const override
Definition TableColumnType.h:753
void get(uint04 index, fltp08 &value) const override
Definition TableColumnType.h:773
void get(uint04 index, uint04 vector_pos, bool &value) const override
Definition TableColumnType.h:749
void get(uint04 index, uint08 &value) const override
Definition TableColumnType.h:767
void _removeIndices(typename std::enable_if<!ObjectInfo< t_n_type >::Number, const Buffer< uint04 > & >::type offset_lookup_list)
Definition TableColumnType.h:902
void set(uint04 index, uint01 value) override
Definition TableColumnType.h:736
void get(uint04 index, sint04 &value) const override
Definition TableColumnType.h:770
void set(uint04 index, fltp04 value) override
Definition TableColumnType.h:744
void get(uint04 index, uint04 vector_pos, fltp04 &value) const override
Definition TableColumnType.h:758
void get(uint04 index, uint04 vector_pos, sint02 &value) const override
Definition TableColumnType.h:755
void _removeIndices(uint04 location, typename std::enable_if< ObjectInfo< t_n_type >::Number, uint04 >::type size)
Definition TableColumnType.h:833
void set(uint04 index, uint04 vector_pos, sint02 value) override
Definition TableColumnType.h:727
void get(uint04 index, sint01 &value) const override
Definition TableColumnType.h:768
void set(uint04 index, uint04 value) override
Definition TableColumnType.h:738
void set(uint04 index, bool value) override
Definition TableColumnType.h:735
void set(uint04 index, sint04 value) override
Definition TableColumnType.h:742
virtual void removeIndices(const Buffer< uint04 > &offset_lookup_list) override
Definition TableColumnType.h:784
void _insertIndices(uint04 location, typename std::enable_if< ObjectInfo< t_n_type >::Number, uint04 >::type size)
Definition TableColumnType.h:804
void set(uint04 index, uint04 vector_pos, uint02 value) override
Definition TableColumnType.h:723
void set(uint04 index, sint02 value) override
Definition TableColumnType.h:741
void get(uint04 index, uint04 vector_pos, String &value) const override
Definition TableColumnType.h:760
void get(uint04 index, RGBColor &value) const override
Definition TableColumnType.h:775
void get(uint04 index, String &value) const override
Definition TableColumnType.h:774
Definition TableColumnType.h:446
virtual void get(uint04 index, Matrix< fltp04 > &transform) const override
Definition TableColumnType.h:467
virtual void set(uint04 index, const Matrix< fltp04 > &transform) override
Definition TableColumnType.h:478
virtual void set(uint04 index, const Matrix< fltp08 > &transform) override
Definition TableColumnType.h:473
void set(uint04 index, const String &value) override
Definition TableColumnType.h:452
TableMatrixType(const String &label)
Definition TableColumnType.h:448
virtual void get(uint04 index, Matrix< fltp08 > &transform) const override
Definition TableColumnType.h:461
void get(uint04 index, String &value) const override
Definition TableColumnType.h:457
void set(uint04 index, fltp08 value) override
Definition TableColumnType.h:692
void get(uint04, bool &value) const override
Definition TableColumnType.h:681
void set(uint04 index, sint01 value) override
Definition TableColumnType.h:687
void set(uint04 index, sint08 value) override
Definition TableColumnType.h:690
TableVectorType(const String &label)
Definition TableColumnType.h:673
TableVectorType(const String &label, const TypeInfo type)
Definition TableColumnType.h:676
decltype(auto) _value(uint04 index)
Definition TableColumnType.h:704
void set(uint04 index, uint08 value) override
Definition TableColumnType.h:686
void set(uint04 index, uint02 value) override
Definition TableColumnType.h:684
void set(uint04 index, RGBColor value) override
Definition TableColumnType.h:693
void set(uint04 index, const String &value) override
Definition TableColumnType.h:694
virtual void get(uint04 index, UUID &id) const final override
Definition TableColumnType.h:700
void set(uint04 index, uint01 value) override
Definition TableColumnType.h:683
void set(uint04 index, fltp04 value) override
Definition TableColumnType.h:691
void set(uint04 index, uint04 value) override
Definition TableColumnType.h:685
void set(uint04 index, bool value) override
Definition TableColumnType.h:682
decltype(auto) _value(uint04 index) const
Definition TableColumnType.h:708
void set(uint04 index, sint04 value) override
Definition TableColumnType.h:689
virtual void set(uint04 index, const UUID &value) final override
Definition TableColumnType.h:696
void set(uint04 index, sint02 value) override
Definition TableColumnType.h:688
void get(uint04 index, String &value) const override
Definition TableColumnType.h:695
void get(uint04 index, sint02 &value) const override
Definition TableColumnType.h:547
void set(uint04 index, fltp08 value) override
Definition TableColumnType.h:524
void get(uint04 index, uint04, sint01 &value) const override
Definition TableColumnType.h:533
void set(uint04 index, sint01 value) override
Definition TableColumnType.h:519
void set(uint04, RGBColor) override
Definition TableColumnType.h:526
void set(uint04 index, sint08 value) override
Definition TableColumnType.h:522
void get(uint04 index, sint08 &value) const override
Definition TableColumnType.h:549
void get(uint04 index, uint04, sint04 &value) const override
Definition TableColumnType.h:535
virtual void insertIndices(uint04 location, uint04 size) override
Definition TableColumnType.h:568
TableVectorType(const String &label)
Definition TableColumnType.h:490
void set(uint04 index, uint04, sint02 value) override
Definition TableColumnType.h:506
void set(uint04 index, uint04, fltp08 value) override
Definition TableColumnType.h:510
void get(uint04 index, uint01 &value) const override
Definition TableColumnType.h:542
void get(uint04 index, uint04, bool &value) const override
Definition TableColumnType.h:528
virtual uint04 getRowSize(uint04) const override
Definition TableColumnType.h:498
void set(uint04 index, uint04, bool value) override
Definition TableColumnType.h:500
TableVectorType(const Buffer< bool > &buffer, const String &label)
Definition TableColumnType.h:494
void set(uint04 index, uint08 value) override
Definition TableColumnType.h:518
void get(uint04 index, uint04, String &value) const override
Definition TableColumnType.h:539
void get(uint04 index, uint02 &value) const override
Definition TableColumnType.h:543
void set(uint04 index, uint04, uint01 value) override
Definition TableColumnType.h:501
void get(uint04 index, uint04, sint08 &value) const override
Definition TableColumnType.h:536
void set(uint04 index, uint02 value) override
Definition TableColumnType.h:516
void set(uint04 index, uint04, sint01 value) override
Definition TableColumnType.h:505
void get(uint04 index, fltp04 &value) const override
Definition TableColumnType.h:550
void get(uint04 index, uint04, fltp04 &value) const override
Definition TableColumnType.h:537
TableVectorType< 1, t_type > * getSelected(const Buffer< bool > &selected_indices) const override
Definition TableColumnType.h:554
void get(uint04 index, uint04, uint01 &value) const override
Definition TableColumnType.h:529
void get(uint04 index, bool &value) const override
Definition TableColumnType.h:541
void _removeIndices(typename std::enable_if< ObjectInfo< t_n_type >::Number, const Buffer< uint04 > & >::type offset_lookup_list)
Definition TableColumnType.h:640
void get(uint04 index, uint04, uint02 &value) const override
Definition TableColumnType.h:530
void set(uint04 index, const String &value) override
Definition TableColumnType.h:525
void _removeIndices(uint04 location, typename std::enable_if< ObjectInfo< t_n_type >::Number &&ObjectInfo< t_n_type >::Dimensions< 16, uint04 >::type size)
Definition TableColumnType.h:612
virtual void removeIndices(uint04 location, uint04 size) override
Definition TableColumnType.h:572
void _insertIndices(uint04 location, typename std::enable_if<!ObjectInfo< t_n_type >::Number||ObjectInfo< t_n_type >::Dimensions >=16, uint04 >::type size)
Definition TableColumnType.h:606
void _removeIndices(uint04 location, typename std::enable_if<!ObjectInfo< t_n_type >::Number||ObjectInfo< t_n_type >::Dimensions >=16, uint04 >::type size)
Definition TableColumnType.h:637
void set(uint04 index, uint04, uint08 value) override
Definition TableColumnType.h:504
void get(uint04 index, uint04, fltp08 &value) const override
Definition TableColumnType.h:538
void _insertIndices(uint04 location, typename std::enable_if< ObjectInfo< t_n_type >::Number &&ObjectInfo< t_n_type >::Dimensions< 16, uint04 >::type size)
Definition TableColumnType.h:582
void get(uint04 index, uint04, uint08 &value) const override
Definition TableColumnType.h:532
void get(uint04, RGBColor &) const override
Definition TableColumnType.h:553
void get(uint04 index, uint04 &value) const override
Definition TableColumnType.h:544
void get(uint04 index, fltp08 &value) const override
Definition TableColumnType.h:551
void set(uint04 index, uint04, const String &value) override
Definition TableColumnType.h:512
void get(uint04 index, uint08 &value) const override
Definition TableColumnType.h:545
void _removeIndices(typename std::enable_if<!ObjectInfo< t_n_type >::Number, const Buffer< uint04 > & >::type offset_lookup_list)
Definition TableColumnType.h:665
void set(uint04 index, uint01 value) override
Definition TableColumnType.h:515
void set(uint04 index, uint04, uint04 value) override
Definition TableColumnType.h:503
void get(uint04 index, sint04 &value) const override
Definition TableColumnType.h:548
void set(uint04 index, fltp04 value) override
Definition TableColumnType.h:523
void set(uint04 index, uint04, sint08 value) override
Definition TableColumnType.h:508
void get(uint04 index, sint01 &value) const override
Definition TableColumnType.h:546
void set(uint04 index, uint04 value) override
Definition TableColumnType.h:517
void get(uint04 index, uint04, sint02 &value) const override
Definition TableColumnType.h:534
void set(uint04 index, bool value) override
Definition TableColumnType.h:514
void set(uint04 index, uint04, fltp04 value) override
Definition TableColumnType.h:509
void set(uint04 index, sint04 value) override
Definition TableColumnType.h:521
void get(uint04 index, uint04, uint04 &value) const override
Definition TableColumnType.h:531
void set(uint04 index, uint04, sint04 value) override
Definition TableColumnType.h:507
virtual void removeIndices(const Buffer< uint04 > &offset_lookup_list) override
Definition TableColumnType.h:576
void set(uint04 index, sint02 value) override
Definition TableColumnType.h:520
void set(uint04 index, uint04, uint02 value) override
Definition TableColumnType.h:502
void get(uint04 index, String &value) const override
Definition TableColumnType.h:552
Definition TableColumnType.h:253
void get(uint04 index, sint02 &value) const override
Definition TableColumnType.h:312
void set(uint04 index, fltp08 value) override
Definition TableColumnType.h:289
void set(uint04 index, uint04 vector_pos, uint04 value) override
Definition TableColumnType.h:268
void set(uint04 index, sint01 value) override
Definition TableColumnType.h:284
uint08 tableHash() const override
Definition TableColumnType.h:339
void get(uint04 index, uint04 vector_pos, uint01 &value) const override
Definition TableColumnType.h:294
void set(uint04 index, sint08 value) override
Definition TableColumnType.h:287
TableVectorType< t_dims, t_type > * getSelected(const Buffer< bool > &selected_indices) const override
Definition TableColumnType.h:350
void get(uint04 index, sint08 &value) const override
Definition TableColumnType.h:314
virtual void insertIndices(uint04 location, uint04 size) override
Definition TableColumnType.h:365
void get(uint04 index, uint04 vector_pos, uint02 &value) const override
Definition TableColumnType.h:295
void set(uint04 index, uint04 vector_pos, sint04 value) override
Definition TableColumnType.h:272
TableVectorType(const String &label)
Definition TableColumnType.h:255
void set(uint04 index, uint04 vector_pos, fltp08 value) override
Definition TableColumnType.h:275
void get(uint04 index, uint01 &value) const override
Definition TableColumnType.h:307
void set(uint04 index, uint04 vector_pos, uint08 value) override
Definition TableColumnType.h:269
void set(uint04 index, uint04 vector_pos, const String &value) override
Definition TableColumnType.h:277
void get(uint04 index, uint04 vector_pos, sint01 &value) const override
Definition TableColumnType.h:298
void getVector(uint04 index, Vector< 2, uint04 > &vector) const override
Definition TableColumnType.h:335
virtual uint04 getRowSize(uint04) const override
Definition TableColumnType.h:263
void get(uint04 index, uint04 vector_pos, fltp08 &value) const override
Definition TableColumnType.h:303
void get(uint04 index, uint04 vector_pos, sint08 &value) const override
Definition TableColumnType.h:301
void set(uint04 index, uint04 vector_pos, uint01 value) override
Definition TableColumnType.h:266
void set(uint04 index, uint08 value) override
Definition TableColumnType.h:283
void getVector(uint04 index, Vector< 3, fltp08 > &vector) const override
Definition TableColumnType.h:325
void get(uint04 index, uint02 &value) const override
Definition TableColumnType.h:308
void set(uint04 index, uint04 vector_pos, sint08 value) override
Definition TableColumnType.h:273
void set(uint04 index, uint02 value) override
Definition TableColumnType.h:281
void get(uint04 index, fltp04 &value) const override
Definition TableColumnType.h:315
void get(uint04 index, uint04 vector_pos, sint04 &value) const override
Definition TableColumnType.h:300
void set(uint04 index, RGBColor value) override
Definition TableColumnType.h:291
void get(uint04 index, bool &value) const override
Definition TableColumnType.h:306
void set(uint04 index, uint04 vector_pos, bool value) override
Definition TableColumnType.h:265
void get(uint04 index, uint04 vector_pos, uint04 &value) const override
Definition TableColumnType.h:296
void set(uint04 index, const String &value) override
Definition TableColumnType.h:290
virtual void removeIndices(uint04 location, uint04 size) override
Definition TableColumnType.h:390
void set(uint04 index, uint04 vector_pos, fltp04 value) override
Definition TableColumnType.h:274
void getVector(uint04 index, Vector< 3, uint04 > &vector) const override
Definition TableColumnType.h:330
void set(uint04 index, uint04 vector_pos, sint01 value) override
Definition TableColumnType.h:270
void get(uint04 index, uint04 &value) const override
Definition TableColumnType.h:309
void get(uint04 index, uint04 vector_pos, uint08 &value) const override
Definition TableColumnType.h:297
void get(uint04 index, fltp08 &value) const override
Definition TableColumnType.h:316
void get(uint04 index, uint04 vector_pos, bool &value) const override
Definition TableColumnType.h:293
void get(uint04 index, uint08 &value) const override
Definition TableColumnType.h:310
void set(uint04 index, uint01 value) override
Definition TableColumnType.h:280
void get(uint04 index, sint04 &value) const override
Definition TableColumnType.h:313
void set(uint04 index, fltp04 value) override
Definition TableColumnType.h:288
void get(uint04 index, uint04 vector_pos, fltp04 &value) const override
Definition TableColumnType.h:302
void get(uint04 index, uint04 vector_pos, sint02 &value) const override
Definition TableColumnType.h:299
void set(uint04 index, uint04 vector_pos, sint02 value) override
Definition TableColumnType.h:271
void get(uint04 index, sint01 &value) const override
Definition TableColumnType.h:311
void set(uint04 index, uint04 value) override
Definition TableColumnType.h:282
TableVectorType(const Buffer< Vector< t_dims, t_type > > &buffer, const String &label)
Definition TableColumnType.h:259
void set(uint04 index, bool value) override
Definition TableColumnType.h:279
void set(uint04 index, sint04 value) override
Definition TableColumnType.h:286
virtual void removeIndices(const Buffer< uint04 > &offset_lookup_list) override
Definition TableColumnType.h:418
void set(uint04 index, uint04 vector_pos, uint02 value) override
Definition TableColumnType.h:267
void set(uint04 index, sint02 value) override
Definition TableColumnType.h:285
void get(uint04 index, uint04 vector_pos, String &value) const override
Definition TableColumnType.h:304
void get(uint04 index, RGBColor &value) const override
Definition TableColumnType.h:318
void get(uint04 index, String &value) const override
Definition TableColumnType.h:317
void getVector(uint04 index, Vector< 3, fltp04 > &vector) const override
Definition TableColumnType.h:320
static NDEVR_BASE_API Time SystemTime()
Retrieves the current system time.
Definition Time.cpp:475
Definition TypeInfo.h:39
Definition UUID.h:66
NDEVR_BASE_API UUID appendUUID(bool offset) const
Definition UUID.cpp:168
An element of a vector space. An element of the real coordinate space Rn Basis vector,...
Definition Vector.hpp:62
constexpr Vector< t_dims, t_new_type > as() const
Definition Vector.hpp:324
Definition ACIColor.h:37
int32_t sint04
-Defines an alias representing a 4 byte, signed integer. -Can represent exact integer values -2147483...
Definition BaseValues.hpp:76
constexpr std::enable_if<!ObjectInfo< t_type >::Buffer, TypeInfo >::type GetTypeInfo()
Definition TypeInfo.h:99
int64_t sint08
-Defines an alias representing an 8 byte, signed integer -Can represent exact integer values -9223372...
Definition BaseValues.hpp:86
@ MIN
Definition BaseValues.hpp:226
float fltp04
Defines an alias representing a 4 byte floating-point number.
Definition BaseValues.hpp:157
uint8_t uint01
-Defines an alias representing a 1 byte, unsigned integer -Can represent exact integer values 0 throu...
Definition BaseValues.hpp:98
int8_t sint01
-Defines an alias representing a 1 byte, signed integer. -Can represent exact integer values -127 thr...
Definition BaseValues.hpp:56
constexpr t_to rcast(t_from value)
Definition BaseValues.hpp:427
CompressionMode
Definition Compressor.h:12
@ e_default_compression
Definition Compressor.h:14
@ e_string_compression
Definition Compressor.h:16
@ e_string_reference
Definition Compressor.h:27
int16_t sint02
-Defines an alias representing a 2 byte, signed integer. -Can represent exact integer values -32767 t...
Definition BaseValues.hpp:66
uint64_t uint08
-Defines an alias representing an 8 byte, unsigned integer -Can represent exact integer values 0 thro...
Definition BaseValues.hpp:132
uint32_t uint04
-Defines an alias representing a 4 byte, unsigned integer -Can represent exact integer values 0 throu...
Definition BaseValues.hpp:120
constexpr t_to cast(const Angle< t_from > &value)
Definition Angle.h:514
uint16_t uint02
-Defines an alias representing a 2 byte, unsigned integer -Can represent exact integer values 0 throu...
Definition BaseValues.hpp:109
constexpr bool isNaN(const t_type &value)
Query if 'value' is valid or invalid.
Definition BaseFunctions.hpp:200
double fltp08
Defines an alias representing an 8 byte floating-point number.
Definition BaseValues.hpp:181
Definition Compressor.h:38
Definition BaseValues.hpp:272
Information about the object.
Definition ObjectInfo.h:56
Definition TableColumn.h:49
@ e_update
Definition TableColumn.h:52