📄 container.cpp
字号:
//-< CONTAINER.CPP >---------------------------------------------------*--------*// GigaBASE 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//-------------------------------------------------------------------*--------*#define INSIDE_FASTDB#include "fastdb.h"#include "compiler.h"#include "ttree.h"#include "symtab.h"void dbAnyContainer::create(dbDatabase& db){ oid = dbTtree::allocate(&db);}void dbAnyContainer::add(dbDatabase& db, dbAnyReference const& ref){ dbTtree::insert(&db, oid, ref.getOid(), fd->type, fd->dbsSize, fd->comparator, fd->dbsOffs);}void dbAnyContainer::remove(dbDatabase& db, dbAnyReference const& ref){ dbTtree::insert(&db, oid, ref.getOid(), fd->type, fd->dbsSize, fd->comparator, fd->dbsOffs);}void dbAnyContainer::purge(dbDatabase& db){ dbTtree::purge(&db, oid);}void dbAnyContainer::free(dbDatabase& db){ dbTtree::purge(&db, oid);}int dbAnyContainer::search(dbAnyCursor& cursor, void const* from, void const* till){ dbDatabase* db = cursor.table->db; db->beginTransaction(cursor.type == dbCursorForUpdate ? dbDatabase::dbExclusiveLock : dbDatabase::dbSharedLock); dbDatabaseThreadContext* ctx = db->threadContext.get(); ctx->cursors.link(&cursor); cursor.reset(); if (from == NULL && till == NULL) { dbTtree::traverseForward(db, oid, &cursor); } else { dbSearchContext sc; sc.db = db; sc.condition = NULL; sc.firstKey = (char*)from; sc.firstKeyInclusion = 1; sc.lastKey = (char*)till; sc.lastKeyInclusion = 1; sc.comparator = fd->comparator; sc.type = fd->type; sc.cursor = &cursor; sc.sizeofType = fd->dbsSize; dbTtree::find(db, oid, sc); } return cursor.getNumberOfRecords();}dbAnyContainer::dbAnyContainer(char const* name, dbTableDescriptor& desc){ fd = desc.find(name);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -