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

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

?? dkmrsort.c

?? roots--一個輕量級的內存數據庫系統。基于Hash Map的table設計。快速輕巧。
?? 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 <roots.h>

// Compare function used for database sorting

int armrCompare(const void *e1, const void *e2, size_t len, short type)
{
   double rnum1, rnum2;
   long num1, num2;
   short datatype;
   int rc;
   static long v[2]={1,0};
   static long n1=1;

   datatype=type;
   if (datatype < 0)
      datatype = -type;

   switch (datatype) {
   case B_TYPE:
   case D_TYPE:
   case Z_TYPE:
      v[1]=len;
      bunpac((void*)e1,v,&num1,&n1);
      bunpac((void*)e2,v,&num2,&n1);
      if (num1 < num2)
         rc = -1;
      else if (num1==num2)
         rc = 0;
      else
         rc = 1;
      break;
   case R_TYPE:
      v[1]=len;
      runpac((void*)e1,v,&rnum1,&n1);
      runpac((void*)e2,v,&rnum2,&n1);
      if (rnum1 < rnum2)
         rc = -1;
      else if (rnum1==rnum2)
         rc = 0;
      else
         rc = 1;
      break;
   default:
      rc = memcmp(e1,e2,len);
   }

   if (type < 0)
      return -rc;
   return rc;
}


// Compare function used for sorting tables

int tableCompare(const void *s1, const void *s2, size_t len, short type)
{
   int rc;
#if defined (WIN32)
   rc = CompareString(LOCALE_USER_DEFAULT,0,(char*)s1,(int)len,(char*)s2,(int)len);
   rc -= 2;
#else
   // This code requires testing.
   // I tried to code it so it behaves the same as WIN32.
   rc = strnicoll(s1,s2,len);
   if (rc==0) {
      rc = memcmp(s1,s2,len);
      rc = -rc;
   }
#endif
   return rc;
}


// Compare function used by chsort

int memoryCompare(const void *s1, const void *s2, size_t len, short dummy)
{
   return memcmp(s1,s2,len);
}


// Arnold Rom's MicroArmr sort algorithm, natural merge sort using lists
// Output array sorti contains the sort sequence.

