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