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__ */
							 |