BOOL mrsort(void *arg_block, long *cpl, long *nline,
            long *sorti, long *fields, short *types, long *nf,
            int (*compare)(const void *el, const void *e2, size_t count, short type))
{
   long a, b, last;
   long ngroup, pair, npairs;
   unsigned short *fptr, *lptr;
   ShortArray lnextl={NULL,0}, group={NULL,0};
   BYTE *block=arg_block, *apt, *bpt;
   long *fld;
   int j, rc;

   if (
      *cpl < 1        ||
      *nline < 0      ||
      *nline > MAXLIN ||
      *nf < 1 )
   {
      RootsSOS("mrsort() sos!");
      return FALSE;
   }

   if (*nline==0)
      return TRUE;

   // Only one line?
   if (*nline==1) {
      *sorti=1;
      return TRUE;
   }

   ExpandShort(lnextl,*nline);
   ExpandShort(group,*nline);

   // Adjust arrays for relative zero addressing
   block -= *cpl;
   --block;
   --lnextl.array;

// --------------------------------------
//    Derive initial natural groupings
// --------------------------------------

   // Define very first group
   ngroup=1;
   *(group.array)=1;
   *(lnextl.array+1)=0;

   fptr=group.array;
   lptr=lnextl.array+1;

   for (a=1, b=2; b <= *nline; ++a, ++b) {

      // Compare line b with line a
      apt = block + (*cpl * a);
      bpt = block + (*cpl * b);
      for (j=0, fld=fields; j<*nf; j++, fld+=2) {
         if ((rc = (*compare)(bpt+*(fld),apt+*(fld),*(fld+1),types[j])) != 0)
            break;
      }

      // New group
      if (rc < 0) {
         *lptr++ = 0;
         ++ngroup;
         *++fptr = (unsigned short) b;
      }

      // Same group
      else
         *lptr++ = (unsigned short) b;
   }
   *lptr = 0;

// -----------------
//    Merge Phase
// -----------------

   for (npairs=ngroup/2; npairs > 0; npairs=ngroup/2) {

      fptr = group.array;
      --fptr;

      // Merge group A with group B
      for (pair=0; pair < npairs; ++pair) {

         a = *++fptr;
         b = *++fptr;

         // Initial compare
         apt = block + (*cpl * a);
         bpt = block + (*cpl * b);
         for (j=0, fld=fields; j<*nf; j++, fld+=2) {
            if ((rc = (*compare)(bpt+*(fld),apt+*(fld),*(fld+1),types[j])) != 0)
               break;
         }

         // B is the 1st member of a new list
         if (rc < 0) {
            *(group.array+pair) = (unsigned short) b;
            last = b;
            b = *(lnextl.array+b);

            // No more B?  Append the rest of A
            if (b==0) {
               *(lnextl.array+last) = (unsigned short) a;
               continue;
            }
         }

         // A is the 1st member of a new group
         else {
            *(group.array+pair) = (unsigned short) a;
            last = a;
            a = *(lnextl.array+a);

            // No more A?  Append the rest of B
            if (a==0) {
               *(lnextl.array+last) = (unsigned short) b;
               continue;
            }
         }

         // More compares
         for (;;) {

            apt = block + (*cpl * a);
            bpt = block + (*cpl * b);
            for (j=0, fld=fields; j<*nf; j++, fld+=2) {
               if ((rc = (*compare)(bpt+*(fld),apt+*(fld),*(fld+1),types[j])) != 0)
                  break;
            }

            // Append b to an established group
            if (rc < 0) {

               *(lnextl.array+last) = (unsigned short) b;
               last = b;
               b = *(lnextl.array+b);

               // No more B?
               if (b==0) {
                  *(lnextl.array+last) = (unsigned short) a;
                  break;
               }
            }

            // Append a to an established group
            else {
               *(lnextl.array+last) = (unsigned short) a;
               last = a;
               a = *(lnextl.array+a);

               // No more A?
               if (a == 0) {
                  *(lnextl.array+last) = (unsigned short) b;
                  break;
               }
            }
         }

      } // Next group pair

      // Reset ngroup for next pass

      // There was an unused group.  Add the odd group to new groups
      if (ngroup%2) {
         *(group.array+npairs) = *(group.array+ngroup-1);
         ngroup = npairs+1;
      }
      
      // Groups paired evenly
      else
         ngroup = npairs;

   } // Next merge pass

   // Derive sorti
   for (a = *(group.array); a!=0; a = *(lnextl.array+a))
      *sorti++ = a;

   FreeArray(group);
   ++lnextl.array;
   FreeArray(lnextl);

   return TRUE;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲天堂精品在线观看| 国产亚洲成年网址在线观看| 国产精品欧美久久久久无广告| 久久99国产精品麻豆| 精品国产乱码久久久久久蜜臀| 久久av中文字幕片| 久久综合色播五月| 成人黄色在线看| 亚洲精品视频免费观看| 欧美精品三级日韩久久| 久久99久久99小草精品免视看| 国产日韩一级二级三级| 91看片淫黄大片一级| 五月天激情小说综合| 日韩亚洲欧美在线| 成人激情免费电影网址| 一区二区三区精品视频在线| 337p亚洲精品色噜噜狠狠| 激情综合网激情| 亚洲视频香蕉人妖| 91精品国产美女浴室洗澡无遮挡| 国产精品资源在线看| 亚洲精选在线视频| 日韩欧美亚洲国产另类| 91在线云播放| 久久99国产精品成人| 亚洲日本在线看| 欧美大胆人体bbbb| 91美女片黄在线观看91美女| 日韩影院在线观看| 中文字幕av不卡| 欧美精品久久99久久在免费线| 国产精品91一区二区| 一区二区三区视频在线观看 | 99综合影院在线| 日日欢夜夜爽一区| 中文字幕亚洲欧美在线不卡| 在线播放国产精品二区一二区四区 | 欧美日韩高清一区二区| 国产美女精品一区二区三区| 亚洲精品国产第一综合99久久| 精品国产免费人成电影在线观看四季| 一本色道久久综合狠狠躁的推荐| 激情成人综合网| 亚洲国产aⅴ天堂久久| 欧美精品一区二区在线观看| 欧美丝袜丝nylons| 成人小视频免费观看| 日本伊人色综合网| 亚洲精品国产高清久久伦理二区| 久久精品人人做人人爽97| 欧美日韩精品三区| 91久久精品网| 91日韩一区二区三区| 成人午夜精品在线| 国产在线精品国自产拍免费| 日本不卡的三区四区五区| 亚洲欧美一区二区三区国产精品 | 国产精品久久久久久亚洲毛片| 日韩欧美一二三| 91精品欧美一区二区三区综合在| 色综合天天狠狠| 99精品偷自拍| 99re8在线精品视频免费播放| 风间由美一区二区av101| 国产做a爰片久久毛片| 日韩在线一区二区三区| 午夜久久福利影院| 亚洲v中文字幕| 一区二区免费在线| 一区二区在线观看视频| 国产精品免费免费| 国产精品二三区| 国产精品国产三级国产| 国产精品三级电影| 国产精品人成在线观看免费| 国产精品你懂的在线欣赏| 国产欧美一区二区三区沐欲| 国产无遮挡一区二区三区毛片日本| 久久蜜桃一区二区| 2024国产精品视频| 国产人成一区二区三区影院| 国产喂奶挤奶一区二区三区| 国产精品天干天干在线综合| 国产欧美日韩卡一| 一色屋精品亚洲香蕉网站| 亚洲视频免费看| 一二三区精品视频| 日韩高清在线观看| 久久99热国产| 成人综合婷婷国产精品久久蜜臀 | 韩国av一区二区三区在线观看| 久久精品国产99国产精品| 韩国三级电影一区二区| 国产一区高清在线| 成人黄色国产精品网站大全在线免费观看| 国产精品资源在线看| 91丨九色丨蝌蚪富婆spa| 欧美撒尿777hd撒尿| 欧美一区二区三区在线看| 欧美xxxxxxxx| 国产欧美一区二区在线观看| 最新国产成人在线观看| 性欧美大战久久久久久久久| 久久成人久久鬼色| 成人av集中营| 在线成人免费观看| 国产亚洲成aⅴ人片在线观看 | 69成人精品免费视频| 2024国产精品| 怡红院av一区二区三区| 男女性色大片免费观看一区二区| 国产大片一区二区| 欧美三区在线观看| 国产亚洲成av人在线观看导航| 亚洲裸体在线观看| 毛片基地黄久久久久久天堂| 亚洲黄色在线视频| 色婷婷av久久久久久久| 91精品国产全国免费观看 | 五月天激情小说综合| 国产精品一区二区三区99| 91麻豆免费在线观看| 日韩欧美在线影院| 亚洲黄色小视频| 国产精品 日产精品 欧美精品| 在线观看一区二区精品视频| 久久―日本道色综合久久| 亚洲妇女屁股眼交7| 国产精品77777竹菊影视小说| 欧美精品高清视频| 亚洲日本护士毛茸茸| 国产一区二区三区免费在线观看 | 日韩视频国产视频| 亚洲狼人国产精品| 国产.欧美.日韩| 欧美xxxxx牲另类人与| 亚洲一区在线观看网站| 成人激情开心网| 久久一二三国产| 麻豆精品久久精品色综合| 99久久久国产精品| 久久久精品影视| 久久国产精品免费| 欧美日韩亚洲综合在线| 亚洲视频一二区| 成人禁用看黄a在线| 久久嫩草精品久久久精品一| 免费在线观看成人| 在线成人午夜影院| 五月天一区二区三区| 日本道在线观看一区二区| 国产精品理论片| 高清不卡一区二区| 国产欧美视频一区二区三区| 国产一区二区三区免费| 亚洲精品在线免费播放| 人人超碰91尤物精品国产| 欧美日韩国产欧美日美国产精品| 一区二区三区四区激情| 91网站在线播放| 亚洲美女免费在线| 一本大道久久a久久精二百| 亚洲欧洲av色图| 91一区二区在线| 樱花草国产18久久久久| 91福利国产精品| 亚洲大片一区二区三区| 欧美日免费三级在线| 国产精品77777| 国产欧美一区二区在线| 粗大黑人巨茎大战欧美成人| 中文欧美字幕免费| 不卡一区二区中文字幕| 亚洲免费观看视频| 欧美性色aⅴ视频一区日韩精品| 亚洲精品精品亚洲| 欧美日韩成人在线| 日韩国产高清影视| 精品国产成人在线影院| 国产精华液一区二区三区| 国产精品家庭影院| 色婷婷精品久久二区二区蜜臂av| 亚洲第一福利视频在线| 日韩一区和二区| 风间由美一区二区三区在线观看| 亚洲视频一区二区在线| 欧美天天综合网| 看片网站欧美日韩| 国产精品网站导航| 欧美日韩午夜在线视频| 老司机午夜精品| 国产精品理论在线观看| 欧美视频在线一区| 久久精品国产在热久久| 国产精品欧美一区二区三区| 欧美中文字幕久久 | 高清日韩电视剧大全免费| 亚洲精品高清在线观看| 欧美一区二区人人喊爽|