亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? subsql.h

?? FastDb是高效的內存數據庫系統
?? H
字號:
//-< SUBSQL.H >------------------------------------------------------*--------*// FastDB                    Version 1.0         (c) 1999  GARRET    *     ?  *// (Main Memory Database Management System)                          *   /\|  *//                                                                   *  /  \  *//                          Created:     20-Nov-98    K.A. Knizhnik  * / [] \ *//                          Last update: 10-Dec-98    K.A. Knizhnik  * GARRET *//-------------------------------------------------------------------*--------*// Interactive data manipulation language (subset of SQL)//-------------------------------------------------------------------*--------*#ifndef __SUBSQL_H__#define __SUBSQL_H__BEGIN_FASTDB_NAMESPACEenum SubSqlTokens {     tkn_alter = tkn_last_token,    tkn_array,    tkn_autoincrement,    tkn_autocommit,    tkn_backup,    tkn_bool,    tkn_commit,    tkn_compactify,    tkn_count,    tkn_create,    tkn_delete,    tkn_describe,    tkn_drop,    tkn_exit,    tkn_export,    tkn_hash,    tkn_help,    tkn_http,    tkn_import,    tkn_index,    tkn_int1,    tkn_int2,    tkn_int4,    tkn_int8,    tkn_inverse,    tkn_of,    tkn_off,    tkn_on,    tkn_open,    tkn_profile,     tkn_real4,     tkn_real8,     tkn_rectangle,    tkn_reference,    tkn_rollback,    tkn_server,    tkn_set,    tkn_stop,    tkn_semi,    tkn_show,    tkn_to,     tkn_update,    tkn_values,    tkn_version};            class dbList {   public:    enum NodeType {         nInteger,        nBool,        nReal,        nString,        nTuple,        nAutoinc,        nIdentifier    };    dbList* next;    int     type;    union {         bool  bval;        db_int8  ival;        real8 fval;        char* sval;        struct {             int     nComponents;            dbList* components;        } aggregate;    };    ~dbList() {         if (type == nTuple) {            dbList* list = aggregate.components;            while (list != NULL) {                 dbList* tail = list->next;                delete list;                list = tail;            }        } else if (type == nString || type == nIdentifier) {            delete[] sval;        }    }    dbList(int type) {         this->type = type;        next = NULL;     }};struct tableField {     char* name;    char* refTableName;    char* inverseRefName;    int   type;        tableField() { name = refTableName = inverseRefName = NULL; }    ~tableField() { delete[] name; delete[] refTableName; delete[] inverseRefName; }};class dbUpdateElement {   public:    dbUpdateElement*   next;    dbFieldDescriptor* field;    dbExprNode*        value;    char*              strValue;    dbUpdateElement() {         next = NULL;        strValue = NULL;        value = NULL;    }    ~dbUpdateElement() {         delete[] strValue;        delete value;    }};#define MAX_HISTORY_SIZE 16class dbXmlScanner {   public:    enum {         MaxIdentSize = 256    };    enum token {         xml_ident,         xml_sconst,         xml_iconst,         xml_fconst,         xml_lt,         xml_gt,         xml_lts,         xml_gts,        xml_eq,         xml_eof,        xml_error    };        dbXmlScanner(FILE* f) {         in = f;        sconst = new char[size = 1024];        line = 1;        pos = 0;    }    token scan();    char* getString() {         return sconst;    }    char* getIdentifier() {         return ident;    }    size_t  getStringLength() {         return slen;    }    db_int8 getInt() {         return iconst;    }    double getReal() {         return fconst;    }    bool expect(int sourcePos, token expected) {         token tkn = scan();        if (tkn != expected) {             fprintf(stderr, "subsql.cpp:%d: line %d, column %d: Get token %d instead of expected token %d\n",                     sourcePos, line, pos, tkn, expected);            return false;        }        return true;    }    bool expect(int sourcePos, char* expected) {         token tkn = scan();        if (tkn != xml_ident) {             fprintf(stderr, "subsql.cpp:%d: line %d, column %d: Get token %d instead of expected identifier\n",                     sourcePos, line, pos, tkn);            return false;        }        if (strcmp(ident, expected) != 0) {             fprintf(stderr, "subsql.cpp:%d: line %d, column %d: Get tag '%s' instead of expected '%s'\n",                     sourcePos, line, pos, ident, expected);            return false;        }        return true;    }  private:    int   get();    void  unget(int ch);    int       line;    int       pos;    FILE*     in;    char*     sconst;    size_t    size;    size_t    slen;    db_int8   iconst;    double    fconst;    char      ident[MaxIdentSize];};class dbTmpAllocator {     enum {         CHUNK_SIZE = 4096    };    struct Chunk {         Chunk* next;        Chunk* prev; // is not used, added for alignment    };    Chunk* curr;    size_t used;  public:    dbTmpAllocator() {         curr = NULL;        used = CHUNK_SIZE;    }    ~dbTmpAllocator() {         reset();    }    void reset() {         Chunk *c, *next;         for (c = curr; c != NULL; c = next) {             next = c->next;            dbFree(c);        }        curr = NULL;        used = CHUNK_SIZE;    }    void* alloc(size_t size) {         size = DOALIGN(size, 8);        if (size > CHUNK_SIZE/2) {             Chunk* newChunk = (Chunk*)dbMalloc(size + sizeof(Chunk));            if (curr != NULL) {                 newChunk->next = curr->next;                curr->next = newChunk;            } else {                 curr = newChunk;                newChunk->next = NULL;                used = CHUNK_SIZE;            }            return newChunk+1;        } else if (size <= CHUNK_SIZE - used) {             used += size;            return (char*)curr + used - size;        } else {             Chunk* newChunk = (Chunk*)dbMalloc(CHUNK_SIZE);            used = sizeof(Chunk) + size;            newChunk->next = curr;            curr = newChunk;            return newChunk+1;        }    }};class dbSubSql : public dbDatabase {   private:    int   pos;    int   line;    int   tknPos;    char* buf;    int   buflen;    FILE* in;    bool  opened;    db_int8  ival;    real8 fval;    char* name;    oid_t*  oidMap;    oid_t   oidMapSize;    dbTmpAllocator tmpAlloc;     static char* prompt;    dbTableDescriptor* droppedTables;    dbTableDescriptor* existedTables;    dbQuery query;    dbCompiler compiler;    int      ungetToken;    bool     autocommit;    bool     dotIsPartOfIdentifier;    char*    dateFormat;    dbThread httpServerThread;    HTTPapi* httpServer;    bool     httpServerRunning;    char*    queryHistory[MAX_HISTORY_SIZE];    unsigned historyUsed;    unsigned historyCurr;    static void thread_proc httpServerThreadProc(void* arg);        void deleteColumns(dbFieldDescriptor* columns);    void httpServerLoop();    void startHttpServer(char const* address);    void stopHttpServer(char const* address);    void handleError(dbErrorClass error, char const* msg = NULL,  int arg = 0);    void error(char const* msg);    void warning(char const* msg);    void profile();    int  get();    void unget(int ch);    int  scan();    bool parse();    bool expect(char* expected, int token);        void recovery();    void exportDatabase(FILE* out);    bool importDatabase(FILE* in);       void exportScheme(FILE* out);    void exportClass(FILE* out, char* name, dbFieldDescriptor* fieldList);       oid_t mapId(long id);    bool importField(char* terminator, dbFieldDescriptor* fd, byte* rec, dbXmlScanner& scanner);    bool importRecord(char* terminator, dbFieldDescriptor* fieldList, byte* rec, dbXmlScanner& scanner);    void insertRecord(dbTableDescriptor* desc, oid_t oid, void const* record);    bool isValidOid(oid_t oid);    void dumpRecord(byte* record, dbFieldDescriptor* first);    static int calculateRecordSize(dbList* list, int offs,                                   dbFieldDescriptor* first);    int  initializeRecordFields(dbList* node, byte* dst, int offs,                                       dbFieldDescriptor* first);    bool insertRecord(dbList* list, dbTableDescriptor* desc);    bool readCondition();    int  readExpression();    int  readValues(dbList** chain);    bool updateFields(dbAnyCursor* cursor, dbUpdateElement* elems);    bool updateTable(bool create);    int  parseType(char*& refTableName, char*& inverseRefName);    int  updateRecords(dbTableDescriptor* desc, dbList *fields, dbList *values, dbAnyCursor &cursor, byte *buf);    dbFieldDescriptor* readFieldName();  public:    void run(int firstParam, int argc, char* argv[]);    void selectionPage(WWWconnection& con);    void queryPage(WWWconnection& con);    void defaultPage(WWWconnection& con);        dbSubSql(dbAccessType accessType);    virtual~dbSubSql();};   END_FASTDB_NAMESPACE#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
3d动漫精品啪啪一区二区竹菊| 精品一区二区综合| 色婷婷综合久久久中文字幕| 亚洲免费在线播放| 91精品福利视频| 亚洲bt欧美bt精品777| 欧美男女性生活在线直播观看| 日韩精品一二三区| 日韩女优av电影| 成人毛片老司机大片| 国产精品青草久久| 欧美亚洲一区二区三区四区| 日本一不卡视频| 欧美激情自拍偷拍| 欧美亚洲综合一区| 国产一区二区三区视频在线播放| 国产精品欧美一区二区三区| 一本一本大道香蕉久在线精品| 亚洲va欧美va人人爽| 久久一夜天堂av一区二区三区| 成人午夜激情在线| 午夜在线电影亚洲一区| 久久久亚洲欧洲日产国码αv| av欧美精品.com| 日本人妖一区二区| 国产精品久久久久影院| 欧美精品日韩精品| 成人性视频免费网站| 五月婷婷色综合| 天天综合网天天综合色| 欧美一区二区福利在线| 高清国产一区二区| 亚洲成在人线在线播放| 中文字幕免费在线观看视频一区| 欧美影视一区在线| 国产不卡一区视频| 日韩电影在线一区二区三区| 国产精品色婷婷久久58| 日韩一区二区在线免费观看| 波多野结衣在线一区| 美女一区二区在线观看| 亚洲乱码中文字幕| 久久久99精品久久| 欧美日韩国产综合一区二区 | 一片黄亚洲嫩模| 精品日韩成人av| 欧美日韩精品一区二区三区| 成人免费高清在线观看| 精品无码三级在线观看视频 | xfplay精品久久| 欧美体内she精高潮| 成人app下载| 国产真实乱对白精彩久久| 午夜不卡av在线| 一区二区欧美在线观看| 一色屋精品亚洲香蕉网站| 欧美精品一区二区精品网| 欧美精三区欧美精三区| 欧美综合天天夜夜久久| 99精品视频一区二区| 国产精品一区二区三区网站| 久久精品国产一区二区| 日本不卡123| 午夜精品123| 亚洲国产成人va在线观看天堂| 中文字幕一区二区三区在线不卡| 国产日产欧美一区| 久久久久国色av免费看影院| 欧美va亚洲va香蕉在线| 欧美一级一区二区| 91精品国产品国语在线不卡 | 欧美草草影院在线视频| 欧美日产在线观看| 欧美精品日韩综合在线| 欧美精品乱码久久久久久按摩 | 一级日本不卡的影视| 亚洲欧洲三级电影| 1000精品久久久久久久久| 亚洲色图欧美在线| 亚洲精品成人天堂一二三| 伊人性伊人情综合网| 一区二区久久久久久| 一区二区日韩电影| 日精品一区二区三区| 久久精品国产色蜜蜜麻豆| 激情综合色播五月| 成人深夜福利app| 91在线国产福利| 欧美三级在线播放| 日韩一区和二区| 国产人伦精品一区二区| 日韩一区在线播放| 亚洲综合色婷婷| 天堂av在线一区| 久久99精品久久久久久动态图 | 亚洲免费观看高清完整版在线观看 | 欧美伊人久久大香线蕉综合69| 欧美色精品在线视频| 5566中文字幕一区二区电影| 精品久久久久久久久久久院品网| 2020国产成人综合网| 国产精品视频在线看| 伊人性伊人情综合网| 老色鬼精品视频在线观看播放| 国产一区三区三区| 91在线免费视频观看| 欧美精品高清视频| 久久嫩草精品久久久久| 亚洲色欲色欲www| 日韩中文字幕一区二区三区| 国产精品自拍毛片| 91国产免费看| 精品国产成人在线影院 | 精品国产免费一区二区三区四区| 国产日韩欧美麻豆| 亚洲一区二区影院| 国产乱人伦偷精品视频不卡| 色呦呦国产精品| 精品电影一区二区| 一区二区三区产品免费精品久久75| 精品一区二区三区日韩| 色综合色狠狠综合色| 精品成人免费观看| 亚洲男人电影天堂| 国产精品一卡二卡在线观看| 欧美专区在线观看一区| 国产拍揄自揄精品视频麻豆| 天天色 色综合| 99国产精品久久| 久久先锋影音av鲁色资源网| 亚洲一区二区三区四区五区黄 | 亚洲高清久久久| 不卡视频在线看| 精品少妇一区二区三区视频免付费 | 国产盗摄一区二区| 91精品国产91久久综合桃花| 亚洲欧美综合网| 国产精品一区二区在线观看不卡| 欧美区在线观看| 一区二区三区四区亚洲| 国产大陆a不卡| 欧美大胆一级视频| 亚洲成人av一区二区三区| 91视视频在线直接观看在线看网页在线看| 日韩视频123| 婷婷综合在线观看| 在线观看不卡一区| 成人免费一区二区三区视频| 国产精品一区专区| 久久久久久久电影| 久久精品国产久精国产| 欧美一级xxx| 亚洲成人av资源| 欧美性色黄大片手机版| 亚洲精品乱码久久久久久黑人| 从欧美一区二区三区| 2014亚洲片线观看视频免费| 麻豆专区一区二区三区四区五区| 欧美三级中文字幕| 婷婷六月综合亚洲| 欧美日韩国产小视频在线观看| 一个色妞综合视频在线观看| 99久久99久久精品免费看蜜桃| 欧美激情一区二区三区全黄| 久久av资源站| 欧美精品一区视频| 精品一区二区三区在线播放视频 | 国产成人午夜99999| www精品美女久久久tv| 老司机午夜精品| 久久色在线观看| 国产91精品露脸国语对白| 日本一区二区三区四区在线视频| 精品在线免费视频| 久久毛片高清国产| 国产成人在线色| 一区视频在线播放| 色哟哟精品一区| 亚洲国产三级在线| 制服丝袜亚洲播放| 九九热在线视频观看这里只有精品| 精品免费日韩av| 成人综合婷婷国产精品久久蜜臀 | 成人欧美一区二区三区黑人麻豆 | 日韩免费一区二区三区在线播放| 老色鬼精品视频在线观看播放| 日韩免费观看高清完整版| 韩国女主播一区| 国产精品美女一区二区三区| 在线区一区二视频| 蜜臀国产一区二区三区在线播放| 欧美精品一区二区精品网| 成人性视频网站| 亚洲成人自拍偷拍| 精品少妇一区二区三区在线播放 | 中文字幕亚洲区| 欧美日韩国产中文| 精品无码三级在线观看视频| 中文字幕一区二区三区在线播放| 精品视频在线免费看|