11dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* $NetBSD: heap.h,v 1.1.1.1 2004/05/20 19:49:41 christos Exp $ */ 21dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 31dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* 41dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") 51dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Copyright (c) 1997,1999 by Internet Software Consortium. 61dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * 71dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Permission to use, copy, modify, and distribute this software for any 81dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * purpose with or without fee is hereby granted, provided that the above 91dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * copyright notice and this permission notice appear in all copies. 101dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * 111dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES 121dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 131dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR 141dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 151dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 161dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT 171dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 181dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */ 191dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 201dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef int (*heap_higher_priority_func)(void *, void *); 211dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef void (*heap_index_func)(void *, int); 221dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef void (*heap_for_each_func)(void *, void *); 231dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 241dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef struct heap_context { 251dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int array_size; 261dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int array_size_increment; 271dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int heap_size; 281dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project void **heap; 291dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project heap_higher_priority_func higher_priority; 301dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project heap_index_func index; 311dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project} *heap_context; 321dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 331dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define heap_new __heap_new 341dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define heap_free __heap_free 351dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define heap_insert __heap_insert 361dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define heap_delete __heap_delete 371dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define heap_increased __heap_increased 381dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define heap_decreased __heap_decreased 391dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define heap_element __heap_element 401dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define heap_for_each __heap_for_each 411dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 421dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectheap_context heap_new(heap_higher_priority_func, heap_index_func, int); 431dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint heap_free(heap_context); 441dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint heap_insert(heap_context, void *); 451dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint heap_delete(heap_context, int); 461dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint heap_increased(heap_context, int); 471dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint heap_decreased(heap_context, int); 481dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectvoid * heap_element(heap_context, int); 491dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint heap_for_each(heap_context, heap_for_each_func, void *); 50