28 #ifndef __RTTR_VARIANT_ARRAY_H__
29 #define __RTTR_VARIANT_ARRAY_H__
42 class array_container_base;
191 ,
typename std::enable_if<!std::is_same<variant_array&, T>::value >::
type* = 0
192 ,
typename std::enable_if<!std::is_const<T>::value >::
type* = 0
216 bool is_valid()
const;
253 bool is_dynamic()
const;
261 std::size_t get_rank()
const;
270 type get_rank_type(std::size_t index)
const;
279 type get_type()
const;
286 bool is_raw_array()
const;
293 std::size_t get_size()
const;
301 std::size_t get_size(std::size_t index_1)
const;
309 std::size_t get_size(std::size_t index_1, std::size_t index_2)
const;
317 std::size_t get_size_variadic(
const std::vector<std::size_t>& index_list)
const;
324 bool set_size(std::size_t new_size);
332 bool set_size(std::size_t new_size, std::size_t index_1);
341 bool set_size(std::size_t new_size, std::size_t index_1, std::size_t index_2);
349 bool set_size_variadic(std::size_t new_size,
const std::vector<std::size_t>& index_list);
356 bool set_value(detail::argument arg);
364 bool set_value(std::size_t index_1, detail::argument arg);
372 bool set_value(std::size_t index_1, std::size_t index_2, detail::argument arg);
380 bool set_value(std::size_t index_1, std::size_t index_2, std::size_t index_3, detail::argument arg);
390 bool set_value_variadic(
const std::vector<std::size_t>& index_list, detail::argument arg);
398 variant get_value(std::size_t index_1)
const;
406 variant get_value(std::size_t index_1, std::size_t index_2)
const;
414 variant get_value(std::size_t index_1, std::size_t index_2, std::size_t index_3)
const;
421 variant get_value_variadic(
const std::vector<std::size_t>& index_list)
const;
430 bool insert_value(std::size_t index_1, detail::argument arg);
440 bool insert_value(std::size_t index_1, std::size_t index_2, detail::argument arg);
450 bool insert_value(std::size_t index_1, std::size_t index_2, std::size_t index_3, detail::argument arg);
459 bool insert_value_variadic(
const std::vector<std::size_t>& index_list, detail::argument arg);
466 bool remove_value(std::size_t index_1);
474 bool remove_value(std::size_t index_1, std::size_t index_2);
482 bool remove_value(std::size_t index_1, std::size_t index_2, std::size_t index_3);
489 bool remove_value_variadic(
const std::vector<std::size_t>& index_list);
499 void* get_ptr()
const;
503 friend class detail::argument;
504 detail::array_container_base* _container;
511 #include "rttr/impl/variant_array_impl.h"
513 #endif // __RTTR_VARIANT_ARRAY_H__
This class holds the type information for any arbitrary object.
Definition: type.h:165
The variant class allows to store data of any type and convert between these types transparently...
Definition: variant.h:125
The variant_array class is a specialization of a variant, but for array types.
Definition: variant_array.h:169
#define RTTR_API
Definition: core_prerequisites.h:124