7 #ifndef _QITYPE_DETAILS_TYPEMAP_HXX_
8 #define _QITYPE_DETAILS_TYPEMAP_HXX_
23 virtual size_t size(
void* storage);
26 virtual void insert(
void** storage,
void* keyStorage,
void* valueStorage);
39 this->_keyType = typeOf<typename M::key_type>();
40 this->_elementType = typeOf<typename M::mapped_type>();
56 template<
typename M>
size_t
59 M* ptr = (M*)ptrFromStorage(&storage);
67 M* ptr = (M*)ptrFromStorage(&storage);
74 M* ptr = (M*)ptrFromStorage(&storage);
78 template<
typename M>
void
81 M* ptr = (M*) ptrFromStorage(storage);
82 typename M::key_type& key = *(
typename M::key_type*)_keyType->ptrFromStorage(&keyStorage);
83 typename M::mapped_type& val = *(
typename M::mapped_type*)_elementType->ptrFromStorage(&valueStorage);
84 typename M::iterator it = ptr->find(key);
86 ptr->insert(std::make_pair(key, val));
95 M* ptr = (M*) ptrFromStorage(storage);
96 typename M::key_type* key = (
typename M::key_type*)_keyType->ptrFromStorage(&keyStorage);
97 typename M::iterator it = ptr->
find(*key);
102 typename M::mapped_type& e = (*ptr)[*key];
111 template<
typename K,
typename V,
typename C,
typename A>
115 #endif // _QITYPE_DETAILS_TYPEMAP_HXX_
static AnyIterator make(const T &val)
virtual void insert(void **storage, void *keyStorage, void *valueStorage)
Set a key to a value and creates it if it does not exist.
virtual AnyIterator begin(void *storage)
Return an iterator pointing to the first key-value pair of the map.
AnyReference find(const K &key)
virtual TypeInterface * keyType()
Get the types of the keys of the map.
virtual size_t size(void *storage)
Return the number of elements in the map.
_QI_BOUNCE_TYPE_METHODS(MethodsImpl)
static AnyReference from(const T &ref)
DefaultTypeImplMethods< M, TypeByPointerPOD< M > > MethodsImpl
virtual TypeInterface * elementType()
Get the types of the values of the map.
virtual AnyIterator end(void *storage)
virtual AnyReference element(void **storage, void *keyStorage, bool autoInsert)
TypeInterface * _elementType