⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gist.h

📁 此文件包含了在linux下实现tpr-tree索引的源代码
💻 H
字号:
// -*- Mode: C++ -*-//--------------------------------------------------------------------//        GiST.h//        ------////        GiST - Generalized Search Tree //        June 2001 release, Aalborg University//        //        This file is a revised version of a part of the original //        libGiST release (version  0.9beta1)     //        Copyright (c) 1996, Regents of the University of California//#ifndef GIST_H#define GIST_H#include "GiSTdefs.h"#include "GiSTentry.h"#include "GiSTlist.h"#include "GiSTnode.h"#include "GiSTstore.h"#include "GiSTpredicate.h"#include "GiSTcursor.h"#include "GiSTobserver.h"//--------------------------------------------------------------------//  GiST//class GiST : public GiSTobject{public:  GiST();  // a likely candidate for overloading  GiSTobjid IsA() const { return GIST_CLASS; }  virtual void Create(const char *filename);  virtual void Open  (const char *filename);  virtual void Close ();  virtual GiSTcursor* Search(const GiSTpredicate &query) const;  virtual GiSTcursor* DebugSearch(const GiSTpredicate &query) const;  virtual void        Insert(const GiSTentry& entry);  virtual int         Delete(const GiSTpredicate& pred);  void        Sync  ();  GiSTstore*    Store ()   const { return store;    }  GiSTobserver* Observer() const { return observer; }   virtual int IsOpen   ()            { return isOpen; }  virtual int IsOrdered()      const { return 0; }  virtual int ForcedReinsert() const { return 0; }  virtual double m() const { return 0.4; }// Observer support  virtual void RegisterObserver(GiSTobserver* obs)  {     observer = obs;     observer->SetGiST(this);  }  virtual void UnregisterObserver() { observer = NULL; }//#ifdef PRINTING_OBJECTS  void        DumpNode(ostream& os, GiSTpath path) const;  void        Print   (ostream& os)                const;#endif  ~GiST();protected:  // The following must be overriden by descendant classes  virtual GiSTstore* CreateStore() const = 0;  virtual GiSTnode*  CreateNode () const = 0;  // Reads/writes nodes  GiSTnode* ReadNode (const GiSTpath& path) const;  void      WriteNode(GiSTnode *node);  void      DeallocateNode(GiSTnode *node);  // These are default supports for Forced Reinsert  virtual GiSTlist<GiSTentry*> RemoveTop  (GiSTnode *node);  virtual double               RemoveRatio() const { return 0.3; }// Observer support  GiSTobserver* observer;  friend class GiSTobserver;//  GiSTnode* InsertHelper (const GiSTentry &entry, int level, GiSTnode* root = NULL);  GiSTnode* ChooseSubtree(GiSTpage page, const GiSTentry &entry,                           int level, GiSTnode* root = NULL);  void      CorrectTree  (GiSTnode* node);  void      PropogateUp  (GiSTnode* node, bool* splitvec,                           GiSTlist<GiSTentry*>* orphans, GiSTnode*& root);  void      Split        (GiSTnode *node, bool* splitvec,                           GiSTlist<GiSTentry*>* orphans, GiSTnode*& root);  void      OverflowTreatment(GiSTnode *node, bool* splitvec,                           GiSTlist<GiSTentry*>* orphans, GiSTnode*& root);  void      AdjustKeys   (GiSTnode *node, bool* splitvec,                           GiSTlist<GiSTentry*>* orphans, GiSTnode*& root);  void      CondenseTree (GiSTnode *node, bool* splitvec,                           GiSTlist<GiSTentry*>* orphans, GiSTnode*& root);  void      ShortenTree  (GiSTnode *root);  GiSTnode *NewNode      (GiST *tree) const  {      GiSTnode *retval = CreateNode();      retval->SetTree(tree);      return(retval);  }  GiSTstore*    store;private:  int isOpen;  int debug;  friend class GiSTcursor;};#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -