Annotation of gpl/axl/src/axl_hash.h, revision 1.1
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_HASH_H__
! 40: #define __AXL_HASH_H__
! 41:
! 42: #include <axl_decl.h>
! 43:
! 44: BEGIN_C_DECLS
! 45:
! 46: axlHash * axl_hash_new (axlHashFunc hash,
! 47: axlEqualFunc equal);
! 48:
! 49: axlHash * axl_hash_new_full (axlHashFunc hash,
! 50: axlEqualFunc equal,
! 51: int step);
! 52:
! 53: unsigned int axl_hash_string (axlPointer key);
! 54:
! 55: int axl_hash_equal_string (axlPointer keya,
! 56: axlPointer keyb);
! 57:
! 58: unsigned int axl_hash_int (axlPointer key);
! 59:
! 60: int axl_hash_equal_int (axlPointer keya,
! 61: axlPointer keyb);
! 62:
! 63: void axl_hash_insert (axlHash * hash,
! 64: axlPointer key,
! 65: axlPointer data);
! 66:
! 67: void axl_hash_insert_full (axlHash * hash,
! 68: axlPointer key,
! 69: axlDestroyFunc destroy_key,
! 70: axlPointer data,
! 71: axlDestroyFunc destroy_data);
! 72:
! 73: axl_bool axl_hash_remove (axlHash * hash,
! 74: axlPointer key);
! 75:
! 76: axl_bool axl_hash_delete (axlHash * hash,
! 77: axlPointer key);
! 78:
! 79: axl_bool axl_hash_exists (axlHash * hash,
! 80: axlPointer key);
! 81:
! 82: axlPointer axl_hash_get (axlHash * hash,
! 83: axlPointer key);
! 84:
! 85: void axl_hash_foreach (axlHash * hash,
! 86: axlHashForeachFunc func,
! 87: axlPointer user_data);
! 88:
! 89: void axl_hash_foreach2 (axlHash * hash,
! 90: axlHashForeachFunc2 func,
! 91: axlPointer user_data,
! 92: axlPointer user_data2);
! 93:
! 94: void axl_hash_foreach3 (axlHash * hash,
! 95: axlHashForeachFunc3 func,
! 96: axlPointer user_data,
! 97: axlPointer user_data2,
! 98: axlPointer user_data3);
! 99:
! 100: void axl_hash_foreach4 (axlHash * hash,
! 101: axlHashForeachFunc4 func,
! 102: axlPointer user_data,
! 103: axlPointer user_data2,
! 104: axlPointer user_data3,
! 105: axlPointer user_data4);
! 106:
! 107: int axl_hash_items (axlHash * hash);
! 108:
! 109: int axl_hash_capacity (axlHash * hash);
! 110:
! 111: axlHash * axl_hash_copy (axlHash * hash,
! 112: axlHashItemCopy key_copy,
! 113: axlHashItemCopy value_copy);
! 114:
! 115:
! 116: void axl_hash_show_status (axlHash * hash);
! 117:
! 118: typedef void (*axlHashPrintKeyData) (axlPointer key, axlPointer data);
! 119:
! 120: void axl_hash_show_status_full (axlHash * hash,
! 121: axlHashPrintKeyData show_item);
! 122:
! 123:
! 124: void axl_hash_free (axlHash * hash);
! 125:
! 126: /* cursor interface */
! 127: axlHashCursor * axl_hash_cursor_new (axlHash * hash);
! 128:
! 129: void axl_hash_cursor_first (axlHashCursor * cursor);
! 130:
! 131: void axl_hash_cursor_last (axlHashCursor * cursor);
! 132:
! 133: void axl_hash_cursor_next (axlHashCursor * cursor);
! 134:
! 135: axl_bool axl_hash_cursor_has_next (axlHashCursor * cursor);
! 136:
! 137: axl_bool axl_hash_cursor_has_item (axlHashCursor * cursor);
! 138:
! 139: void axl_hash_cursor_remove (axlHashCursor * cursor);
! 140:
! 141: axlPointer axl_hash_cursor_get_key (axlHashCursor * cursor);
! 142:
! 143: axlPointer axl_hash_cursor_get_value (axlHashCursor * cursor);
! 144:
! 145: axlHash * axl_hash_cursor_hash (axlHashCursor * cursor);
! 146:
! 147: void axl_hash_cursor_free (axlHashCursor * cursor);
! 148:
! 149: /* private api */
! 150: int __axl_hash_spare_max (axlHash * hash);
! 151:
! 152: int __axl_hash_spare_next (axlHash * hash);
! 153:
! 154: END_C_DECLS
! 155:
! 156: #endif
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>