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

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

?? bt.h

?? mini database sort-merge join
?? H
字號:
/* -*- C++ -*- */
/*
 * bt.h - global declarations for the B+ Tree.
 *
 */ 

#ifndef BT_H
#define BT_H

/*
 * This file contains, among other things, the interface to our
 * key (void*) abstraction.  The BTLeafPage and BTIndexPage code
 * know very little about the various key types.  In fact, only 
 * a very small amount of work would be required to make those 
 * classes share almost all of their code (e.g., by creating a class
 * `BTPage' derived from SortedPage and from which BTLeafPage and 
 * BTIndexPage themselves drive).  
 *
 * Essentially we provide a way for those classes to package and 
 * unpackage <key,data> pairs in a space-efficient manner.  That is, the 
 * packaged result contains the key followed immediately by the data value; no 
 * padding bytes are used (not even for alignment). 
 *
 * Furthermore, the BT<*>Page classes need
 * not know anything about the possible AttrType values, since all 
 * their processing of <key,data> pairs is done by the functions 
 * declared here.
 *
 * In addition to packaging/unpacking of <key,value> pairs, we 
 * provide a keyCompare function for the (obvious) purpose of
 * comparing keys of arbitrary type (as long as they are defined 
 * here).
 */
 
#include "minirel.h"


typedef enum {
    INDEX,
    LEAF
} nodetype;


/*
 * A bunch of macros for handling and returning errors.
 *
 * Note that some of these macros effect immediate returns from the current
 * function; some return the specified error; the *_CTOR ones assign
 * the error to an argument (these are for use in returnvalue-less 
 * constructors).
 */

/*
 * MAX_KEY_SIZE1: Maximum key size in bytes (for sizing 
 * (MAX_KEY_SIZE seems to be defined somewhere else ??)
 * temporary buffers on the stack).
 */

#define MAX_KEY_SIZE1        220


/*
 * Keytype union: used to discover the max keysize, and for minimal 
 * static type checking in key package/unpackage functions (see below).
 */

union Keytype
{
  int intkey;
  char charkey[MAX_KEY_SIZE1];
};


/*
 * Datatype union: used to discover the max data size, and for minimal 
 * static type checking in key package/unpackage functions (see below).
 */

union Datatype
{
  PageId      pageNo;  // for index page entries
  RID         rid;     // for leaf page entries    
};


/*
 * struct KeyDataEntry:
 *
 * The BT*Page code only knows about the following type (by name).
 * It never refers to the listed members; rather, it simply instantiates
 * an object so that it has enough storage to copy into and out of a record
 * the necessary number of <key, data> bytes (for whatever key and data
 * types it is interested in -- for key types, it doesn't care).  
 */
 
struct KeyDataEntry
{
  Keytype    key;
  Datatype   data;
};

/*
 * Finally, here is the interface to our <key,data> abstraction.
 * 
 * keyCompare simply compares keys (types must be the same); return 
 * value is < 0, 0, or > 0.
 *
 * make_entry packages a key and a data value into a chunk of memory 
 * large enough to hold it (the first parameter).  Note that the 
 * resultant KeyDataEntry cannot be accessed by its members because
 * the Datatype member may start after the actual beginning of the
 * data value stored here.  The real length of the resulting <key,data>
 * pair is returned in *pentry_len.
 *
 * get_key_data takes a KeyDataEntry chunk and its real length and 
 * unpacks the <key,data> values from it; those are written to *targetkey
 * and *targetdata, respectively.
 *   - key1  < key2 : negative
 *   - key1 == key2 : 0
 *   - key1  > key2 : positive
 *
 * Finally, get_key_length and get_key_data_length determine the 
 * storage required for given key and key+data. 
 */

int keyCompare(const void* key1, const void* key2, AttrType t);
                   
