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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ardefdir.c

?? roots--一個輕量級的內(nèi)存數(shù)據(jù)庫系統(tǒng)。基于Hash Map的table設(shè)計。快速輕巧。
?? C
字號:
/*
Copyright (c) 2003, Dan Kranz and Arnold Rom
All rights reserved.

Redistribution and use in source and binary forms, with or
without modification, are permitted provided that the following
conditions are met:

    * Redistributions of source code must retain the above
      copyright notice, this list of conditions and the following
      disclaimer.

    * Redistributions in binary form must reproduce the above
      copyright notice, this list of conditions and the following
      disclaimer in the documentation and/or other materials
      provided with the distribution.

    * The names of its contributors may not be used to endorse or
      promote products derived from this software without specific
      prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <roots.h>


/* ############################################################################# */
/* BYTE ReadAndTranslateDirectory(Database* db)                                # */
/*                                                                             # */
/*      return 0 if directory was read and translated.                         # */
/*      return 1 otherwise.                                                    # */
/*                                                                             # */
/*      output: db structure will be initialized based on the directory values # */
/*                                                                             # */
/* ############################################################################# */


/*      local macros */

#define BYTE_WIDTH    0
#define DATA_TYPE     1
#define FIELD_NAME    2
#define DISPLAY_WIDTH 3

#define InvalidLine                                                    \
        {RootsError("Invalid directory line: %.*s\n",buf.cpl,          \
                                               BlockPointer(buf,i+1)); \
                                                      return 1;}

BYTE ReadAndTranslateDirectory(DataBase* db)

/* ---------------------------------------------------------------------------- */
{       /* ReadAndTranslateDirectory  START */
/* ---------------------------------------------------------------------------- */

/*      local data */

        BlockCplNline buf;

        char fspec[MAX_PATH],park[MAXLAB];

        long i,ntoks,v[2],value,n1=1,nline,kt;
        long cMAXLAB[2]={1,MAXLAB}, labelCpl=MAXLAB;

        char* tokens[50];
        short tokcpl[50];

        if(ReadTextFile(strcat(strcpy(fspec,db->name),".dir"),&buf))
                                                                  return 1;

/*      clear directory information */

        db->base.cpl=0; db->base.nline=0; db->nbtabs=0; db->nfields=0;

/* ------------------------------------------------------------------ */
/*      translate the base type information */
/* ------------------------------------------------------------------ */

        for(i=0; i<buf.nline; i++)
        {
        ntoks=Parse(BlockPointer(buf,i+1),buf.cpl,tokens,tokcpl);

		  /* skip table name - assume base name */
		  /* if(i==0 && ntoks==1) continue; */
        if (i==0) continue;

/*      translate next field: bw type name display */

        if(ntoks < 4 ) InvalidLine

/*      clear those that may not get accessed */

        db->dspdec[db->nfields]=0;

/* --------------------- */
/*      byte width */
/* --------------------- */

        v[0]=1; v[1]=tokcpl[BYTE_WIDTH];

        if(chcdbf(tokens[BYTE_WIDTH],v,&value,&n1)) InvalidLine

        if(value<=0) InvalidLine

        db->blkfld[db->nfields][1]=value;

/* --------------------- */
/*      data type */
/* --------------------- */

        locase(tokens[DATA_TYPE],&n1);

        switch((int) *(tokens[DATA_TYPE]))
{
/* ------- */
case 'b':
/* ------- */

        db->ARMRtype[db->nfields]=db->type[db->nfields]=B_TYPE; break;

/* ------- */
case 'r':
/* ------- */

        db->ARMRtype[db->nfields]=db->type[db->nfields]=R_TYPE;


        if(tokcpl[DATA_TYPE]>1)
           {
           v[0]=2; v[1]=tokcpl[DATA_TYPE]-1;
           if(chcdbf(tokens[DATA_TYPE],v,&value,&n1)) InvalidLine
           if(value<0) InvalidLine
           db->dspdec[db->nfields]=(short)value;
           }
        break;

/* ------- */
case 'd':
/* ------- */

        db->type[db->nfields]=B_TYPE; db->ARMRtype[db->nfields]=D_TYPE; break;

/* ------- */
case 'e':
/* ------- */

        db->ARMRtype[db->nfields]=db->type[db->nfields]=E_TYPE; break;

/* ------- */
case 'z':
/* ------- */

        db->type[db->nfields]=B_TYPE; db->ARMRtype[db->nfields]=Z_TYPE; break;

/* ------- */
case 't':
/* ------- */

        db->ARMRtype[db->nfields]=db->type[db->nfields]=T_TYPE;

        if(tokcpl[DATA_TYPE]==1) InvalidLine

        v[0]=2; v[1]=tokcpl[DATA_TYPE]-1;
        if(chcdbf(tokens[DATA_TYPE],v,&value,&n1)) InvalidLine
        if(value<0 || value>MAXARX) InvalidLine

        db->tabinx[db->nfields]=(short)value;

        db->nbtabs=max((short)value,db->nbtabs);

        break;

/* ------- */
default:   InvalidLine
/* ------- */
}

/* --------------------- */
/*      field name */
/* --------------------- */

        v[0]=1;
        v[1] = (tokcpl[FIELD_NAME] < MAXLAB) ? tokcpl[FIELD_NAME] : MAXLAB-1;
        nline=db->nfields;

        db->labcpl[db->nfields] = (short) v[1];

        chmove(tokens[FIELD_NAME],v,park,cMAXLAB,&n1);
        park[v[1]]='\0';  /* make it a c-string */

/*      make sure field name is unique */

        value=0;
        chtab(db->label,&labelCpl,&nline,park,cMAXLAB,&value);

        if(value != db->nfields+1)
          {RootsError("Redundant field name: %.*s \n",
                                       tokcpl[FIELD_NAME],park); return 1;}

/* --------------------- */
/*      display width */
/* --------------------- */

        v[0]=1; v[1]=tokcpl[DISPLAY_WIDTH];

        if(chcdbf(tokens[DISPLAY_WIDTH],v,&value,&n1)) InvalidLine

        if(value<0) InvalidLine

        db->dspcpl[db->nfields]=(short)value;

        if(db->type[db->nfields] == R_TYPE && value>=100)
          {
          db->dspcpl[db->nfields]=(short)(value/100);
          db->dspdec[db->nfields]=(short)(value%100);
          }

/* --------------------- */
/*      step field count */
/* --------------------- */

        db->nfields++;
        if(db->nfields > MAXFLD) {RootsError("Too many fields \n");
                                                                 return 1;}
        }
/* ------------------------------------------------------------------ */
/*      complete the data structures */
/* ------------------------------------------------------------------ */

/*      clean out the table's dimensions */

        for(i=0; i<db->nbtabs; i++)
        {
        db->arx[i].cpl=0;
        db->arx[i].nline=0;
        db->arx[i].nAlloc=0;
        }

/*      scan all the fields and build table structures in the process */

        for(i=0; i<db->nfields; i++)
        {
        db->blkfld[i][0]=db->base.cpl+1;
        db->base.cpl+=db->blkfld[i][1];

        if(db->type[i] == T_TYPE)
             {
             kt=db->tabinx[i];
             if(db->arx[kt-1].cpl == 0)db->arx[kt-1].cpl=db->dspcpl[i];

             if(db->arx[kt-1].cpl != db->dspcpl[i])

               {RootsError(" table cpl missmatch for shared tabel T%d \n",
                                                            kt); return 1;}
             }

        }

/* ----------------------------------- */
/*      release buf and get out */
/* ----------------------------------- */

        free(buf.block);

        return 0;

/* ---------------------------------------------------------------------------- */
}       /* ReadAndTranslateDirectory  END */
/* ---------------------------------------------------------------------------- */


