Flow123d
JS_before_hm-1804-gf2ad740aa
|
#include <accessors.hh>
Public Types | |
typedef T | DispatchType |
Converts C++ type T (template parameter) to 'DispatchType' from smaller set of types. More... | |
typedef internal::TypeDispatch< DispatchType >::ReadType | OutputType |
typedef internal::TypeDispatch< DispatchType >::InputType | InputType |
Public Member Functions | |
Iterator () | |
Iterator (const Input::Type::TypeBase &type, const Address &address, const unsigned int index) | |
Iterator< T > & | operator++ () |
Prefix. Advance operator. More... | |
Iterator< T > & | operator-- () |
Prefix. Back operator. More... | |
OutputType | operator* () const |
OutputType * | operator-> () const |
Static Private Member Functions | |
static InputType | type_check_and_convert (const Input::Type::TypeBase &type) |
Private Attributes | |
InputType | type_ |
Input type declaration. More... | |
internal::TypeDispatch< DispatchType >::TmpType | temporary_value_ |
This class behaves like iterator to type T
(the template parameter), but in fact it is iterator into input storage and also into tree of declarations through Input::Type classes.
This class provides only limited functionality of iterators, namely prefix advance operator ++(), dereference operator * (), dereference operator -> (), comparison operators == and != and implicit conversion to bool (false in the case of the 'null' iterator).
Definition at line 143 of file accessors.hh.
typedef T Input::Iterator< T >::DispatchType |
Converts C++ type T
(template parameter) to 'DispatchType' from smaller set of types.
Definition at line 731 of file accessors.hh.
typedef internal::TypeDispatch<DispatchType>::InputType Input::Iterator< T >::InputType |
A descendant of Input::Type::TypeBase that is appropriate to template parameter T
.
Definition at line 740 of file accessors.hh.
typedef internal::TypeDispatch<DispatchType>::ReadType Input::Iterator< T >::OutputType |
For small set of C++ types and accessor classes Record, AbstractRecord, and Array, returns type of value given by dereference of the iterator (just add const to C++ types).
Definition at line 736 of file accessors.hh.
|
inline |
Iterator is not default constructible.
Constructor uses empty Address which causes error in program, Address has to be filled.
Definition at line 748 of file accessors.hh.
|
inline |
Constructor. Creates iterator effectively pointing to data address_->get_storage()->get_item(index), that is parameter address
points to StorageArray and parameter index
gives index into this array. Parameter type
is Input::Type of object the iterator points to.
Definition at line 757 of file accessors.hh.
|
inline |
Dereference operator * ; Shouldn't we return type T, i.e. try to cast from OutputType to T ??
Definition at line 228 of file accessors_impl.hh.
|
inline |
Prefix. Advance operator.
Definition at line 212 of file accessors_impl.hh.
|
inline |
Prefix. Back operator.
Definition at line 220 of file accessors_impl.hh.
|
inline |
Dereference operator can be used only for iterators to accessors Record, AbstractRecord, and Array.
Definition at line 238 of file accessors_impl.hh.
|
staticprivate |
Check that Type::TypeBase reference is in fact object of InputType and returns converted copy (note that Type declaration objects are only handles.
Definition at line 252 of file accessors_impl.hh.
|
mutableprivate |
temporary for -> operator, necessary only for T == DispatchType == OutputType == any accessor: Record, AbstractRecord, Array
for other types this is just an int.
Definition at line 795 of file accessors.hh.
|
private |
Input type declaration.
Definition at line 787 of file accessors.hh.