michael@0: /* $NetBSD: heap.h,v 1.1.1.1 2004/05/20 19:49:41 christos Exp $ */ michael@0: michael@0: /* michael@0: * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") michael@0: * Copyright (c) 1997,1999 by Internet Software Consortium. michael@0: * michael@0: * Permission to use, copy, modify, and distribute this software for any michael@0: * purpose with or without fee is hereby granted, provided that the above michael@0: * copyright notice and this permission notice appear in all copies. michael@0: * michael@0: * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES michael@0: * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF michael@0: * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR michael@0: * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES michael@0: * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN michael@0: * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT michael@0: * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. michael@0: */ michael@0: michael@0: /* michael@0: * This version of this file is derived from Android 2.3 "Gingerbread", michael@0: * which contains uncredited changes by Android/Google developers. It has michael@0: * been modified in 2011 for use in the Android build of Mozilla Firefox by michael@0: * Mozilla contributors (including Michael Edwards , michael@0: * and Steve Workman ). michael@0: * These changes are offered under the same license as the original NetBSD michael@0: * file, whose copyright and license are unchanged above. michael@0: */ michael@0: michael@0: typedef int (*heap_higher_priority_func)(void *, void *); michael@0: typedef void (*heap_index_func)(void *, int); michael@0: typedef void (*heap_for_each_func)(void *, void *); michael@0: michael@0: typedef struct heap_context { michael@0: int array_size; michael@0: int array_size_increment; michael@0: int heap_size; michael@0: void **heap; michael@0: heap_higher_priority_func higher_priority; michael@0: heap_index_func index; michael@0: } *heap_context; michael@0: michael@0: #define heap_new __heap_new michael@0: #define heap_free __heap_free michael@0: #define heap_insert __heap_insert michael@0: #define heap_delete __heap_delete michael@0: #define heap_increased __heap_increased michael@0: #define heap_decreased __heap_decreased michael@0: #define heap_element __heap_element michael@0: #define heap_for_each __heap_for_each michael@0: michael@0: heap_context heap_new(heap_higher_priority_func, heap_index_func, int); michael@0: int heap_free(heap_context); michael@0: int heap_insert(heap_context, void *); michael@0: int heap_delete(heap_context, int); michael@0: int heap_increased(heap_context, int); michael@0: int heap_decreased(heap_context, int); michael@0: void * heap_element(heap_context, int); michael@0: int heap_for_each(heap_context, heap_for_each_func, void *);