Ion
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
ion::base::Variant< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40 >::ArrayAccessor Struct Reference

ArrayAccessor lets callers use operator[] with a Variant in most simple cases, as opposed to using the SetValueAt(i) and GetValueAt(i) functions above. More...

#include "variant.h"

Collaboration diagram for ion::base::Variant< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40 >::ArrayAccessor:

Public Member Functions

 ArrayAccessor (Variant *v, size_t i)
 
template<typename T >
 operator const T () const
 
template<typename T >
void operator= (const T &value)
 
template<typename T >
bool operator== (const T &value) const
 

Public Attributes

Variantvariant_
 
size_t i
 

Detailed Description

template<typename T1, typename T2 = internal_variant_utils::EmptyType<2>, typename T3 = internal_variant_utils::EmptyType<3>, typename T4 = internal_variant_utils::EmptyType<4>, typename T5 = internal_variant_utils::EmptyType<5>, typename T6 = internal_variant_utils::EmptyType<6>, typename T7 = internal_variant_utils::EmptyType<7>, typename T8 = internal_variant_utils::EmptyType<8>, typename T9 = internal_variant_utils::EmptyType<9>, typename T10 = internal_variant_utils::EmptyType<10>, typename T11 = internal_variant_utils::EmptyType<11>, typename T12 = internal_variant_utils::EmptyType<12>, typename T13 = internal_variant_utils::EmptyType<13>, typename T14 = internal_variant_utils::EmptyType<14>, typename T15 = internal_variant_utils::EmptyType<15>, typename T16 = internal_variant_utils::EmptyType<16>, typename T17 = internal_variant_utils::EmptyType<17>, typename T18 = internal_variant_utils::EmptyType<18>, typename T19 = internal_variant_utils::EmptyType<19>, typename T20 = internal_variant_utils::EmptyType<20>, typename T21 = internal_variant_utils::EmptyType<21>, typename T22 = internal_variant_utils::EmptyType<22>, typename T23 = internal_variant_utils::EmptyType<23>, typename T24 = internal_variant_utils::EmptyType<24>, typename T25 = internal_variant_utils::EmptyType<25>, typename T26 = internal_variant_utils::EmptyType<26>, typename T27 = internal_variant_utils::EmptyType<27>, typename T28 = internal_variant_utils::EmptyType<28>, typename T29 = internal_variant_utils::EmptyType<29>, typename T30 = internal_variant_utils::EmptyType<30>, typename T31 = internal_variant_utils::EmptyType<31>, typename T32 = internal_variant_utils::EmptyType<32>, typename T33 = internal_variant_utils::EmptyType<33>, typename T34 = internal_variant_utils::EmptyType<34>, typename T35 = internal_variant_utils::EmptyType<35>, typename T36 = internal_variant_utils::EmptyType<36>, typename T37 = internal_variant_utils::EmptyType<37>, typename T38 = internal_variant_utils::EmptyType<38>, typename T39 = internal_variant_utils::EmptyType<39>, typename T40 = internal_variant_utils::EmptyType<40>>
struct ion::base::Variant< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40 >::ArrayAccessor

ArrayAccessor lets callers use operator[] with a Variant in most simple cases, as opposed to using the SetValueAt(i) and GetValueAt(i) functions above.

The accessor acts as a proxy between the array operator below on the Variant and the actual getting, setting, or comparison of the value. Note that in some cases a static_cast is required for the accessor to know the array type of the underlying Variant. Examples: Variant<int, double> v; const float f = 10.f; v.InitArray<int>(Allocator(NULL), 2); v[0] = 10; v[1] = static_cast<int>(f); const int i = v[0]; const float f2 = static_cast<float>(v[1]);

Definition at line 413 of file variant.h.

Constructor & Destructor Documentation

