58 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			58 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|   | #ifndef __BTREE_PRIVATE_H__
 | ||
|  | #define __BTREE_PRIVATE_H__ 1
 | ||
|  | 
 | ||
|  | #include "udi_common.h"
 | ||
|  | 
 | ||
|  | // Do not kown where it is defined but I need it
 | ||
|  | extern int Yap_page_size; | ||
|  | #define MAXCARD (int)((Yap_page_size-(2*sizeof(int)))/ (2 * sizeof(void*)))
 | ||
|  | #define MINCARD (MAXCARD / 2)
 | ||
|  | 
 | ||
|  | struct Branch | ||
|  | { | ||
|  |   double key; | ||
|  |   void * child; | ||
|  |   /*This B+Tree will allways hold index_t both in branches and leaves*/ | ||
|  | }; | ||
|  | typedef struct Branch branch_t; | ||
|  | 
 | ||
|  | struct Node | ||
|  | { | ||
|  |   int count; | ||
|  |   int level; | ||
|  | 
 | ||
|  | //  double key[MAXCARD - 1];
 | ||
|  | //  void * branch[MAXCARD];
 | ||
|  | 
 | ||
|  |   /* we do not use one key with this representation */ | ||
|  |   branch_t branch[FLEXIBLE_SIZE]; | ||
|  |   /* in leaf nodes last child is ptr to next node
 | ||
|  |    * for fast in order run | ||
|  |    */ | ||
|  | }; | ||
|  | typedef struct Node * node_t; | ||
|  | #define SIZEOF_NODE SIZEOF_FLEXIBLE(struct Node, branch, MAXCARD)
 | ||
|  | 
 | ||
|  | struct Range | ||
|  | { | ||
|  |   double min; | ||
|  |   int le; | ||
|  |   double max; | ||
|  |   int ge; | ||
|  | }; | ||
|  | typedef struct Range range_t; | ||
|  | 
 | ||
|  | typedef node_t btree_t; | ||
|  | 
 | ||
|  | static node_t BTreeNewNode (void); | ||
|  | static void BTreeNodeInit (node_t); | ||
|  | static int BTreeInsertNode(node_t, double *, void **); | ||
|  | static int BTreePickBranch(node_t, double); | ||
|  | static int BTreeAddBranch(node_t, int, double *, void **); | ||
|  | static int BTreeAddLeaf(node_t, double *, void **); | ||
|  | static void BTreeDestroyNode (node_t n); | ||
|  | 
 | ||
|  | #include "b+tree.h"
 | ||
|  | 
 | ||
|  | #endif /* __BTREE_PRIVATE_H__ */
 |