set_iterator_t set_rend(const set_t* cpset_set) { set_iterator_t it_rend; assert(cpset_set != NULL); #ifdef CSTL_SET_AVL_TREE it_rend = _avl_tree_rend(&cpset_set->_t_tree); #else it_rend = _rb_tree_rend(&cpset_set->_t_tree); #endif _ITERATOR_CONTAINER(it_rend) = (set_t*)cpset_set; _SET_ITERATOR_CONTAINER_TYPE(it_rend) = _SET_CONTAINER; _SET_ITERATOR_ITERATOR_TYPE(it_rend) = _BIDIRECTIONAL_ITERATOR; return it_rend; }
multimap_reverse_iterator_t multimap_rend(const multimap_t* cpt_multimap) { multimap_reverse_iterator_t t_newiterator; assert(cpt_multimap != NULL); #ifdef CSTL_MULTIMAP_AVL_TREE t_newiterator = _avl_tree_rend(_GET_MULTIMAP_AVL_TREE(cpt_multimap)); #else t_newiterator = _rb_tree_rend(_GET_MULTIMAP_RB_TREE(cpt_multimap)); #endif _GET_CONTAINER(&t_newiterator) = (multimap_t*)cpt_multimap; _GET_MULTIMAP_CONTAINER_TYPE(&t_newiterator) = _MULTIMAP_CONTAINER; _GET_MULTIMAP_ITERATOR_TYPE(&t_newiterator) = _BIDIRECTIONAL_ITERATOR; return t_newiterator; }
map_reverse_iterator_t map_rend(const map_t* cpmap_map) { map_reverse_iterator_t it_rend; assert(cpmap_map != NULL); assert(_pair_is_inited(&cpmap_map->_pair_temp)); #ifdef CSTL_MAP_AVL_TREE it_rend = _avl_tree_rend(&cpmap_map->_t_tree); #else it_rend = _rb_tree_rend(&cpmap_map->_t_tree); #endif _GET_CONTAINER(it_rend) = (map_t*)cpmap_map; _GET_MAP_CONTAINER_TYPE(it_rend) = _MAP_CONTAINER; _GET_MAP_ITERATOR_TYPE(it_rend) = _BIDIRECTIONAL_ITERATOR; return it_rend; }