pcb 4.1.1
An interactive printed circuit board layout editor.
|
Go to the source code of this file.
Defines | |
#define | PARENT(i) ((i) >= 2 ? (i)/2 : 0) |
#define | LEFT_CHILD(i) (2*(i)) |
#define | RIGHT_CHILD(i) (2*(i) + 1) |
Functions | |
GtsEHeap * | gts_eheap_new (GtsKeyFunc key_func, gpointer data) |
static void | sift_up (GtsEHeap *heap, guint i) |
GtsEHeapPair * | gts_eheap_insert (GtsEHeap *heap, gpointer p) |
GtsEHeapPair * | gts_eheap_insert_with_key (GtsEHeap *heap, gpointer p, gdouble key) |
static void | sift_down (GtsEHeap *heap, guint i) |
gpointer | gts_eheap_remove_top (GtsEHeap *heap, gdouble *key) |
gpointer | gts_eheap_top (GtsEHeap *heap, gdouble *key) |
void | gts_eheap_destroy (GtsEHeap *heap) |
void | gts_eheap_thaw (GtsEHeap *heap) |
void | gts_eheap_foreach (GtsEHeap *heap, GFunc func, gpointer data) |
gpointer | gts_eheap_remove (GtsEHeap *heap, GtsEHeapPair *p) |
void | gts_eheap_decrease_key (GtsEHeap *heap, GtsEHeapPair *p, gdouble new_key) |
void | gts_eheap_freeze (GtsEHeap *heap) |
guint | gts_eheap_size (GtsEHeap *heap) |
void | gts_eheap_update (GtsEHeap *heap) |
gdouble | gts_eheap_key (GtsEHeap *heap, gpointer p) |
void | gts_eheap_randomized (GtsEHeap *heap, gboolean randomized) |
#define LEFT_CHILD | ( | i | ) | (2*(i)) |
Definition at line 24 of file eheap.c.
Referenced by sift_down().
#define PARENT | ( | i | ) | ((i) >= 2 ? (i)/2 : 0) |
Definition at line 23 of file eheap.c.
Referenced by gts_eheap_remove(), and sift_up().
#define RIGHT_CHILD | ( | i | ) | (2*(i) + 1) |
Definition at line 25 of file eheap.c.
Referenced by sift_down().
void gts_eheap_decrease_key | ( | GtsEHeap * | heap, |
GtsEHeapPair * | p, | ||
gdouble | new_key | ||
) |
gts_eheap_decrease_key: : a GtsEHeap. : a GtsEHeapPair. : the new value of the key for this element. Must be smaller than the current key.
Decreases the value of the key of the element at position .
Definition at line 357 of file eheap.c.
References _GtsEHeap::elts, _GtsEHeap::frozen, _GtsEHeapPair::key, _GtsEHeapPair::pos, and sift_up().
Referenced by decrease_key().
void gts_eheap_destroy | ( | GtsEHeap * | heap | ) |
gts_eheap_destroy: : a GtsEHeap.
Free all the memory allocated for .
Definition at line 252 of file eheap.c.
References _GtsEHeap::elts, and TRUE.
Referenced by gts_delaunay_refine(), gts_graph_bfgg_bisection(), gts_graph_bisection_bkl_refine(), gts_graph_bisection_kl_refine(), gts_graph_ggg_bisection(), gts_psurface_new(), gts_surface_coarsen(), gts_surface_refine(), heap_destroy(), hsurface_destroy(), and route().
void gts_eheap_foreach | ( | GtsEHeap * | heap, |
GFunc | func, | ||
gpointer | data | ||
) |
gts_eheap_foreach: : a GtsEHeap. : the function to call for each element in the heap. : to pass to .
Definition at line 292 of file eheap.c.
References _GtsEHeap::elts.
Referenced by gts_delaunay_refine(), gts_graph_bisection_kl_refine(), gts_psurface_new(), gts_surface_coarsen(), heap_new(), and route().
void gts_eheap_freeze | ( | GtsEHeap * | heap | ) |
gts_eheap_freeze: : a GtsEHeap.
Freezes the heap. Any subsequent operation will not preserve the heap property. Used in conjunction with gts_eheap_insert() and gts_eheap_thaw() to create a heap in O(n) time.
Definition at line 385 of file eheap.c.
References _GtsEHeap::frozen, and TRUE.
Referenced by gts_graph_bfgg_bisection(), gts_graph_bisection_bkl_refine(), gts_graph_bisection_kl_refine(), gts_graph_ggg_bisection(), gts_psurface_new(), gts_surface_coarsen(), and gts_surface_refine().
GtsEHeapPair* gts_eheap_insert | ( | GtsEHeap * | heap, |
gpointer | p | ||
) |
gts_eheap_insert: : a GtsEHeap. : a pointer to add to the heap.
Inserts a new element in
the heap.
Returns: a GtsEHeapPair describing the position of the element in the heap. This pointer is necessary for gts_eheap_remove() and gts_eheap_decrease_key().
Definition at line 84 of file eheap.c.
References _GtsEHeap::data, _GtsEHeapPair::data, _GtsEHeap::elts, _GtsEHeap::frozen, _GtsEHeap::func, _GtsEHeapPair::key, _GtsEHeapPair::pos, and sift_up().
Referenced by add_neighbor(), add_seed(), build_bheap(), build_heap(), create_heap_refine(), gts_graph_bisection_kl_refine(), insert_entry_into_heap(), midvertex_insertion(), route(), and update_neighbors().
GtsEHeapPair* gts_eheap_insert_with_key | ( | GtsEHeap * | heap, |
gpointer | p, | ||
gdouble | key | ||
) |
gts_eheap_insert_with_key: : a GtsEHeap. : a pointer to add to the heap. : the value of the key associated to
.
Inserts a new element in
the heap.
Returns: a GtsEHeapPair describing the position of the element in the heap. This pointer is necessary for gts_eheap_remove() and gts_eheap_decrease_key().
Definition at line 115 of file eheap.c.
References _GtsEHeapPair::data, _GtsEHeap::elts, _GtsEHeap::frozen, _GtsEHeapPair::key, _GtsEHeapPair::pos, and sift_up().
Referenced by edge_collapse(), heap_surface_add_face(), and make_face_heap().
gdouble gts_eheap_key | ( | GtsEHeap * | heap, |
gpointer | p | ||
) |
gts_eheap_key: : a GtsEHeap. : a pointer to be tested;
Returns: the value of the key for pointer .
Definition at line 443 of file eheap.c.
References _GtsEHeap::data, and _GtsEHeap::func.
Referenced by heap_surface_add_face(), and make_face_heap().
GtsEHeap* gts_eheap_new | ( | GtsKeyFunc | key_func, |
gpointer | data | ||
) |
gts_eheap_new: : a GtsKeyFunc or NULL. : user data to be passed to .
Returns: a new GtsEHeap using as key.
Definition at line 35 of file eheap.c.
References _GtsEHeap::data, _GtsEHeap::elts, FALSE, _GtsEHeap::frozen, _GtsEHeap::func, and _GtsEHeap::randomized.
Referenced by gts_delaunay_refine(), gts_graph_bfgg_bisection(), gts_graph_bisection_bkl_refine(), gts_graph_bisection_kl_refine(), gts_graph_ggg_bisection(), gts_hsurface_new(), gts_psurface_new(), gts_surface_coarsen(), gts_surface_refine(), heap_new(), and route().
void gts_eheap_randomized | ( | GtsEHeap * | heap, |
gboolean | randomized | ||
) |
gts_eheap_randomized: : a GtsEHeap. : whether should be randomized.
Definition at line 456 of file eheap.c.
References _GtsEHeap::randomized.
gpointer gts_eheap_remove | ( | GtsEHeap * | heap, |
GtsEHeapPair * | p | ||
) |
gts_eheap_remove: : a GtsEHeap. : a GtsEHeapPair.
Removes element corresponding to from
in O(log n).
Returns: the element just removed from .
Definition at line 316 of file eheap.c.
References _GtsEHeapPair::data, _GtsEHeap::elts, gts_eheap_remove_top(), PARENT, and _GtsEHeapPair::pos.
Referenced by add_neighbor(), gts_graph_bisection_kl_refine(), heap_remove(), heap_surface_remove_face(), and update_neighbors().
gpointer gts_eheap_remove_top | ( | GtsEHeap * | heap, |
gdouble * | key | ||
) |
gts_eheap_remove_top: : a GtsEHeap. : a pointer on a gdouble or NULL.
Removes the element at the top of the heap and optionally (if is not NULL) returns the value of its key.
Returns: the element at the top of the heap.
Definition at line 185 of file eheap.c.
References _GtsEHeapPair::data, _GtsEHeap::elts, _GtsEHeapPair::key, len, _GtsEHeapPair::pos, and sift_down().
Referenced by gts_delaunay_refine(), gts_eheap_remove(), gts_graph_bfgg_bisection(), gts_graph_bisection_bkl_refine(), gts_graph_bisection_kl_refine(), gts_graph_ggg_bisection(), gts_psurface_new(), gts_surface_coarsen(), gts_surface_refine(), and route().
guint gts_eheap_size | ( | GtsEHeap * | heap | ) |
gts_eheap_size: : a GtsEHeap.
Returns: the number of items in .
Definition at line 398 of file eheap.c.
References _GtsEHeap::elts.
Referenced by gts_delaunay_refine(), gts_psurface_new(), gts_surface_coarsen(), gts_surface_refine(), heap_is_empty(), and route().
void gts_eheap_thaw | ( | GtsEHeap * | heap | ) |
gts_eheap_thaw: : a GtsEHeap.
If has been frozen previously using gts_eheap_freeze(), reorder it in O(n) time and unfreeze it.
Definition at line 271 of file eheap.c.
References _GtsEHeap::elts, FALSE, _GtsEHeap::frozen, and sift_down().
Referenced by gts_eheap_update(), gts_graph_bfgg_bisection(), gts_graph_bisection_bkl_refine(), gts_graph_bisection_kl_refine(), gts_graph_ggg_bisection(), gts_psurface_new(), gts_surface_coarsen(), and gts_surface_refine().
gpointer gts_eheap_top | ( | GtsEHeap * | heap, |
gdouble * | key | ||
) |
gts_eheap_top: : a GtsEHeap. : a pointer on a gdouble or NULL.
Returns: the element at the top of the heap and optionally (if is not NULL) its key.
Definition at line 228 of file eheap.c.
References _GtsEHeapPair::data, _GtsEHeap::elts, and _GtsEHeapPair::key.
Referenced by gts_hsurface_foreach(), and heap_top().
void gts_eheap_update | ( | GtsEHeap * | heap | ) |
gts_eheap_update: : a GtsEHeap.
Updates the key of each element of and reorders it.
Definition at line 411 of file eheap.c.
References _GtsEHeapPair::data, _GtsEHeap::data, _GtsEHeap::elts, _GtsEHeap::frozen, _GtsEHeap::func, gts_eheap_thaw(), _GtsEHeapPair::key, len, and TRUE.
Referenced by route().
static void sift_down | ( | GtsEHeap * | heap, |
guint | i | ||
) | [static] |
Definition at line 135 of file eheap.c.
References c, _GtsEHeap::elts, _GtsEHeapPair::key, LEFT_CHILD, len, _GtsEHeapPair::pos, and RIGHT_CHILD.
Referenced by gts_eheap_remove_top(), and gts_eheap_thaw().
static void sift_up | ( | GtsEHeap * | heap, |
guint | i | ||
) | [static] |
Definition at line 49 of file eheap.c.
References _GtsEHeap::elts, _GtsEHeapPair::key, PARENT, _GtsEHeapPair::pos, and _GtsEHeap::randomized.
Referenced by gts_eheap_decrease_key(), gts_eheap_insert(), and gts_eheap_insert_with_key().