Annotation of gpl/axl/src/axl_list.h, revision 1.1.1.2

1.1       misho       1: /*
                      2:  *  LibAxl:  Another XML library
                      3:  *  Copyright (C) 2006 Advanced Software Production Line, S.L.
                      4:  *
                      5:  *  This program is free software; you can redistribute it and/or
                      6:  *  modify it under the terms of the GNU Lesser General Public License
                      7:  *  as published by the Free Software Foundation; either version 2.1 of
                      8:  *  the License, or (at your option) any later version.
                      9:  *
                     10:  *  This program is distributed in the hope that it will be useful,
                     11:  *  but WITHOUT ANY WARRANTY; without even the implied warranty of 
                     12:  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
                     13:  *  GNU Lesser General Public License for more details.
                     14:  *
                     15:  *  You should have received a copy of the GNU Lesser General Public
                     16:  *  License along with this program; if not, write to the Free
                     17:  *  Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
                     18:  *  02111-1307 USA
                     19:  *  
                     20:  *  You may find a copy of the license under this software is released
                     21:  *  at COPYING file. This is LGPL software: you are welcome to
                     22:  *  develop proprietary applications using this library without any
                     23:  *  royalty or fee but returning back any change, improvement or
                     24:  *  addition in the form of source code, project image, documentation
                     25:  *  patches, etc. 
                     26:  *
                     27:  *  For commercial support on build XML enabled solutions contact us:
                     28:  *          
                     29:  *      Postal address:
                     30:  *         Advanced Software Production Line, S.L.
                     31:  *         Edificio Alius A, Oficina 102,
                     32:  *         C/ Antonio Suarez Nº 10,
                     33:  *         Alcalá de Henares 28802 Madrid
                     34:  *         Spain
                     35:  *
                     36:  *      Email address:
                     37:  *         info@aspl.es - http://www.aspl.es/xml
                     38:  */
                     39: #ifndef __AXL_LIST_H__
                     40: #define __AXL_LIST_H__
                     41: 
                     42: #include <axl_decl.h>
                     43: 
                     44: BEGIN_C_DECLS
                     45: 
                     46: axlList  * axl_list_new    (axlEqualFunc are_equal, axlDestroyFunc destroy_data);
                     47: 
                     48: void       axl_list_set_destroy_func (axlList * list, axlDestroyFunc destroy_func);
                     49: 
                     50: int        axl_list_equal_string (axlPointer a, axlPointer b);
                     51: 
1.1.1.2 ! misho      52: int        axl_list_order_string (axlPointer a, axlPointer b);
        !            53: 
1.1       misho      54: int        axl_list_equal_int    (axlPointer a, axlPointer b);
                     55: 
                     56: int        axl_list_always_return_1 (axlPointer a, axlPointer b);
                     57: 
                     58: axlList  * axl_list_copy   (axlList * list, axlDuplicateFunc func);
                     59: 
                     60: void       axl_list_add    (axlList * list, axlPointer pointer);
                     61: 
                     62: void       axl_list_add_at (axlList * list, axlPointer pointer, int position);
                     63: 
                     64: void       axl_list_prepend (axlList * list, axlPointer pointer);
                     65: 
                     66: void       axl_list_append  (axlList * list, axlPointer pointer);
                     67: 
                     68: void       axl_list_remove     (axlList * list, axlPointer pointer);
                     69: 
                     70: void       axl_list_remove_ptr (axlList * list, axlPointer pointer);
                     71: 
                     72: void       axl_list_remove_at  (axlList * list, int position);
                     73: 
                     74: void       axl_list_unlink (axlList * list, axlPointer pointer);
                     75: 
                     76: void       axl_list_unlink_ptr (axlList * list, axlPointer pointer);
                     77: 
                     78: void       axl_list_unlink_at  (axlList * list, int position);
                     79: 
                     80: void       axl_list_remove_first (axlList * list);
                     81: 
                     82: void       axl_list_unlink_first (axlList * list);
                     83: 
                     84: void       axl_list_remove_last (axlList * list);
                     85: 
                     86: void       axl_list_unlink_last (axlList * list);
                     87: 
                     88: axl_bool   axl_list_exists (axlList * list, axlPointer pointer);
                     89: 
                     90: axl_bool   axl_list_exists_at (axlList * list, axlPointer pointer, int position);
                     91: 
                     92: axl_bool   axl_list_is_empty  (axlList * list);
                     93: 
                     94: axlPointer axl_list_get_first (axlList * list);
                     95: 
                     96: axlPointer axl_list_get_last  (axlList * list);
                     97: 
                     98: axlPointer axl_list_get_nth   (axlList * list, int position);
                     99: 
                    100: axlPointer axl_list_lookup    (axlList * list, axlLookupFunc func, axlPointer data);
                    101: 
1.1.1.2 ! misho     102: /** 
        !           103:  * @brief Convenient alias to axl_list_lookup to implement axlList foreach operation.
        !           104:  *
        !           105:  * Because \ref axl_list_lookup can be used to implement a foreach
        !           106:  * function (making \ref axlLookupFunc to always return axl_false)
        !           107:  * this alias exists to write code that is pretending doing a lookup
        !           108:  * (so developer can read it easily). That is, the alias just exists
        !           109:  * to allow writing \ref axl_list_foreach instead of \ref
        !           110:  * axl_list_lookup when a foreach is implemented (not a lookup).
        !           111:  *
        !           112:  * @param list The list where the foreach operation will take place.
        !           113:  *
        !           114:  * @param func The handler that will be called for each item found in the list.
        !           115:  *
        !           116:  * @param data Optional user pointer that will be passed to the
        !           117:  * foreach function along with the item list data.
        !           118:  */
        !           119: #define axl_list_foreach(list, func, data) axl_list_lookup(list,func,data)
        !           120: 
1.1       misho     121: axl_bool   axl_list_find_string (axlPointer element, axlPointer data);
                    122: 
                    123: int        axl_list_length (axlList * list);
                    124: 
                    125: void       axl_list_free (axlList * list);
                    126: 
                    127: /* cursor interface */
                    128: axlListCursor * axl_list_cursor_new          (axlList * list);
                    129: 
                    130: void            axl_list_cursor_first        (axlListCursor * cursor);
                    131: 
                    132: void            axl_list_cursor_last         (axlListCursor * cursor);
                    133: 
                    134: void            axl_list_cursor_next         (axlListCursor * cursor);
                    135: 
                    136: void            axl_list_cursor_previous     (axlListCursor * cursor);
                    137: 
                    138: axl_bool        axl_list_cursor_has_next     (axlListCursor * cursor);
                    139: 
                    140: axl_bool        axl_list_cursor_has_previous (axlListCursor * cursor);
                    141: 
                    142: axl_bool        axl_list_cursor_has_item     (axlListCursor * cursor);
                    143: 
                    144: void            axl_list_cursor_unlink       (axlListCursor * cursor);
                    145: 
                    146: void            axl_list_cursor_remove       (axlListCursor * cursor);
                    147: 
                    148: axlPointer      axl_list_cursor_get          (axlListCursor * cursor);
                    149: 
                    150: axlList       * axl_list_cursor_list         (axlListCursor * cursor);
                    151: 
                    152: void            axl_list_cursor_free         (axlListCursor * cursor);
                    153: 
                    154: END_C_DECLS
                    155: 
                    156: #endif

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>