template<typename T1, typename T2 = internal_variant_utils::EmptyType<2>, typename T3 = internal_variant_utils::EmptyType<3>, typename T4 = internal_variant_utils::EmptyType<4>, typename T5 = internal_variant_utils::EmptyType<5>, typename T6 = internal_variant_utils::EmptyType<6>, typename T7 = internal_variant_utils::EmptyType<7>, typename T8 = internal_variant_utils::EmptyType<8>, typename T9 = internal_variant_utils::EmptyType<9>, typename T10 = internal_variant_utils::EmptyType<10>, typename T11 = internal_variant_utils::EmptyType<11>, typename T12 = internal_variant_utils::EmptyType<12>, typename T13 = internal_variant_utils::EmptyType<13>, typename T14 = internal_variant_utils::EmptyType<14>, typename T15 = internal_variant_utils::EmptyType<15>, typename T16 = internal_variant_utils::EmptyType<16>, typename T17 = internal_variant_utils::EmptyType<17>, typename T18 = internal_variant_utils::EmptyType<18>, typename T19 = internal_variant_utils::EmptyType<19>, typename T20 = internal_variant_utils::EmptyType<20>, typename T21 = internal_variant_utils::EmptyType<21>, typename T22 = internal_variant_utils::EmptyType<22>, typename T23 = internal_variant_utils::EmptyType<23>, typename T24 = internal_variant_utils::EmptyType<24>, typename T25 = internal_variant_utils::EmptyType<25>, typename T26 = internal_variant_utils::EmptyType<26>, typename T27 = internal_variant_utils::EmptyType<27>, typename T28 = internal_variant_utils::EmptyType<28>, typename T29 = internal_variant_utils::EmptyType<29>, typename T30 = internal_variant_utils::EmptyType<30>, typename T31 = internal_variant_utils::EmptyType<31>, typename T32 = internal_variant_utils::EmptyType<32>, typename T33 = internal_variant_utils::EmptyType<33>, typename T34 = internal_variant_utils::EmptyType<34>, typename T35 = internal_variant_utils::EmptyType<35>, typename T36 = internal_variant_utils::EmptyType<36>, typename T37 = internal_variant_utils::EmptyType<37>, typename T38 = internal_variant_utils::EmptyType<38>, typename T39 = internal_variant_utils::EmptyType<39>, typename T40 = internal_variant_utils::EmptyType<40>>
ion::base::Variant< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40 >::ArrayAccessor::ArrayAccessor ( Variant v,
size_t  i 
)
inline

Definition at line 414 of file variant.h.

Member Function Documentation