#define SkipBlanks 1
#define BuildToken 2

        long Parse(char* line, long cpl, char** tokens, short* tokcpl)

/* ---------------------------------------------------------------------------- */
{       /* Parse  START */
/* ---------------------------------------------------------------------------- */

        long ntoken=0,i;
        BYTE Scan=SkipBlanks;

        tokcpl[ntoken]=0;

        for(i=0; i<cpl; i++)
        {
        switch(Scan)
          {
          /* ------------- */
          case SkipBlanks:
          /* ------------- */

           if(*(line+i)==' ') break;

           ntoken++;

           tokens[ntoken-1]=line+i;
           tokcpl[ntoken-1]=1;

           Scan=BuildToken;

           break;

          /* ------------- */
          case BuildToken:
          /* ------------- */

           if(*(line+i)!=' '){tokcpl[ntoken-1]++; break;}

           tokcpl[ntoken]=0;

           Scan=SkipBlanks; break;
          }
        }

        return ntoken;

/* ---------------------------------------------------------------------------- */
}       /* Parse  END */
/* ---------------------------------------------------------------------------- */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人久久影院| 亚洲国产精品ⅴa在线观看| 成人av电影免费观看| 日韩高清在线电影| 亚洲国产一区在线观看| 亚洲色图第一区| 国产精品久久久久婷婷| 精品成人a区在线观看| 欧美浪妇xxxx高跟鞋交| 欧美日韩一区二区三区在线| 国产精品初高中害羞小美女文| 欧美在线观看视频一区二区三区| 美女一区二区久久| 亚洲高清中文字幕| 久久久噜噜噜久久人人看| 精品综合久久久久久8888| 免费的成人av| 日本强好片久久久久久aaa| 亚洲日本在线天堂| 欧美高清在线精品一区| 日韩小视频在线观看专区| 日韩欧美一区二区三区在线| 国产午夜一区二区三区| 中文在线一区二区| 亚洲精品v日韩精品| 亚洲国产日韩一级| 久久不见久久见免费视频7| 国产精品一级在线| 在线亚洲一区观看| 欧美一二三区在线| 国产精品对白交换视频 | 成人欧美一区二区三区小说| 亚洲欧美福利一区二区| 日韩成人午夜电影| 国产成人在线视频免费播放| 91麻豆免费在线观看| 欧美日韩aaa| 久久久精品2019中文字幕之3| 亚洲婷婷在线视频| 日韩成人精品在线| 高清beeg欧美| 欧美女孩性生活视频| 精品国产百合女同互慰| 一区二区三区精品在线| 久久精品免费观看| 91网站最新网址| 日韩欧美久久一区| 日韩码欧中文字| 激情综合网最新| 91激情在线视频| 久久精品视频一区二区三区| 亚洲一二三专区| 国产乱人伦精品一区二区在线观看| 在线精品国精品国产尤物884a| 欧美大肚乱孕交hd孕妇| 亚洲三级电影全部在线观看高清| 美女一区二区视频| 91精品福利视频| 国产日韩精品视频一区| 日本伊人精品一区二区三区观看方式 | 亚洲图片有声小说| 日本成人在线一区| 一本一道久久a久久精品综合蜜臀| 亚洲精品国产一区二区精华液| 精彩视频一区二区| 欧美无砖专区一中文字| 中文字幕一区视频| 紧缚捆绑精品一区二区| 日韩一区二区精品| 一区二区三区四区在线播放| 国产一区二区在线视频| 国产亚洲综合色| 91性感美女视频| 欧美岛国在线观看| 亚洲动漫第一页| 91欧美激情一区二区三区成人| 久久久三级国产网站| 麻豆国产欧美一区二区三区| 欧美日韩国产首页| 依依成人综合视频| 99精品国产91久久久久久| 欧美激情自拍偷拍| 国产一区二区三区不卡在线观看| 91精品国产综合久久小美女| 一区二区三区丝袜| 色婷婷av一区二区三区之一色屋| 亚洲国产电影在线观看| 国产成人在线电影| 久久久久99精品国产片| 精品一区二区综合| 日韩欧美国产综合| 久久精品国产网站| 日韩视频免费直播| 日韩1区2区3区| 欧美夫妻性生活| 日本亚洲三级在线| 日韩三级在线观看| 久久国产精品99精品国产 | 日韩美女主播在线视频一区二区三区| 亚洲一区二区三区四区在线免费观看| 色噜噜狠狠成人网p站| 综合在线观看色| 91视频在线看| 亚洲综合久久久| 欧美性一级生活| 天天操天天色综合| 91精品国产乱码久久蜜臀| 三级成人在线视频| 7878成人国产在线观看| 青青草伊人久久| 精品理论电影在线| 国产麻豆91精品| 国产精品拍天天在线| 成人福利视频在线| 亚洲视频1区2区| 欧美日韩一级视频| 日韩成人伦理电影在线观看| 欧美va在线播放| 成人午夜在线视频| 欧美电影免费观看高清完整版在 | 五月激情综合色| 久久久久久久免费视频了| 欧美日韩在线不卡| 91视频你懂的| 欧美一区二区三区视频在线观看| 国产一区二区三区精品视频| 免费观看日韩av| 青青草原综合久久大伊人精品优势| 亚洲成av人片| 亚洲色图都市小说| 久久久99久久| 不卡的电影网站| 一区二区三区在线免费| 欧美老肥妇做.爰bbww视频| 久久成人精品无人区| 国产精品国产精品国产专区不片| 在线欧美一区二区| 美女网站色91| 国产精品进线69影院| 欧美精品vⅰdeose4hd| 国产剧情一区二区三区| 一区二区三区四区不卡视频| 欧美一级搡bbbb搡bbbb| 国产suv一区二区三区88区| 一级特黄大欧美久久久| 久久亚洲欧美国产精品乐播| 91免费精品国自产拍在线不卡| 日韩国产欧美视频| 亚洲国产精品精华液ab| 欧美福利视频导航| 成人看片黄a免费看在线| 无码av免费一区二区三区试看| 精品国产一区二区三区忘忧草 | 国产呦萝稀缺另类资源| 一区二区日韩电影| 久久午夜羞羞影院免费观看| 欧美在线观看一二区| 国产91精品久久久久久久网曝门| av在线综合网| 亚洲另类在线一区| 另类人妖一区二区av| 成人欧美一区二区三区白人| 制服丝袜av成人在线看| 99精品国产一区二区三区不卡| 免费在线看一区| 夜色激情一区二区| 欧美国产欧美亚州国产日韩mv天天看完整| 欧美体内she精高潮| 成人午夜看片网址| 六月丁香婷婷久久| 亚洲一区二区三区在线播放| 日本一区二区三区四区| 91精品国模一区二区三区| 色婷婷亚洲一区二区三区| 国产精品99久久久久| 免费一级欧美片在线观看| 亚洲一区二区精品3399| 国产精品久久午夜| 久久久亚洲高清| 91精品国产免费| 欧美日韩小视频| 91麻豆免费看| 不卡的电影网站| 丁香六月久久综合狠狠色| 国模一区二区三区白浆| 日韩精品亚洲专区| 亚洲成人午夜电影| 亚洲精品欧美综合四区| 国产精品久久三区| 中文字幕乱码亚洲精品一区| 久久免费美女视频| 精品999在线播放| 欧美成人vr18sexvr| 日韩免费视频一区| 91精品在线免费| 91精品久久久久久久99蜜桃 | 中文字幕欧美三区| 久久精品一级爱片| 国产亚洲制服色| 国产三级三级三级精品8ⅰ区|