/* * * Copyright (c) 1994 * Hewlett-Packard Company * * Permission to use, copy, modify, distribute and sell this software * and its documentation for any purpose is hereby granted without fee, * provided that the above copyright notice appear in all copies and * that both that copyright notice and this permission notice appear * in supporting documentation. Hewlett-Packard Company makes no * representations about the suitability of this software for any * purpose. It is provided "as is" without express or implied warranty. * * * Copyright (c) 1996 * Silicon Graphics Computer Systems, Inc. * * Permission to use, copy, modify, distribute and sell this software * and its documentation for any purpose is hereby granted without fee, * provided that the above copyright notice appear in all copies and * that both that copyright notice and this permission notice appear * in supporting documentation. Silicon Graphics makes no * representations about the suitability of this software for any * purpose. It is provided "as is" without express or implied warranty. */ /* Copyright (c) 2007 Lao wen bo This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. Lao wen bo viewpl(at)gmail.com */ #ifndef _C_VECTOR_H #define _C_VECTOR_H #include "c_def.h" #include "c_iterator.h" #define c_vector _c_vector #define c_pvector _c_pvector #define c_vector_create __c_vector #define c_vector_destroy __c_rotcev #define c_vector_begin _c_vector_begin #define c_vector_end _c_vector_end #define c_vector_rbegin _c_vector_rbegin #define c_vector_rend _c_vector_rend #define c_vector_size _c_vector_size #define c_vector_max_size _c_vector_max_size #define c_vector_empty _c_vector_empty #define c_vector_at _c_vector_at #define c_vector_assign _c_vector_assign #define c_vector_reserve _c_vector_reserve #define c_vector_front _c_vector_front #define c_vector_back _c_vector_back #define c_vector_push_back _c_vector_push_back #define c_vector_pop_back _c_vector_pop_back #define c_vector_swap _c_vector_swap #define c_vector_insert _c_vector_insert #define c_vector_insert2 _c_vector_insert2 #define c_vector_fill_insert _c_vector_fill_insert #define c_vector_erase _c_vector_erase #define c_vector_erase2 _c_vector_erase2 #define c_vector_clear _c_vector_clear #define c_vector_resize _c_vector_resize #define c_vector_equal _c_vector_equal #define c_vector_less _c_vector_less #define abs _abs typedef struct c_vector { COMPARER _cmp; void * _l; } c_vector, * c_pvector; int _abs(signed int i); void __c_vector(c_pvector thiz, COMPARER pcmp); void __c_rotcev(c_pvector thiz); c_iterator c_vector_begin(c_pvector thiz); c_iterator c_vector_end(c_pvector thiz); c_reverse_iterator c_vector_rbegin(c_pvector thiz); c_reverse_iterator c_vector_rend(c_pvector thiz); size_type c_vector_size(c_pvector thiz); size_type c_vector_max_size(c_pvector thiz); size_type c_vector_capacity(c_pvector thiz); c_bool c_vector_empty(c_pvector thiz); value_type c_vector_at(c_pvector thiz, size_type n); c_pvector c_vector_assign(c_pvector thiz, const c_pvector V); void c_vector_reserve(c_pvector thiz, size_t n); value_type c_vector_front(c_pvector thiz); value_type c_vector_back(c_pvector thiz); void c_vector_push_back(c_pvector thiz, const value_type val); void c_vector_pop_back(c_pvector thiz); void c_vector_swap(c_pvector thiz, c_pvector V); c_iterator c_vector_insert(c_pvector thiz, c_iterator pos, const value_type val); void c_vector_insert2(c_pvector thiz, c_iterator pos, c_iterator first, c_iterator last); void c_vector_fill_insert(c_pvector thiz, c_iterator pos, size_type n, const value_type val); c_iterator c_vector_erase(c_pvector thiz, c_iterator pos); c_iterator c_vector_erase2(c_pvector thiz, c_iterator first, c_iterator last); void c_vector_clear(c_pvector thiz); void c_vector_resize(c_pvector thiz, size_t n); c_bool c_vector_equal(c_pvector thiz, const c_pvector V); c_bool c_vector_less(c_pvector thiz, const c_pvector V); #endif /* _C_VECTOR_H */