7 #ifndef _QITYPE_DETAIL_TYPEMAP_HXX_
8 #define _QITYPE_DETAIL_TYPEMAP_HXX_
21 size_t size(
void* storage)
override;
24 void insert(
void** storage,
void* keyStorage,
void* valueStorage)
override;
37 this->_keyType = typeOf<typename M::key_type>();
38 this->_elementType = typeOf<typename M::mapped_type>();
54 template<
typename M>
size_t
57 M* ptr = (M*)ptrFromStorage(&storage);
65 M* ptr = (M*)ptrFromStorage(&storage);
72 M* ptr = (M*)ptrFromStorage(&storage);
76 template<
typename M>
void
79 M* ptr = (M*) ptrFromStorage(storage);
80 typename M::key_type& key = *(
typename M::key_type*)_keyType->ptrFromStorage(&keyStorage);
81 typename M::mapped_type& val = *(
typename M::mapped_type*)_elementType->ptrFromStorage(&valueStorage);
82 typename M::iterator it = ptr->find(key);
84 ptr->insert(std::make_pair(key, val));
93 M* ptr = (M*) ptrFromStorage(storage);
94 typename M::key_type* key = (
typename M::key_type*)_keyType->ptrFromStorage(&keyStorage);
95 typename M::iterator it = ptr->
find(*key);
100 typename M::mapped_type& e = (*ptr)[*key];
109 template<
typename K,
typename V,
typename C,
typename A>
113 #endif // _QITYPE_DETAIL_TYPEMAP_HXX_
TypeInterface * elementType() override
Get the types of the values of the map.
static AnyIterator make(const T &val)
void insert(void **storage, void *keyStorage, void *valueStorage) override
Set a key to a value and creates it if it does not exist.
AnyIterator end(void *storage) override
AnyReference find(const K &key)
size_t size(void *storage) override
Return the number of elements in the map.
AnyReference element(void **storage, void *keyStorage, bool autoInsert) override
TypeInterface * keyType() override
Get the types of the keys of the map.
_QI_BOUNCE_TYPE_METHODS(MethodsImpl)
AnyIterator begin(void *storage) override
Return an iterator pointing to the first key-value pair of the map.
static AnyReference from(const T &ref)
TypeInterface * _elementType