4 * This file is part of SOAPdenovo.
9 * Copyright 1997, 1999-2003 John-Mark Gurney.
10 * All rights reserved.
12 * Redistribution and use in source and binary forms, with or without
13 * modification, are permitted provided that the following conditions
15 * 1. Redistributions of source code must retain the above copyright
16 * notice, this list of conditions and the following disclaimer.
17 * 2. Redistributions in binary form must reproduce the above copyright
18 * notice, this list of conditions and the following disclaimer in the
19 * documentation and/or other materials provided with the distribution.
21 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
22 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33 * $Id: dfibpriv.h,v 1.8 2007/10/09 09:56:46 zerbino Exp $
40 //#include "globals.h"
44 * specific node operations
47 static DFibHeapNode
* dfhe_newelem ( DFibHeap
* );
48 static void dfhe_insertafter ( DFibHeapNode
* a
, DFibHeapNode
* b
);
49 static inline void dfhe_insertbefore ( DFibHeapNode
* a
, DFibHeapNode
* b
);
50 static DFibHeapNode
* dfhe_remove ( DFibHeapNode
* a
);
53 * global heap operations
57 MEM_MANAGER
* nodeMemory
;
60 DFibHeapNode
** dfh_cons
;
61 DFibHeapNode
* dfh_min
;
62 DFibHeapNode
* dfh_root
;
65 static void dfh_insertrootlist ( DFibHeap
*, DFibHeapNode
* );
66 static void dfh_removerootlist ( DFibHeap
*, DFibHeapNode
* );
67 static void dfh_consolidate ( DFibHeap
* );
68 static void dfh_heaplink ( DFibHeap
* h
, DFibHeapNode
* y
, DFibHeapNode
* x
);
69 static void dfh_cut ( DFibHeap
*, DFibHeapNode
*, DFibHeapNode
* );
70 static void dfh_cascading_cut ( DFibHeap
*, DFibHeapNode
* );
71 static DFibHeapNode
* dfh_extractminel ( DFibHeap
* );
72 static void dfh_checkcons ( DFibHeap
* h
);
73 static int dfh_compare ( DFibHeap
* h
, DFibHeapNode
* a
, DFibHeapNode
* b
);
74 static int dfh_comparedata ( DFibHeap
* h
, Time key
,
75 unsigned int data
, DFibHeapNode
* b
);
76 static void dfh_insertel ( DFibHeap
* h
, DFibHeapNode
* x
);
82 static inline IDnum
ceillog2 ( IDnum a
);
84 #endif /* _FIBPRIV_H_ */