/** * Access iterator reference data randomly with subscript. */ void* _basic_string_iterator_at(basic_string_iterator_t it_iter, int n_index) { void* pv_value = NULL; assert(_GET_BASIC_STRING_CONTAINER_TYPE(it_iter) == _BASIC_STRING_CONTAINER); _GET_VECTOR_CONTAINER_TYPE(it_iter) = _VECTOR_CONTAINER; pv_value = _vector_iterator_at(it_iter, n_index); assert(pv_value != NULL); _GET_BASIC_STRING_CONTAINER_TYPE(it_iter) = _BASIC_STRING_CONTAINER; return pv_value; }
/** * Element random access. */ void* iterator_at(iterator_t it_iter, int n_index) { assert(_iterator_is_valid(it_iter)); assert(_iterator_limit_type(it_iter, _RANDOM_ACCESS_ITERATOR)); switch (it_iter._t_containertype) { case _VECTOR_CONTAINER: return _vector_iterator_at(it_iter, n_index); break; case _DEQUE_CONTAINER: return _deque_iterator_at(it_iter, n_index); break; case _BASIC_STRING_CONTAINER: return _basic_string_iterator_at(it_iter, n_index); break; default: assert(false); return NULL; break; } }