/*
 * make_entry: write a <key,data> pair to a blob of memory (*target) big
 * enough to hold it.  Return length of data in the blob via *pentry_len.
 *
 * Ensures that <data> part begins at an offset which is an even 
 * multiple of sizeof(PageNo) for alignment purposes.
 */

void make_entry(KeyDataEntry *target,
                AttrType key_type, const void *key,
                nodetype ndtype, Datatype data, 
                int *pentry_len);

/*
 * get_key_data: unpack a <key,data> pair into pointers to respective parts.
 * Needs a) memory chunk holding the pair (*psource) and, b) the length
 * of the data chunk (to calculate data start of the <data> part).
 */

void get_key_data(void *targetkey, Datatype *targetdata,
                  KeyDataEntry *psource, int entry_len, 
                  nodetype ndtype);


int get_key_length(const void *key, const AttrType key_type);
int get_key_data_length(const void *key, const AttrType key_type, 
                        const nodetype ndtype);
                   
#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产又黄又大久久| 喷水一区二区三区| 在线不卡的av| 国产乱淫av一区二区三区| 国产精品成人免费| 欧美电影在线免费观看| 国产精品456露脸| 亚洲天堂成人在线观看| 日韩欧美国产综合在线一区二区三区| 国产suv一区二区三区88区| 亚洲影院久久精品| 久久嫩草精品久久久久| 91国产精品成人| 国模无码大尺度一区二区三区| 亚洲精品国产a| 久久女同性恋中文字幕| 欧美日韩免费一区二区三区| 国产不卡视频一区二区三区| 亚洲高清视频的网址| 国产拍揄自揄精品视频麻豆| 欧美一级日韩一级| 色香蕉成人二区免费| 国产一区二区三区黄视频 | 日韩欧美国产午夜精品| 91香蕉视频在线| 国产大陆亚洲精品国产| 日韩1区2区日韩1区2区| 亚洲天堂免费看| 欧美激情一二三区| 日韩一级黄色片| 欧美在线观看视频在线| 丁香亚洲综合激情啪啪综合| 免费人成在线不卡| 亚洲色图欧洲色图婷婷| 国产婷婷精品av在线| 欧美一级在线免费| 欧美日本在线播放| 日本精品免费观看高清观看| 成人激情文学综合网| 国产毛片一区二区| 日本视频一区二区三区| 亚洲国产中文字幕| 亚洲精品国产视频| 亚洲色图欧洲色图婷婷| 国产精品久久久久影院亚瑟| 视频一区免费在线观看| 亚洲成av人片| 自拍偷拍欧美激情| 亚洲欧洲精品一区二区精品久久久 | 日韩精品一区二区三区视频在线观看| 欧洲一区二区三区在线| 岛国一区二区三区| 国产成人精品影视| 精品影视av免费| 精品综合久久久久久8888| 免费成人美女在线观看| 蜜桃久久久久久久| 丝袜国产日韩另类美女| 亚洲成av人片一区二区| 日韩中文字幕亚洲一区二区va在线| 一区二区三区欧美在线观看| 亚洲精品国产精品乱码不99| 一区二区三区鲁丝不卡| 亚洲国产一区二区视频| 日本va欧美va瓶| 久久99精品久久只有精品| 国产一区久久久| 丰满少妇在线播放bd日韩电影| 国产精品影视网| 粉嫩av一区二区三区| 国产精品一区二区x88av| 丁香亚洲综合激情啪啪综合| av在线不卡电影| 欧洲中文字幕精品| 在线不卡a资源高清| 久久在线免费观看| 国产精品乱子久久久久| 亚洲综合视频在线| 视频在线观看一区| 成人毛片老司机大片| 欧美日韩精品系列| 国产欧美一区二区精品秋霞影院| 夜夜精品浪潮av一区二区三区| 日韩成人av影视| 成人丝袜高跟foot| 欧美精品一卡二卡| 国产精品色呦呦| 日韩 欧美一区二区三区| 成人av影视在线观看| 日韩一二三四区| 亚洲免费高清视频在线| 国产麻豆精品在线观看| 在线视频国内一区二区| 国产婷婷一区二区| 美女视频黄免费的久久| 色婷婷一区二区三区四区| 欧美精品一区在线观看| 亚洲一区二区三区四区五区黄| 国产盗摄一区二区| 日韩精品在线网站| 一区二区三区免费在线观看| 国产不卡视频一区| 欧美成人bangbros| 午夜精品一区二区三区电影天堂| 欧美一卡2卡三卡4卡5免费| 亚洲美女淫视频| 大桥未久av一区二区三区中文| 日韩一二三四区| 亚洲国产精品嫩草影院| 色综合夜色一区| 国产精品天干天干在线综合| 免费观看成人av| 欧美精品亚洲二区| 一区二区欧美国产| 99精品久久99久久久久| 久久久www成人免费无遮挡大片| 日韩制服丝袜av| 欧美在线观看视频在线| 亚洲日本青草视频在线怡红院| 国产电影一区在线| 2023国产精华国产精品| 久久精品国产一区二区| 69久久99精品久久久久婷婷| 午夜精品国产更新| 欧美日韩专区在线| 亚洲一区二区欧美日韩 | 日本精品视频一区二区三区| 一色屋精品亚洲香蕉网站| 成人午夜电影网站| 国产欧美一区二区三区网站| 国产剧情在线观看一区二区| 欧美变态tickling挠脚心| 美女视频黄久久| 欧美r级电影在线观看| 美女一区二区三区在线观看| 91精品欧美福利在线观看| 日韩国产欧美一区二区三区| 91精品国产91久久久久久一区二区| 亚洲成人激情自拍| 91精品国产综合久久婷婷香蕉| 日韩av中文字幕一区二区三区| 91精品国产91热久久久做人人| 免费看日韩精品| 2024国产精品| av在线不卡电影| 一区二区三区不卡视频| 欧美日韩高清一区二区不卡| 日本最新不卡在线| 亚洲精品一区二区三区福利| 国产成人精品综合在线观看| 亚洲欧洲国产日本综合| 欧美在线观看一区二区| 日本午夜精品一区二区三区电影| 宅男在线国产精品| 国产一区二区成人久久免费影院| 亚洲国产精华液网站w| 91亚洲精品乱码久久久久久蜜桃| 亚洲一区二区三区精品在线| 日韩一区二区在线观看视频| 国产美女精品在线| 亚洲视频狠狠干| 欧美高清视频一二三区 | 丝袜美腿亚洲一区| 精品福利av导航| 9人人澡人人爽人人精品| 亚洲丶国产丶欧美一区二区三区| 日韩欧美精品在线视频| 成人aa视频在线观看| 亚洲一区二区欧美日韩 | 国产日产精品1区| 色综合久久99| 精品一区二区三区久久| 国产综合色精品一区二区三区| 国产精品麻豆欧美日韩ww| 在线精品视频一区二区| 蜜臀91精品一区二区三区| 国产精品麻豆欧美日韩ww| 4438x成人网最大色成网站| 国产成人亚洲精品狼色在线 | 精品在线一区二区三区| 综合亚洲深深色噜噜狠狠网站| 欧美日韩电影一区| 国产成人免费xxxxxxxx| 午夜天堂影视香蕉久久| 国产午夜精品福利| 欧美中文字幕一二三区视频| 国产精品66部| 三级亚洲高清视频| 亚洲欧洲国产日韩| 精品理论电影在线观看| 在线精品国精品国产尤物884a| 精东粉嫩av免费一区二区三区| 亚洲乱码日产精品bd| 久久免费国产精品| 欧美精品色一区二区三区| 91一区二区在线| 国产一区二区三区视频在线播放| 亚洲成人先锋电影| 自拍偷拍欧美精品| 国产欧美一区二区精品性|