template<typename T1, typename T2 = internal_variant_utils::EmptyType<2>, typename T3 = internal_variant_utils::EmptyType<3>, typename T4 = internal_variant_utils::EmptyType<4>, typename T5 = internal_variant_utils::EmptyType<5>, typename T6 = internal_variant_utils::EmptyType<6>, typename T7 = internal_variant_utils::EmptyType<7>, typename T8 = internal_variant_utils::EmptyType<8>, typename T9 = internal_variant_utils::EmptyType<9>, typename T10 = internal_variant_utils::EmptyType<10>, typename T11 = internal_variant_utils::EmptyType<11>, typename T12 = internal_variant_utils::EmptyType<12>, typename T13 = internal_variant_utils::EmptyType<13>, typename T14 = internal_variant_utils::EmptyType<14>, typename T15 = internal_variant_utils::EmptyType<15>, typename T16 = internal_variant_utils::EmptyType<16>, typename T17 = internal_variant_utils::EmptyType<17>, typename T18 = internal_variant_utils::EmptyType<18>, typename T19 = internal_variant_utils::EmptyType<19>, typename T20 = internal_variant_utils::EmptyType<20>, typename T21 = internal_variant_utils::EmptyType<21>, typename T22 = internal_variant_utils::EmptyType<22>, typename T23 = internal_variant_utils::EmptyType<23>, typename T24 = internal_variant_utils::EmptyType<24>, typename T25 = internal_variant_utils::EmptyType<25>, typename T26 = internal_variant_utils::EmptyType<26>, typename T27 = internal_variant_utils::EmptyType<27>, typename T28 = internal_variant_utils::EmptyType<28>, typename T29 = internal_variant_utils::EmptyType<29>, typename T30 = internal_variant_utils::EmptyType<30>, typename T31 = internal_variant_utils::EmptyType<31>, typename T32 = internal_variant_utils::EmptyType<32>, typename T33 = internal_variant_utils::EmptyType<33>, typename T34 = internal_variant_utils::EmptyType<34>, typename T35 = internal_variant_utils::EmptyType<35>, typename T36 = internal_variant_utils::EmptyType<36>, typename T37 = internal_variant_utils::EmptyType<37>, typename T38 = internal_variant_utils::EmptyType<38>, typename T39 = internal_variant_utils::EmptyType<39>, typename T40 = internal_variant_utils::EmptyType<40>>
template<typename T >
ion::base::Variant< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40 >::ArrayAccessor::operator const T ( ) const
inline
template<typename T1, typename T2 = internal_variant_utils::EmptyType<2>, typename T3 = internal_variant_utils::EmptyType<3>, typename T4 = internal_variant_utils::EmptyType<4>, typename T5 = internal_variant_utils::EmptyType<5>, typename T6 = internal_variant_utils::EmptyType<6>, typename T7 = internal_variant_utils::EmptyType<7>, typename T8 = internal_variant_utils::EmptyType<8>, typename T9 = internal_variant_utils::EmptyType<9>, typename T10 = internal_variant_utils::EmptyType<10>, typename T11 = internal_variant_utils::EmptyType<11>, typename T12 = internal_variant_utils::EmptyType<12>, typename T13 = internal_variant_utils::EmptyType<13>, typename T14 = internal_variant_utils::EmptyType<14>, typename T15 = internal_variant_utils::EmptyType<15>, typename T16 = internal_variant_utils::EmptyType<16>, typename T17 = internal_variant_utils::EmptyType<17>, typename T18 = internal_variant_utils::EmptyType<18>, typename T19 = internal_variant_utils::EmptyType<19>, typename T20 = internal_variant_utils::EmptyType<20>, typename T21 = internal_variant_utils::EmptyType<21>, typename T22 = internal_variant_utils::EmptyType<22>, typename T23 = internal_variant_utils::EmptyType<23>, typename T24 = internal_variant_utils::EmptyType<24>, typename T25 = internal_variant_utils::EmptyType<25>, typename T26 = internal_variant_utils::EmptyType<26>, typename T27 = internal_variant_utils::EmptyType<27>, typename T28 = internal_variant_utils::EmptyType<28>, typename T29 = internal_variant_utils::EmptyType<29>, typename T30 = internal_variant_utils::EmptyType<30>, typename T31 = internal_variant_utils::EmptyType<31>, typename T32 = internal_variant_utils::EmptyType<32>, typename T33 = internal_variant_utils::EmptyType<33>, typename T34 = internal_variant_utils::EmptyType<34>, typename T35 = internal_variant_utils::EmptyType<35>, typename T36 = internal_variant_utils::EmptyType<36>, typename T37 = internal_variant_utils::EmptyType<37>, typename T38 = internal_variant_utils::EmptyType<38>, typename T39 = internal_variant_utils::EmptyType<39>, typename T40 = internal_variant_utils::EmptyType<40>>
template<typename T >
void ion::base::Variant< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40 >::ArrayAccessor::operator= ( const T value)
inline
template<typename T1, typename T2 = internal_variant_utils::EmptyType<2>, typename T3 = internal_variant_utils::EmptyType<3>, typename T4 = internal_variant_utils::EmptyType<4>, typename T5 = internal_variant_utils::EmptyType<5>, typename T6 = internal_variant_utils::EmptyType<6>, typename T7 = internal_variant_utils::EmptyType<7>, typename T8 = internal_variant_utils::EmptyType<8>, typename T9 = internal_variant_utils::EmptyType<9>, typename T10 = internal_variant_utils::EmptyType<10>, typename T11 = internal_variant_utils::EmptyType<11>, typename T12 = internal_variant_utils::EmptyType<12>, typename T13 = internal_variant_utils::EmptyType<13>, typename T14 = internal_variant_utils::EmptyType<14>, typename T15 = internal_variant_utils::EmptyType<15>, typename T16 = internal_variant_utils::EmptyType<16>, typename T17 = internal_variant_utils::EmptyType<17>, typename T18 = internal_variant_utils::EmptyType<18>, typename T19 = internal_variant_utils::EmptyType<19>, typename T20 = internal_variant_utils::EmptyType<20>, typename T21 = internal_variant_utils::EmptyType<21>, typename T22 = internal_variant_utils::EmptyType<22>, typename T23 = internal_variant_utils::EmptyType<23>, typename T24 = internal_variant_utils::EmptyType<24>, typename T25 = internal_variant_utils::EmptyType<25>, typename T26 = internal_variant_utils::EmptyType<26>, typename T27 = internal_variant_utils::EmptyType<27>, typename T28 = internal_variant_utils::EmptyType<28>, typename T29 = internal_variant_utils::EmptyType<29>, typename T30 = internal_variant_utils::EmptyType<30>, typename T31 = internal_variant_utils::EmptyType<31>, typename T32 = internal_variant_utils::EmptyType<32>, typename T33 = internal_variant_utils::EmptyType<33>, typename T34 = internal_variant_utils::EmptyType<34>, typename T35 = internal_variant_utils::EmptyType<35>, typename T36 = internal_variant_utils::EmptyType<36>, typename T37 = internal_variant_utils::EmptyType<37>, typename T38 = internal_variant_utils::EmptyType<38>, typename T39 = internal_variant_utils::EmptyType<39>, typename T40 = internal_variant_utils::EmptyType<40>>
template<typename T >
bool ion::base::Variant< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40 >::ArrayAccessor::operator== ( const T value) const
inline

Member Data Documentation

