void GiST::Open(const char *filename) { if(IsOpen()) return; store=CreateStore(); store->Open(filename); if(!store->IsOpen()) return; isOpen=1; }
void GiST::Create(const char *filename) { GiSTpage page; if(IsOpen()) return; store=CreateStore(); store->Create(filename); if(!store->IsOpen()) return; page=store->Allocate(); GiSTnode *node=NewNode(this); node->Path().MakeRoot(); WriteNode(node); delete node; isOpen=1; }
void MXTree::Open(const char *filename) { if (IsOpen()) { return; } store = CreateStore(); store->Open(filename); if (!store->IsOpen()) { return; } isOpen = 1; char *buf = new char[store->PageSize()]; memset(buf, 0, store->PageSize()); store->Read(GiSTRootPage, buf); memcpy(&rootPage, buf, sizeof(int)); delete[] buf; }
void MXTree::Create(const char *filename) { if (IsOpen()) { return; } store = CreateStore(); store->Create(filename); if (!store->IsOpen()) { return; } store->Allocate(); // reserved for root pointer rootPage = store->Allocate(); assert(rootPage == 1); GiSTnode *node = NewNode(this); node->Path().MakeRoot(); WriteNode(node); delete node; isOpen = 1; }
void GiST::Create (const char *filename) { if (IsOpen()) { return; } store = CreateStore(); store->Create(filename); if (!store->IsOpen()) { // create failed! return; } store->Allocate(); // added by myself, reserved for root store->Allocate(); GiSTnode *node = NewNode(this); node->Path().MakeRoot(); WriteNode (node); delete node; isOpen = 1; }