#include <stdio.h> #include <stdlib.h> #include "btree.h" bool operator ==(uPtr u1, uPtr u2) { return (u1.offset == u2.offset); } // overloaded operator == bTree::bTree(char * filename, uInt32 nodeSize, treeTypes tt, bTreeVFS * virtualFS) { filename = filename; nodeSize = nodeSize; tt = tt; vfs = virtualFS; return; } // bTree::bTree int bTree::align(int keyLength) { return ((sizeof(uPtr) + keyLength + 7) >> 3) << 3; } // bTree::align int bTree::calcSize(TbNode * node) { int size; TbNodeData * dataNode; if (node == NULL) return 0; dataNode = &node->data; size = (int)dataNode - (int)node; for (unsigned int curNode = 1; curNode <= node->numKeys; curNode++) { size += align(keySize(&dataNode->key)); //mjikaboom dataNode += align(keySize(&dataNode->key))); } // for curNode return size; } // bTree::calcSize uPtr bTree::getFirstDeleted(void) { if (!memoryTree) { if (!vfs->fSeek((int)&info->firstDeleted- (int)info)) exit(42); if (!vfs->fRead(&info->firstDeleted, sizeof(info->firstDeleted))) exit(42); } // if not memoryTree return info->firstDeleted; } // bTree::getFirstDeleted void bTree::setNull(uPtr & u) { u.offset = 0; } // bTree::setNull void bTree::InstallUserFunctions(compareKeyFunc cmpFunc, copyKeyProc copyProc, keySizeFunc ksFunc) { compareKey = cmpFunc; copyKey = copyProc; keySize = ksFunc; return; } // bTree::InstallUserFunctions bTree::~bTree(void) { return; } // bTree::~bTree