template<typename T1, typename T2 = internal_variant_utils::EmptyType<2>, typename T3 = internal_variant_utils::EmptyType<3>, typename T4 = internal_variant_utils::EmptyType<4>, typename T5 = internal_variant_utils::EmptyType<5>, typename T6 = internal_variant_utils::EmptyType<6>, typename T7 = internal_variant_utils::EmptyType<7>, typename T8 = internal_variant_utils::EmptyType<8>, typename T9 = internal_variant_utils::EmptyType<9>, typename T10 = internal_variant_utils::EmptyType<10>, typename T11 = internal_variant_utils::EmptyType<11>, typename T12 = internal_variant_utils::EmptyType<12>, typename T13 = internal_variant_utils::EmptyType<13>, typename T14 = internal_variant_utils::EmptyType<14>, typename T15 = internal_variant_utils::EmptyType<15>, typename T16 = internal_variant_utils::EmptyType<16>, typename T17 = internal_variant_utils::EmptyType<17>, typename T18 = internal_variant_utils::EmptyType<18>, typename T19 = internal_variant_utils::EmptyType<19>, typename T20 = internal_variant_utils::EmptyType<20>, typename T21 = internal_variant_utils::EmptyType<21>, typename T22 = internal_variant_utils::EmptyType<22>, typename T23 = internal_variant_utils::EmptyType<23>, typename T24 = internal_variant_utils::EmptyType<24>, typename T25 = internal_variant_utils::EmptyType<25>, typename T26 = internal_variant_utils::EmptyType<26>, typename T27 = internal_variant_utils::EmptyType<27>, typename T28 = internal_variant_utils::EmptyType<28>, typename T29 = internal_variant_utils::EmptyType<29>, typename T30 = internal_variant_utils::EmptyType<30>, typename T31 = internal_variant_utils::EmptyType<31>, typename T32 = internal_variant_utils::EmptyType<32>, typename T33 = internal_variant_utils::EmptyType<33>, typename T34 = internal_variant_utils::EmptyType<34>, typename T35 = internal_variant_utils::EmptyType<35>, typename T36 = internal_variant_utils::EmptyType<36>, typename T37 = internal_variant_utils::EmptyType<37>, typename T38 = internal_variant_utils::EmptyType<38>, typename T39 = internal_variant_utils::EmptyType<39>, typename T40 = internal_variant_utils::EmptyType<40>>
size_t ion::base::Variant< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40 >::ArrayAccessor::i
template<typename T1, typename T2 = internal_variant_utils::EmptyType<2>, typename T3 = internal_variant_utils::EmptyType<3>, typename T4 = internal_variant_utils::EmptyType<4>, typename T5 = internal_variant_utils::EmptyType<5>, typename T6 = internal_variant_utils::EmptyType<6>, typename T7 = internal_variant_utils::EmptyType<7>, typename T8 = internal_variant_utils::EmptyType<8>, typename T9 = internal_variant_utils::EmptyType<9>, typename T10 = internal_variant_utils::EmptyType<10>, typename T11 = internal_variant_utils::EmptyType<11>, typename T12 = internal_variant_utils::EmptyType<12>, typename T13 = internal_variant_utils::EmptyType<13>, typename T14 = internal_variant_utils::EmptyType<14>, typename T15 = internal_variant_utils::EmptyType<15>, typename T16 = internal_variant_utils::EmptyType<16>, typename T17 = internal_variant_utils::EmptyType<17>, typename T18 = internal_variant_utils::EmptyType<18>, typename T19 = internal_variant_utils::EmptyType<19>, typename T20 = internal_variant_utils::EmptyType<20>, typename T21 = internal_variant_utils::EmptyType<21>, typename T22 = internal_variant_utils::EmptyType<22>, typename T23 = internal_variant_utils::EmptyType<23>, typename T24 = internal_variant_utils::EmptyType<24>, typename T25 = internal_variant_utils::EmptyType<25>, typename T26 = internal_variant_utils::EmptyType<26>, typename T27 = internal_variant_utils::EmptyType<27>, typename T28 = internal_variant_utils::EmptyType<28>, typename T29 = internal_variant_utils::EmptyType<29>, typename T30 = internal_variant_utils::EmptyType<30>, typename T31 = internal_variant_utils::EmptyType<31>, typename T32 = internal_variant_utils::EmptyType<32>, typename T33 = internal_variant_utils::EmptyType<33>, typename T34 = internal_variant_utils::EmptyType<34>, typename T35 = internal_variant_utils::EmptyType<35>, typename T36 = internal_variant_utils::EmptyType<36>, typename T37 = internal_variant_utils::EmptyType<37>, typename T38 = internal_variant_utils::EmptyType<38>, typename T39 = internal_variant_utils::EmptyType<39>, typename T40 = internal_variant_utils::EmptyType<40>>
Variant* ion::base::Variant< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40 >::ArrayAccessor::variant_

The documentation for this struct was generated from the following file: