Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Bug fix and add a xbt_swag_foreach_safe where you can remove objects from
[simgrid.git] / include / xbt / heap.h
1 /* Authors: Arnaud Legrand                                                  */
2
3 /* This program is free software; you can redistribute it and/or modify it
4    under the terms of the license (GNU LGPL) which comes with this package. */
5
6 #ifndef _XBT_HEAP_H
7 #define _XBT_HEAP_H
8
9 #include "xbt/dynar.h"
10
11 typedef struct xbt_heap *xbt_heap_t;
12
13 /* The following two definitions concern the type of the keys used for
14    the heaps. That should be handled via configure (FIXME). */
15 typedef long double xbt_heap_float_t;
16 #define XBT_HEAP_FLOAT_T "%Lg"  /* for printing purposes */
17
18 /* /\* pointer to a function freeing something (should be common to all .h : FIXME) *\/ */
19 /* typedef void (void_f_pvoid_t) (void *); */
20
21 xbt_heap_t xbt_heap_new(int num, void_f_pvoid_t free_func);
22 void xbt_heap_free(xbt_heap_t H);
23 int xbt_heap_size(xbt_heap_t H);
24
25 void xbt_heap_push(xbt_heap_t H, void *content, xbt_heap_float_t key);
26 void *xbt_heap_pop(xbt_heap_t H);
27
28 xbt_heap_float_t xbt_heap_maxkey(xbt_heap_t H);
29 void *xbt_heap_maxcontent(xbt_heap_t H);
30
31 #endif                          /* _XBT_HEAP_H */