/** * Get the pointer that point to the iterator reference data. */ const void* _basic_string_iterator_get_pointer(basic_string_iterator_t it_iter) { void* pv_pointer = NULL; assert(_GET_BASIC_STRING_CONTAINER_TYPE(it_iter) == _BASIC_STRING_CONTAINER); _GET_VECTOR_CONTAINER_TYPE(it_iter) = _VECTOR_CONTAINER; pv_pointer = (void*)_vector_iterator_get_pointer(it_iter); _GET_BASIC_STRING_CONTAINER_TYPE(it_iter) = _BASIC_STRING_CONTAINER; return pv_pointer; }
/** * Get pointer that pointed by iterator. */ const void* iterator_get_pointer(iterator_t it_iter) { assert(_iterator_is_valid(it_iter)); assert(_iterator_limit_type(it_iter, _INPUT_ITERATOR)); switch (it_iter._t_containertype) { case _VECTOR_CONTAINER: return _vector_iterator_get_pointer(it_iter); break; case _LIST_CONTAINER: return _list_iterator_get_pointer(it_iter); break; case _DEQUE_CONTAINER: return _deque_iterator_get_pointer(it_iter); break; /* case _SLIST_CONTAINER: return _slist_iterator_get_pointer(it_iter); break; */ case _SET_CONTAINER: return _set_iterator_get_pointer(it_iter); break; case _MAP_CONTAINER: return _map_iterator_get_pointer(it_iter); break; case _HASH_SET_CONTAINER: return _hash_set_iterator_get_pointer(it_iter); break; case _HASH_MAP_CONTAINER: return _hash_map_iterator_get_pointer(it_iter); break; case _BASIC_STRING_CONTAINER: return _basic_string_iterator_get_pointer(it_iter); break; default: assert(false); return NULL; break; } }
/** * Access iterator reference data randomly with subscript. */ void* _vector_iterator_at(vector_iterator_t it_iter, int n_index) { it_iter = _vector_iterator_next_n(it_iter, n_index); return (void*)_vector_iterator_get_pointer(it_iter); }