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

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

?? wchar_sort.c

?? PB 熟悉的哥們希望大家可以互相學習一下
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "prjdb.h"

#ifndef _WIN32_WCE
	#define WSCMP( s1, s2) wcscoll(s1, s2)
#else
	#define WSCMP( s1, s2) wcscmp(s1, s2)	
#endif

#ifndef MCO_PLATFORM_X64
    #define PAGE_SIZE                        (uint2)128
#else 
    #define PAGE_SIZE                        (uint2)256
#endif 

#define DATABASE_SIZE                    1024*1024*70
#define ADDRESS                          0x2000000

char* dbname = "dbname";
mco_db_h db = 0;

/* Fatal error trap */
static void errhandler(int n)
{

    fprintf(stdout, "\n*** eXtremeDB runtime fatal error: %d\n", n);
    exit( - 1);
}

#define OBJ1	1
#define OBJ2	2
#define OBJ3	4
#define OBJ4	8
#define OBJ5	0x10

typedef struct tagOne
{

    struct tagOne* next;
    uint4 flags;
    uint4 line_no;
    void* line;
    uint4 line_len;

} one_t, * one_h;

one_h root;
one_h* plast = &root;
uint4 line_cnt = 0;

void DumpShorts(char* rem, wchar_t* ptr, uint2 len)
{

    uint2 i;

    if (rem)
    {
        fprintf(stdout, "%s:", rem);
    }

    for (i = 0; i < len; i++)
    {
        fprintf(stdout, "0x%08hx ", ptr[i]);
    };

    fprintf(stdout, "\n");
};

int LoadFile(char* fn)
{

    FILE* f;
    void* mem_buf;
    uint4 mem_buf_sz;
    wchar_t* p, * n, * q;
    unsigned short* _p, * _n;
    MCO_RET rc;
    uint4 len_b;
    one_h one;

    if (0 == (f = fopen(fn, "rb")))
    {
        return 1;
    }

    fseek(f, 0, SEEK_END);
    mem_buf_sz = ftell(f);
    fseek(f, 0, SEEK_SET);
    if (mem_buf_sz < 2)
    {
        printf("The file is not a valid unicode text file.\n");
        return 1;
    };
    // if file contain wchar size(2)

    p = _p = mem_buf = malloc(mem_buf_sz + 2);

    fread(mem_buf, 1, mem_buf_sz, f);
    fclose(f);

    _p[(mem_buf_sz / 2)] = 0;


    if (_p[0] != 0xFEFF)
    {

        _n = _p;
        while (((unsigned long)_n - (unsigned long)_p) < mem_buf_sz)
        {
            *_n = (*_n &0xFF00) >> 8 | (*_n &0xFF) << 8;
            _n++;
        };
    };

    if (sizeof(wchar_t) == 4)
    {
        long ps = (mem_buf_sz / 2) + 1;
        p = malloc((mem_buf_sz / 2)* sizeof(wchar_t) + sizeof(wchar_t));
        _n = _p;
        n = p;
        while (ps)
        {
            *n = * _n;
            _n++;
            n++;
            ps--;
        }
        free(_p);
        mem_buf = _p = p;
    }

    if (p[0] != 0xFEFF)
    {
        printf("The file is not a valid unicode text file.\n");
        free(mem_buf);
        return 1;
    };

    p++;
    do
    {

        mco_trans_h t;
        Obj1 obj1;
        Obj2 obj2;
        Obj3 obj3;
        Obj4 obj4;
        Obj5 obj5;
        uint2 i, j, sz;
        wchar_t* pw;
        uint2 pw_len;

        n = p;
        while (*n != 0xD && * n != 0xA && * n != 0)n++;

        len_b = (unsigned long)n - (unsigned long)p;

        one = (one_h)malloc(sizeof(one_t));
        one->next = 0;
        one->flags = 0;
        one->line_len = len_b;
        one->line = malloc(len_b + sizeof(wchar_t));
        memcpy(one->line, p, len_b);

        q = (wchar_t*)(((mco_puint)one->line) + len_b);
        *q = 0;
        one->line_no = line_cnt;

        line_cnt++;
        *plast = one;
        plast = &one->next;

        pw = (wchar_t*)one->line;
        pw_len = (uint2)(one->line_len / sizeof(wchar_t));

        /* begin a read-write transaction */
        if ((rc = mco_trans_start(db, MCO_READ_WRITE, MCO_TRANS_FOREGROUND, &t)) == MCO_S_OK)
        {

            Obj1_new(t, &obj1);

            Obj1_line_no_put(&obj1, one->line_no);

            Obj1_line_put(&obj1, pw, pw_len);

            sz = pw_len;
            if (sz > 16)
            {
                sz = 16;
            }
            Obj1_part_put(&obj1, pw, sz);

            sz = pw_len / Obj1_parts_a_length;
            for (i = 0; i < Obj1_parts_a_length; i++)
            {
                Obj1_parts_a_put(&obj1, i, &pw[i* sz], sz);
            };

            sz = pw_len / Obj1_parts_s_length;
            for (i = 0; i < Obj1_parts_s_length; i++)
            {
                Obj1_parts_s_put(&obj1, i, &pw[i* sz], sz);
            };

            sz = pw_len / 3;
            Obj1_vect_a_alloc(&obj1, sz);
            for (i = 0; i < sz; i++)
            {
                Obj1_vect_a_put(&obj1, i, &pw[i* 3], 3);
            };

            sz = 1;
            for (i = 0; i < pw_len; i++)
            {
                if (pw[i] == 0x20)
                {
                    sz++;
                }
            };
            Obj1_vect_s_alloc(&obj1, sz);
            i = j = 0;
            while (i < pw_len)
            {

                sz = 0;
                while ((i + sz) < pw_len && pw[i + sz] != 0x20)
                {
                    sz++;
                }

                Obj1_vect_s_put(&obj1, j, &pw[i], sz);

                j++;
                i += sz + 1;
            };

            if (MCO_S_OK == (rc = mco_trans_commit(t)))
            {
                one->flags |= OBJ1;
            }
            else
            {
                printf("Error: %d at %d ", rc, __LINE__);
            };

        }
        else
        {
            printf("Can't open a transaction. Error code: %d\n", rc);
        };

        /* begin a read-write transaction */
        if ((rc = mco_trans_start(db, MCO_READ_WRITE, MCO_TRANS_FOREGROUND, &t)) == MCO_S_OK)
        {

            Obj2_new(t, &obj2);

            Obj2_line_put(&obj2, pw, pw_len);

            if (MCO_S_OK == (rc = mco_trans_commit(t)))
            {
                one->flags |= OBJ2;
            }
            else
            {
                if (rc != MCO_S_DUPLICATE)
                {
                    printf("Error: %d at %d ", rc, __LINE__);
                }
            };

        }
        else
        {
            printf("Can't open a transaction. Error code: %d\n", rc);
        };

        /* begin a read-write transaction */
        if ((rc = mco_trans_start(db, MCO_READ_WRITE, MCO_TRANS_FOREGROUND, &t)) == MCO_S_OK)
        {

            Obj3_new(t, &obj3);

            Obj3_line_put(&obj3, pw, pw_len);

            if (MCO_S_OK == (rc = mco_trans_commit(t)))
            {
                one->flags |= OBJ3;
            }
            else
            {
                if (rc != MCO_S_DUPLICATE)
                {
                    printf("Error: %d at %d ", rc, __LINE__);
                }
            };

        }
        else
        {
            printf("Can't open a transaction. Error code: %d\n", rc);
        };

        /* begin a read-write transaction */
        if ((rc = mco_trans_start(db, MCO_READ_WRITE, MCO_TRANS_FOREGROUND, &t)) == MCO_S_OK)
        {

            Obj4_new(t, &obj4);

            Obj4_line_put(&obj4, pw, pw_len);

            if (MCO_S_OK == (rc = mco_trans_commit(t)))
            {
                one->flags |= OBJ4;
            }
            else
            {
                if (rc != MCO_S_DUPLICATE)
                {
                    printf("Error: %d at %d ", rc, __LINE__);
                }
            };

        }
        else
        {
            printf("Can't open a transaction. Error code: %d\n", rc);
        };

        /* begin a read-write transaction */
        if ((rc = mco_trans_start(db, MCO_READ_WRITE, MCO_TRANS_FOREGROUND, &t)) == MCO_S_OK)
        {

            Obj5_new(t, &obj5);

            Obj5_line_put(&obj5, pw, pw_len);

            if (MCO_S_OK == (rc = mco_trans_commit(t)))
            {
                one->flags |= OBJ5;
            }
            else
            {
                if (rc != MCO_S_DUPLICATE)
                {
                    printf("Error: %d at %d ", rc, __LINE__);
                }
            };

        }
        else
        {
            printf("Can't open a transaction. Error code: %d\n", rc);
        };

        if (*n == 0)
        {
            break;
        }

        while (*n != 0xA)
        {
            n++;
        }

        p = n + 1;

    }
    while (1)
        ;

    free(mem_buf);
    /*
    one = root;
    while ( one ) {
    DumpShorts( "chain", one->line, one->line_len / 2 );
    one = one->next;
    };
     */
    return 0;
};

int CheckContent()
{

    MCO_RET rc = MCO_S_OK;
    mco_trans_h t;
    Obj1 obj;
    one_h one = root;


    while (rc == MCO_S_OK && one)
    {

        /* begin a read-write transaction */
        if ((rc = mco_trans_start(db, MCO_READ_ONLY, MCO_TRANS_FOREGROUND, &t)) == MCO_S_OK)
        {

            if (MCO_S_OK == (rc = Obj1_by_line_no_find(t, one->line_no, &obj)))
            {

                uint2 i, j, sz = 0;
                void* p;
                wchar_t* pw;
                wchar_t part[16];


                /* wstring */
                Obj1_line_size(&obj, &sz);

                if (sz* sizeof(wchar_t) != one->line_len)
                {
                    printf("Invalid string size detected at %d. LineNo:%d.\n", __LINE__, one->line_no);
                    printf("expected:%d found:%d\n", one->line_len / sizeof(wchar_t), sz);
                    break;
                };
                p = malloc((sz + 1)* sizeof(wchar_t));
                Obj1_line_get(&obj, p, (uint2)(sz + 1), &sz);
                if (sz* sizeof(wchar_t) != one->line_len || 0 != memcmp(one->line, p, one->line_len))
                {
                    printf("Invalid string detected at %d. LineNo:%d.\n", __LINE__, one->line_no);
                    printf("expected:%d found:%d\n", one->line_len / sizeof(wchar_t), sz);
                    DumpShorts("expected", one->line, (uint2)(one->line_len / 2));
                    DumpShorts("   found", p, sz);
                    break;
                };
                if (((wchar_t*)p)[sz] != 0)
                {
                    printf("No zero-terminator at the end of the string at %d. LineNo:%d. ", __LINE__, one->line_no);
                    break;
                };
                free(p);

                /* nchar */
                sz = sizeof(part) / sizeof(part[0]);
                Obj1_part_get(&obj, part, sz);
                if (sz > (uint2)(one->line_len / sizeof(wchar_t)))
                {
                    sz = (uint2)(one->line_len / sizeof(wchar_t));
                }
                if (0 != memcmp(part, one->line, sz* sizeof(wchar_t)))
                {
                    printf("Invalid array detected at %d. LineNo:%d.\n", __LINE__, one->line_no);
                    DumpShorts("expected", one->line, (uint2)(one->line_len / sizeof(wchar_t)));
                    DumpShorts("   found", part, sz);
                    break;
                };

                /* array of nchar */
                sz = (uint2)((one->line_len / sizeof(wchar_t)) / Obj1_parts_a_length);
                pw = one->line;
                for (i = 0; i < Obj1_parts_a_length; i++)
                {
                    Obj1_parts_a_at(&obj, i, part, sizeof(part) / sizeof(part[0]));

                    if (0 != memcmp(part, &pw[i* sz], sz > 10 ? 10 : sz))
                    {
                        printf("Invalid array item detected at %d. LineNo:%d.\n", __LINE__, one->line_no);
                        DumpShorts("expected", &pw[i* sz], sz);
                        DumpShorts("   found", part, sz);
                        break;
                    };
                };
                if (i < Obj1_parts_a_length)
                {
                    break;
                }

                /* array of nstring */
                sz = (uint2)((one->line_len / sizeof(wchar_t)) / Obj1_parts_s_length);
                pw = one->line;
                for (i = 0; i < Obj1_parts_s_length; i++)
                {

                    Obj1_parts_s_at_len(&obj, i, &j);
                    if (j != sz)
                    {
                        printf("Invalid string size detected at %d. LineNo:%d.\n", __LINE__, one->line_no);
                        printf("expected:%d found:%d\n", sz, j);
                        break;
                    };

                    p = malloc((j + 1)* sizeof(wchar_t));
                    Obj1_parts_s_at(&obj, i, p, (uint2)(j + 1), &j);

                    if (sz != j || 0 != memcmp(&pw[i* sz], p, sz))
                    {
                        printf("The strings are not equal at %d. LineNo:%d.\n", __LINE__, one->line_no);
                        printf("expected:%d found:%d\n", sz, j);
                        DumpShorts("expected", &pw[i* sz], sz);
                        DumpShorts("   found", p, sz);
                        break;
                    };
                    if (((wchar_t*)p)[sz] != 0)
                    {
                        printf("No zero-terminator at the end of the string at %d. LineNo:%d. ", __LINE__, one->line_no)
                               ;
                        break;
                    };
                    free(p);
                };
                if (i < Obj1_parts_s_length)
                {
                    break;
                }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜精品久久久久久| 中文在线一区二区| 首页国产欧美日韩丝袜| 这里只有精品免费| 久久99国产精品久久99果冻传媒| 日韩视频在线永久播放| 国产乱理伦片在线观看夜一区| 国产色爱av资源综合区| 99久精品国产| 午夜国产精品一区| 欧美sm美女调教| 不卡视频在线看| 亚洲大片精品永久免费| 欧美精品一区二区三区蜜桃| k8久久久一区二区三区| 同产精品九九九| 久久久久久久久久美女| 91蝌蚪porny成人天涯| 午夜婷婷国产麻豆精品| 久久午夜老司机| 日本高清不卡在线观看| 奇米影视在线99精品| 久久久久久久久久久久电影| 99热99精品| 日本va欧美va欧美va精品| 中文字幕国产一区| 亚洲日本电影在线| 欧美日韩视频不卡| 成人小视频在线| 午夜电影网亚洲视频| 欧美国产精品一区二区三区| 欧美性大战久久久久久久| 国产在线精品一区二区不卡了 | 同产精品九九九| 国产日韩精品一区二区三区在线| 欧美影院一区二区| 国产高清不卡一区二区| 午夜精品久久久久久久蜜桃app| 国产日产欧美一区二区视频| 欧美美女网站色| 99精品视频在线观看| 麻豆freexxxx性91精品| 亚洲精品网站在线观看| 久久蜜桃香蕉精品一区二区三区| 欧美日韩dvd在线观看| av综合在线播放| 国产高清视频一区| 久久精品国产一区二区| 亚洲国产精品久久久久秋霞影院 | 亚洲精品一区二区三区四区高清 | 美女被吸乳得到大胸91| 成人欧美一区二区三区| 国产欧美在线观看一区| 精品久久人人做人人爱| 欧美人动与zoxxxx乱| 色综合久久综合网97色综合| 成人综合在线视频| 国产在线一区二区综合免费视频| 日韩av中文字幕一区二区三区| 亚洲激情图片一区| 亚洲四区在线观看| 中文成人av在线| 国产欧美日韩不卡免费| 国产亚洲欧洲一区高清在线观看| 欧美一级xxx| 51精品久久久久久久蜜臀| 91国内精品野花午夜精品| 成人福利在线看| 成人开心网精品视频| 国产成人av电影在线观看| 欧美成人免费网站| 欧美一区日本一区韩国一区| 欧美在线影院一区二区| 在线看日本不卡| 欧美中文字幕一二三区视频| 色狠狠色噜噜噜综合网| 在线观看欧美精品| 在线免费av一区| 欧美日韩极品在线观看一区| 欧美三级日韩在线| 欧美一区二区网站| 欧美大片日本大片免费观看| 日韩欧美中文一区| 亚洲精品在线免费观看视频| 精品剧情v国产在线观看在线| 久久综合九色综合欧美亚洲| 国产亚洲一区二区在线观看| 欧美国产97人人爽人人喊| 国产精品成人网| 亚洲午夜成aⅴ人片| 日本最新不卡在线| 激情都市一区二区| 成人国产一区二区三区精品| 91热门视频在线观看| 欧美私人免费视频| 日韩精品一区二区在线| 久久久91精品国产一区二区三区| 久久众筹精品私拍模特| 欧美极品aⅴ影院| 亚洲乱码国产乱码精品精98午夜| 一区二区三区色| 蜜桃一区二区三区四区| 丁香婷婷综合激情五月色| 91猫先生在线| 日韩欧美国产一区二区在线播放| 久久成人免费网站| 国产999精品久久久久久| youjizz国产精品| 欧美片网站yy| 欧美精品一区二区三区很污很色的| 中文字幕一区二区三区在线不卡 | 午夜精品久久一牛影视| 国产老妇另类xxxxx| 91老师片黄在线观看| 日韩一区二区三区在线| 国产精品久久久久久久第一福利 | 亚洲图片欧美色图| 国产剧情在线观看一区二区| 91香蕉视频在线| 欧美电视剧在线观看完整版| 亚洲天堂久久久久久久| 久久99精品久久久久久动态图| a4yy欧美一区二区三区| 日韩一区二区中文字幕| 中文字幕中文在线不卡住| 另类综合日韩欧美亚洲| 色综合天天狠狠| 久久久久久久综合| 视频一区视频二区中文| 色综合天天天天做夜夜夜夜做| 精品精品欲导航| 香蕉乱码成人久久天堂爱免费| 不卡欧美aaaaa| 久久久一区二区三区捆绑**| 午夜视频一区在线观看| 91麻豆国产精品久久| 久久无码av三级| 日本不卡一区二区三区高清视频| 91在线观看地址| 国产香蕉久久精品综合网| 日本不卡的三区四区五区| 日本高清免费不卡视频| 国产精品区一区二区三| 国产乱人伦偷精品视频不卡| 亚洲国产日韩a在线播放性色| 丁香婷婷综合五月| 久久久精品一品道一区| 久久国产精品99精品国产| 91麻豆精品国产91久久久资源速度| 亚洲另类一区二区| av中文一区二区三区| 中文字幕av在线一区二区三区| 国产一区二区三区四区五区美女| 欧美一区二区视频网站| 婷婷中文字幕综合| 欧美吞精做爰啪啪高潮| 亚洲激情综合网| 欧美主播一区二区三区美女| 一区二区三区中文字幕电影| 91蝌蚪porny| 亚洲手机成人高清视频| 91美女在线观看| 亚洲愉拍自拍另类高清精品| caoporen国产精品视频| 中文字幕一区二区三区在线播放 | 久久先锋影音av鲁色资源| 国产在线观看一区二区| 精品奇米国产一区二区三区| 久久www免费人成看片高清| 精品国精品国产尤物美女| 国产麻豆成人传媒免费观看| 精品国产麻豆免费人成网站| 精品亚洲国产成人av制服丝袜| 欧美电影免费观看高清完整版| 久久99精品一区二区三区三区| 2022国产精品视频| 成人黄色软件下载| 亚洲伦理在线精品| 精品视频资源站| 免费在线观看精品| 美女视频黄 久久| 久久精品视频在线免费观看| 国产成人综合在线观看| 国产精品久久久久永久免费观看| 91一区二区在线| 亚洲成年人影院| 日韩免费观看高清完整版 | 一本久道中文字幕精品亚洲嫩| 一区二区三区毛片| 欧美精品一级二级三级| 免费av网站大全久久| 久久久综合激的五月天| 91天堂素人约啪| 日韩电影免费在线看| 国产日韩欧美不卡在线| 欧美亚洲尤物久久| 国产综合色精品一区二区三区| 国产嫩草影院久久久久| 在线观看视频一区| 国产精品中文字幕日韩精品|