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

📄 container.h

📁 FastDb是高效的内存数据库系统
💻 H
字号:
//-< CONTAINER.H >---------------------------------------------------*--------*// FastDB                    Version 1.0         (c) 1999  GARRET    *     ?  *// (Main Memory Database Management System)                          *   /\|  *//                                                                   *  /  \  *//                          Created:     05-Nov-2002  K.A. Knizhnik  * / [] \ *//                          Last update: 05-Nov-2002  K.A. Knizhnik  * GARRET *//-------------------------------------------------------------------*--------*// T-Tree object container//-------------------------------------------------------------------*--------*#ifndef __CONTAINER_H__#define __CONTAINER_H__BEGIN_FASTDB_NAMESPACE/** * Spatial search operations */enum SpatialSearchType {     SPATIAL_SEARCH_EQUAL,    SPATIAL_SEARCH_OVERLAPS,    SPATIAL_SEARCH_SUPERSET,    SPATIAL_SEARCH_PROPER_SUPERSE,    SPATIAL_SEARCH_SUBSET,    SPATIAL_SEARCH_PROPER_SUBSET};/** * Base class for all containers. * Container are implemented using T-Tree */class FASTDB_DLL_ENTRY dbAnyContainer : public dbAnyReference {  protected:    dbFieldDescriptor* fd;    void create(dbDatabase* db);    void purge(dbDatabase* db);    void free(dbDatabase* db);    void add(dbDatabase* db, dbAnyReference const& ref);    void remove(dbDatabase* db, dbAnyReference const& ref);    int  search(dbAnyCursor& cursor, void const* from, void const* till);    int  prefixSearch(dbAnyCursor& cursor, char const* key);    int  spatialSearch(dbAnyCursor& cursor, rectangle const& r, SpatialSearchType type);    dbAnyContainer(char const* fieldName, dbTableDescriptor& desc);};/** * Template of container for particular table */template<class T>class dbContainer : public dbAnyContainer {  public:    /**     * Search records matching search criteria (between, less or equal, great or equal)     * @param cursor cursor to iterate through selected resords     * @param from inclusive low bound for the search key, if <code>NULL</code> then there is no low bound     * @param till inclusive high bound for the search key,  if <code>NULL</code> then there is no high bound     * @return number of selected records     */    int search(dbCursor<T>& cursor, void const* from, void const* till) {        return dbAnyContainer::search(cursor, from, till);    }    /**     * Select records with specified value of the key     * @param cursor cursor to iterate through selected resords     * @param key searched value of the key     * @return number of selected records     */        int search(dbCursor<T>& cursor, void const* key) {        return dbAnyContainer::search(cursor, key, key);    }    /**     * Select records which indexed field is prefix of specfied key     * @param cursor cursor to iterate through selected resords     * @param key string key which prefixes are located in the index     * @return number of selected records     */        int prefixSearch(dbCursor<T>& cursor, char const* key) {        return dbAnyContainer::prefixSearch(cursor, key);    }    /**     * Select all records in the container     * @param cursor cursor to iterate through selected resords     * @return number of selected records     */    int search(dbCursor<T>& cursor) {        return dbAnyContainer::search(cursor, NULL, NULL);    }    /**     * Perform spatial search using R-Tree     * @param cursor cursor to iterate through selected resords     * @param r search rectangle     * @param type search criteria: one of <code>SpatialSearchType</code>     * @return number of selected records     */        int spatialSearch(dbCursor<T>& cursor, rectangle const& r, SpatialSearchType type) {         return dbAnyContainer::spatialSearch(cursor, r, type);    }    /**     * Create new container.     */    void create() {        dbAnyContainer::create(T::dbDescriptor.getDatabase());    }    /**     * Clear the container     */    void purge() {        dbAnyContainer::purge(T::dbDescriptor.getDatabase());    }    /**     * Deallocate container     */    void free() {        dbAnyContainer::free(T::dbDescriptor.getDatabase());    }    /**     * Add new record to container     * @param ref reference to the record added to the container     */    void add(dbReference<T> const& ref) {        dbAnyContainer::add(T::dbDescriptor.getDatabase(), ref);    }    /**     * Remove record from the container     * @param ref reference to the record deleted from the container     */    void remove(dbReference<T> const& ref) {        dbAnyContainer::remove(T::dbDescriptor.getDatabase(), ref);    }    /**     * Constructor of the contanier reference     * @param fieldName name of the key field used by container     */    dbContainer(const char* fieldName) : dbAnyContainer(fieldName, T::dbDescriptor) {}};END_FASTDB_NAMESPACE#endif

⌨️ 快捷键说明

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