1*2fe8fb19SBen Gras /* $NetBSD: heap.h,v 1.1.1.4 2009/04/12 16:35:44 christos Exp $ */ 2*2fe8fb19SBen Gras 3*2fe8fb19SBen Gras /* 4*2fe8fb19SBen Gras * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") 5*2fe8fb19SBen Gras * Copyright (c) 1997,1999 by Internet Software Consortium. 6*2fe8fb19SBen Gras * 7*2fe8fb19SBen Gras * Permission to use, copy, modify, and distribute this software for any 8*2fe8fb19SBen Gras * purpose with or without fee is hereby granted, provided that the above 9*2fe8fb19SBen Gras * copyright notice and this permission notice appear in all copies. 10*2fe8fb19SBen Gras * 11*2fe8fb19SBen Gras * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES 12*2fe8fb19SBen Gras * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 13*2fe8fb19SBen Gras * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR 14*2fe8fb19SBen Gras * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 15*2fe8fb19SBen Gras * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 16*2fe8fb19SBen Gras * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT 17*2fe8fb19SBen Gras * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 18*2fe8fb19SBen Gras */ 19*2fe8fb19SBen Gras 20*2fe8fb19SBen Gras typedef int (*heap_higher_priority_func)(void *, void *); 21*2fe8fb19SBen Gras typedef void (*heap_index_func)(void *, int); 22*2fe8fb19SBen Gras typedef void (*heap_for_each_func)(void *, void *); 23*2fe8fb19SBen Gras 24*2fe8fb19SBen Gras typedef struct heap_context { 25*2fe8fb19SBen Gras int array_size; 26*2fe8fb19SBen Gras int array_size_increment; 27*2fe8fb19SBen Gras int heap_size; 28*2fe8fb19SBen Gras void **heap; 29*2fe8fb19SBen Gras heap_higher_priority_func higher_priority; 30*2fe8fb19SBen Gras heap_index_func index; 31*2fe8fb19SBen Gras } *heap_context; 32*2fe8fb19SBen Gras 33*2fe8fb19SBen Gras #define heap_new __heap_new 34*2fe8fb19SBen Gras #define heap_free __heap_free 35*2fe8fb19SBen Gras #define heap_insert __heap_insert 36*2fe8fb19SBen Gras #define heap_delete __heap_delete 37*2fe8fb19SBen Gras #define heap_increased __heap_increased 38*2fe8fb19SBen Gras #define heap_decreased __heap_decreased 39*2fe8fb19SBen Gras #define heap_element __heap_element 40*2fe8fb19SBen Gras #define heap_for_each __heap_for_each 41*2fe8fb19SBen Gras 42*2fe8fb19SBen Gras heap_context heap_new(heap_higher_priority_func, heap_index_func, int); 43*2fe8fb19SBen Gras int heap_free(heap_context); 44*2fe8fb19SBen Gras int heap_insert(heap_context, void *); 45*2fe8fb19SBen Gras int heap_delete(heap_context, int); 46*2fe8fb19SBen Gras int heap_increased(heap_context, int); 47*2fe8fb19SBen Gras int heap_decreased(heap_context, int); 48*2fe8fb19SBen Gras void * heap_element(heap_context, int); 49*2fe8fb19SBen Gras int heap_for_each(heap_context, heap_for_each_func, void *); 50*2fe8fb19SBen Gras 51*2fe8fb19SBen Gras /*! \file */ 52