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

📄 gistnode.h

📁 一个俄国人写的内存数据库系统
💻 H
字号:
// -*- Mode: C++ -*-//         GiSTnode.h//// Copyright (c) 1996, Regents of the University of California// $Header: /usr/local/devel/GiST/libGiST/libGiST/GiSTnode.h,v 1.1.1.1 1996/08/06 23:47:21 jmh Exp $#ifndef GISTNODE_H#define GISTNODE_H#include "GiSTentry.h"#include "GiSTpredicate.h"#include "GiSTpath.h"#include "GiSTstore.h"class GiST;// Type of line table elementtypedef unsigned short GiSTlte;// Page headerstruct GiSTheader{  int level;  int numEntries;  GiSTpage parent;  GiSTpage sibling;};// Entry pointer, with some handy operators class GiSTentryptr{  public:    GiSTentryptr() { ptr = NULL; }    operator GiSTentry* () const { return ptr; }    operator GiSTentry& () const { return *ptr; }    GiSTentry* operator->() const { return ptr; }    GiSTentryptr& operator = (GiSTentry* ptr) { this->ptr = ptr; return *this; }    GiSTentryptr& operator = (GiSTentryptr& ptr) { this->ptr = ptr.ptr; return *this; }    GiSTentry* Ptr() const { return ptr; }  private:    GiSTentry *ptr;};#define GIST_PAGE_HEADER_SIZE sizeof(GiSTheader)// The GiST node class.class GiSTnode : public GiSTobject{public:  GiSTnode();  GiSTnode(const GiSTnode& node);  GiSTobjid IsA() const { return GISTNODE_CLASS; }#ifdef PRINTING_OBJECTS  virtual void Print(ostream& os) const;#endif  // Operations on the entry array  GiSTentryptr& operator [] (int index);  const GiSTentryptr& operator [] (int index) const;  void Expand(int index);  int NumEntries() const { return numEntries; }  void SetNumEntries(int num) { numEntries = num; }  // Search methods  virtual GiSTentry* SearchPtr(GiSTpage ptr) const;  virtual GiSTpage   SearchMinPenalty(const GiSTentry& entry) const;  virtual GiSTpage   SearchNeighbors(GiSTpage ptr) const;  virtual GiSTlist<GiSTentry*>   Search(const GiSTpredicate &query) const;  // Insertion and deletion  virtual void Insert(const GiSTentry &entry);  virtual void InsertBefore(const GiSTentry &entry, int index);  virtual void DeleteEntry(int index);  virtual void DeleteBulk(int vec[], int veclen);  // Pack/unpack disk representation  virtual void Pack(char *page) const;  virtual void Unpack(const char *page);  // two of the basic GiST methods  // Returns the Union of all entries  virtual GiSTentry* Union() const = 0;  // Splitting  virtual GiSTnode *PickSplit();  // required support methods  virtual GiSTentry* CreateEntry() const = 0;  virtual int FixedLength() const { return 0; }  virtual GiSTcompressedEntry Entry(int entryPos) const;  //coalescing  virtual void Coalesce(const GiSTnode &node, const GiSTentry& entry);  // access to the private members  GiSTpage Sibling()    const { return sibling; }  void SetSibling(GiSTpage p) { sibling = p; }  int IsLeaf() const { return level == 0; }  int Level() const { return level; }  void SetLevel(int l) { level = l; }  virtual int IsOverFull(const GiSTstore &store) const;  virtual int IsUnderFull(const GiSTstore &store) const;  ~GiSTnode();  virtual int Size() const;  GiST *Tree() const { return tree; }  void SetTree(GiST *t) { tree = t; }  GiSTpath& Path() { return path; }private:  void Reset();  GiSTpath path;  GiSTentryptr *entries;  char *packedNode;  GiSTpage sibling;  int level;  int numEntries, maxEntries;  GiST *tree;};#endif

⌨️ 快捷键说明

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