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

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

?? framemgr.c

?? 手寫識別Chinput源碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
/******************************************************************Copyright 1993, 1994 by Digital Equipment Corporation, Maynard, Massachusetts,                         All Rights Reserved Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and thatboth that copyright notice and this permission notice appear in supporting documentation, and that the names of Digital or MIT not beused in advertising or publicity pertaining to distribution of thesoftware without specific, written prior permission.   DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDINGALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALLDIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES ORANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THISSOFTWARE.   Author: Hiroyuki Miyamoto  Digital Equipment Corporation                             miyamoto@jrd.dec.com    This version tidied and debugged by Steve Underwood May 1999******************************************************************/#include <X11/Xlibint.h>#include <stdlib.h>#include "FrameMgr.h"/* Convenient macro */#define _UNIT(n)   ((int)(n) & 0xFF)#define _NUMBER(n) (((int)(n) >> 8) & 0xFF)/* For byte swapping */#define Swap16(p, n) ((p)->byte_swap ?       \(((n) << 8 & 0xFF00) | \ ((n) >> 8 & 0xFF)     \) : n)#define Swap32(p, n) ((p)->byte_swap ?            \        (((n) << 24 & 0xFF000000) | \         ((n) <<  8 & 0xFF0000) |   \         ((n) >>  8 & 0xFF00) |     \         ((n) >> 24 & 0xFF)         \        ) : n)#define Swap64(p, n) ((p)->byte_swap ?            \        (((n) << 56 & 0xFF00000000000000) | \         ((n) << 40 & 0xFF000000000000) |   \         ((n) << 24 & 0xFF0000000000) |     \         ((n) <<  8 & 0xFF00000000) |       \         ((n) >>  8 & 0xFF000000) |         \         ((n) >> 24 & 0xFF0000) |           \         ((n) >> 40 & 0xFF00) |             \         ((n) >> 56 & 0xFF)                 \        ) : n)/* Type definition */typedef struct _Iter *Iter;typedef struct _FrameInst *FrameInst;typedef union{    int num; 		/* For BARRAY */    FrameInst fi; 	/* For POINTER */    Iter iter; 		/* For ITER */} ExtraDataRec, *ExtraData;typedef struct _Chain{    ExtraDataRec d;    int frame_no;    struct _Chain *next;} ChainRec, *Chain;typedef struct _ChainMgr{    Chain top;    Chain tail;} ChainMgrRec, *ChainMgr;typedef struct _ChainIter{    Chain cur;} ChainIterRec, *ChainIter;typedef struct _FrameIter{    Iter iter;    Bool counting;    unsigned int counter;    int end;    struct _FrameIter* next;} FrameIterRec, *FrameIter;typedef struct _FrameInst{    XimFrame template;    ChainMgrRec cm;    int cur_no;} FrameInstRec;typedef void (*IterStartWatchProc) (Iter it, void *client_data);typedef struct _Iter{    XimFrame template;    int max_count;    Bool allow_expansion;    ChainMgrRec cm;    int cur_no;    IterStartWatchProc start_watch_proc;    void *client_data;    Bool start_counter;} IterRec;typedef struct _FrameMgr{    XimFrame frame;    FrameInst fi;    char *area;    int idx;    Bool byte_swap;    int total_size;    FrameIter iters;} FrameMgrRec;typedef union{    int num;           /* For BARRAY and PAD */    struct    {          /* For COUNTER_* */        Iter iter;        Bool is_byte_len;    } counter;} XimFrameTypeInfoRec, *XimFrameTypeInfo;/* Special values */#define NO_VALUE -1#define NO_VALID_FIELD -2static FrameInst FrameInstInit(XimFrame frame);static void FrameInstFree(FrameInst fi);static XimFrameType FrameInstGetNextType(FrameInst fi, XimFrameTypeInfo info);static XimFrameType FrameInstPeekNextType(FrameInst fi, XimFrameTypeInfo info);static FmStatus FrameInstSetSize(FrameInst fi, int num);static FmStatus FrameInstSetIterCount(FrameInst fi, int num);static int FrameInstGetTotalSize(FrameInst fi);static void FrameInstReset(FrameInst fi);static Iter IterInit(XimFrame frame, int count);static void IterFree(Iter it);static int FrameInstGetSize(FrameInst fi);static int IterGetSize(Iter it);static XimFrameType IterGetNextType(Iter it, XimFrameTypeInfo info);static XimFrameType IterPeekNextType(Iter it, XimFrameTypeInfo info);static FmStatus IterSetSize(Iter it, int num);static FmStatus IterSetIterCount(Iter it, int num);static int IterGetTotalSize(Iter it);static void IterReset(Iter it);static Bool IterIsLoopEnd(Iter it, Bool* myself);static void IterSetStartWatch(Iter it, IterStartWatchProc proc, void* client_data);static void _IterStartWatch(Iter it, void* client_data);static ExtraData ChainMgrGetExtraData(ChainMgr cm, int frame_no);static ExtraData ChainMgrSetData(ChainMgr cm, int frame_no,                                 ExtraDataRec data);static Bool ChainIterGetNext(ChainIter ci, int* frame_no, ExtraData d);static int _FrameInstIncrement(XimFrame frame, int count);static int _FrameInstDecrement(XimFrame frame, int count);static int _FrameInstGetItemSize(FrameInst fi, int cur_no);static Bool FrameInstIsIterLoopEnd(FrameInst fi);static FrameIter _FrameMgrAppendIter(FrameMgr fm, Iter it, int end);static FrameIter _FrameIterCounterIncr(FrameIter fitr, int i);static void _FrameMgrRemoveIter(FrameMgr fm, FrameIter it);static Bool _FrameMgrIsIterLoopEnd(FrameMgr fm);static Bool _FrameMgrProcessPadding(FrameMgr fm, FmStatus* status);#define IterGetIterCount(it) ((it)->allow_expansion ? \NO_VALUE : (it)->max_count)#define IterFixIteration(it) ((it)->allow_expansion = False)#define IterSetStarter(it) ((it)->start_counter = True)#define ChainMgrInit(cm) (cm)->top = (cm)->tail = NULL#define ChainMgrFree(cm)                \{                                       \    Chain tmp;                          \    Chain cur = (cm)->top;              \					\    while (cur)                         \    {                                   \        tmp = cur->next;                \        Xfree (cur);                    \	cur = tmp;                      \    }                                   \}#define ChainIterInit(ci, cm)           \{                                       \    (ci)->cur = (cm)->top;              \}/* ChainIterFree has nothing to do. */#define ChainIterFree(ci)#define FrameInstIsEnd(fi) ((fi)->template[(fi)->cur_no].type == EOL)FrameMgr FrameMgrInit (XimFrame frame, char* area, Bool byte_swap){    FrameMgr fm;    fm = (FrameMgr) Xmalloc (sizeof (FrameMgrRec));    fm->frame = frame;    fm->fi = FrameInstInit (frame);    fm->area = (char *) area;    fm->idx = 0;    fm->byte_swap = byte_swap;    fm->total_size = NO_VALUE;    fm->iters = NULL;    return fm;}void FrameMgrInitWithData (FrameMgr fm,                           XimFrame frame,                           void * area,                           Bool byte_swap){    fm->frame = frame;    fm->fi = FrameInstInit (frame);    fm->area = (char *) area;    fm->idx = 0;    fm->byte_swap = byte_swap;    fm->total_size = NO_VALUE;}void FrameMgrFree (FrameMgr fm){    FrameInstFree (fm->fi);    Xfree (fm);}FmStatus FrameMgrSetBuffer (FrameMgr fm, void* area){    if (fm->area)        return FmBufExist;    fm->area = (char *) area;    return FmSuccess;}FmStatus _FrameMgrPutToken (FrameMgr fm, void *data, int data_size){    XimFrameType type;    XimFrameTypeInfoRec info;    if (fm->total_size != NO_VALUE  &&  fm->idx >= fm->total_size)        return FmNoMoreData;    /*endif*/        type = FrameInstGetNextType(fm->fi, &info);    if (type & COUNTER_MASK)    {        unsigned long input_length;        if (info.counter.is_byte_len)        {            if ((input_length = IterGetTotalSize (info.counter.iter))                    == NO_VALUE)            {                return FmCannotCalc;            }            /*endif*/        }        else        {            if ((input_length = IterGetIterCount (info.counter.iter))                == NO_VALUE)            {                return FmCannotCalc;            }            /*endif*/        }        /*endif*/        switch (type)        {        case COUNTER_BIT8:            *(CARD8 *) (fm->area + fm->idx) = input_length;            fm->idx++;            break;                case COUNTER_BIT16:            *(CARD16 *) (fm->area + fm->idx) = Swap16 (fm, input_length);            fm->idx += 2;            break;                    case COUNTER_BIT32:            *(CARD32 *) (fm->area + fm->idx) = Swap32 (fm, input_length);            fm->idx += 4;            break;#if defined(_NEED64BIT)        case COUNTER_BIT64:            *(CARD64 *) (fm->area + fm->idx) = Swap64 (fm, input_length);            fm->idx += 8;            break;#endif        }        /*endswitch*/        _FrameMgrPutToken(fm, data, data_size);        return FmSuccess;    }    /*endif*/    switch (type)    {    case BIT8:        if (data_size == sizeof (unsigned char))        {            unsigned long num = *(unsigned char *) data;            *(CARD8 *) (fm->area + fm->idx) = num;        }        else if (data_size == sizeof (unsigned short))        {            unsigned long num = *(unsigned short *) data;            *(CARD8 *) (fm->area + fm->idx) = num;        }        else if (data_size == sizeof (unsigned int))        {            unsigned long num = *(unsigned int *) data;            *(CARD8 *) (fm->area + fm->idx) = num;        }        else if (data_size == sizeof (unsigned long))        {            unsigned long num = *(unsigned long *) data;            *(CARD8 *) (fm->area + fm->idx) = num;        }        else        {            ; /* Should never be reached */        }        /*endif*/        fm->idx++;        return FmSuccess;    case BIT16:        if (data_size == sizeof (unsigned char))        {            unsigned long num = *(unsigned char *) data;            *(CARD16*)(fm->area + fm->idx) = Swap16 (fm, num);        }        else if (data_size == sizeof (unsigned short))        {            unsigned long num = *(unsigned short *) data;            *(CARD16 *) (fm->area + fm->idx) = Swap16 (fm, num);        }        else if (data_size == sizeof (unsigned int))        {            unsigned long num = *(unsigned int *) data;            *(CARD16 *) (fm->area + fm->idx) = Swap16 (fm, num);        }        else if (data_size == sizeof (unsigned long))        {            unsigned long num = *(unsigned long *) data;            *(CARD16 *) (fm->area + fm->idx) = Swap16 (fm, num);        }        else        {            ; /* Should never reached */        }        /*endif*/        fm->idx += 2;        return FmSuccess;    case BIT32:        if (data_size == sizeof (unsigned char))        {            unsigned long num = *(unsigned char *) data;            *(CARD32 *) (fm->area + fm->idx) = Swap32 (fm, num);        }        else if (data_size == sizeof (unsigned short))        {            unsigned long num = *(unsigned short *) data;            *(CARD32 *) (fm->area + fm->idx) = Swap32 (fm, num);        }        else if (data_size == sizeof (unsigned int))        {            unsigned long num = *(unsigned int *) data;            *(CARD32 *) (fm->area + fm->idx) = Swap32 (fm, num);        }        else if (data_size == sizeof (unsigned long))        {            unsigned long num = *(unsigned long *) data;            *(CARD32 *) (fm->area + fm->idx) = Swap32 (fm, num);        }        else        {            ; /* Should never reached */        }        /*endif*/        fm->idx += 4;        return FmSuccess;#if defined(_NEED64BIT)    case BIT64:        if (data_size == sizeof (unsigned char))        {            unsigned long num = *(unsigned char *) data;            *(CARD64 *) (fm->area + fm->idx) = Swap64 (fm, num);        }        else if (data_size == sizeof (unsigned short))        {            unsigned long num = *(unsigned short *) data;            *(CARD64 *) (fm->area + fm->idx) = Swap64 (fm, num);        }        else if (data_size == sizeof (unsigned int))        {            unsigned long num = *(unsigned int *) data;            *(CARD64 *) (fm->area + fm->idx) = Swap64 (fm, num);        }        else if (data_size == sizeof (unsigned long))        {            unsigned long num = *(unsigned long *) data;            *(CARD64 *) (fm->area + fm->idx) = Swap64 (fm, num);        }        else        {            ; /* Should never reached */        }        /*endif*/        fm->idx += 4;        return FmSuccess;#endif    case BARRAY:        if (info.num == NO_VALUE)            return FmInvalidCall;        /*endif*/        if (info.num > 0)        {            bcopy (*(char **) data, fm->area + fm->idx, info.num);            fm->idx += info.num;        }        /*endif*/        return FmSuccess;    case PADDING:        if (info.num == NO_VALUE)            return FmInvalidCall;        /*endif*/        fm->idx += info.num;        return _FrameMgrPutToken(fm, data, data_size);    case ITER:        return FmInvalidCall;            case EOL:        return FmEOD;    }    /*endswitch*/    return (FmStatus) NULL;  /* Should never be reached */}FmStatus _FrameMgrGetToken (FrameMgr fm , void* data, int data_size){    XimFrameType type;    static XimFrameTypeInfoRec info;  /* memory */    FrameIter fitr;    if (fm->total_size != NO_VALUE  &&  fm->idx >= fm->total_size)        return FmNoMoreData;    /*endif*/        type = FrameInstGetNextType(fm->fi, &info);    if (type & COUNTER_MASK)    {        int end;        FrameIter client_data;        type &= ~COUNTER_MASK;        switch (type)        {        case BIT8:            end = *(CARD8 *) (fm->area + fm->idx);            break;                case BIT16:            end = Swap16 (fm, *(CARD16 *) (fm->area + fm->idx));            break;                case BIT32:            end = Swap32 (fm, *(CARD32 *) (fm->area + fm->idx));            break;#if defined(_NEED64BIT)                case BIT64:            end = Swap64 (fm, *(CARD64 *) (fm->area + fm->idx));            break;#endif        }        /*endswitch*/                if ((client_data = _FrameMgrAppendIter (fm, info.counter.iter, end)))        {            IterSetStarter (info.counter.iter);            IterSetStartWatch (info.counter.iter,                               _IterStartWatch,                               (void *) client_data);        }        /*endif*/    }    /*endif*/    type &= ~COUNTER_MASK;    switch (type)    {    case BIT8:        if (data_size == sizeof (unsigned char))        {            *(unsigned char*) data = *(CARD8 *) (fm->area + fm->idx);        }        else if (data_size == sizeof (unsigned short))        {            *(unsigned short *) data = *(CARD8 *) (fm->area + fm->idx);        }        else if (data_size == sizeof (unsigned int))        {            *(unsigned int *) data = *(CARD8 *) (fm->area + fm->idx);        }        else if (data_size == sizeof (unsigned long))        {            *(unsigned long *) data = *(CARD8 *) (fm->area + fm->idx);        }        else        {            ; /* Should never reached */        }        /*endif*/        fm->idx++;        if ((fitr = _FrameIterCounterIncr (fm->iters, 1/*BIT8*/)))            _FrameMgrRemoveIter (fm, fitr);        /*endif*/        return FmSuccess;    case BIT16:        if (data_size == sizeof (unsigned char))        {            *(unsigned char *) data =                Swap16 (fm, *(CARD16 *) (fm->area + fm->idx));        }        else if (data_size == sizeof (unsigned short))        {            *(unsigned short *) data =                Swap16 (fm, *(CARD16 *) (fm->area + fm->idx));        }        else if (data_size == sizeof (unsigned int))        {            *(unsigned int *) data =                Swap16 (fm, *(CARD16 *) (fm->area + fm->idx));        }        else if (data_size == sizeof (unsigned long))        {            *(unsigned long *) data =                Swap16 (fm, *(CARD16 *) (fm->area + fm->idx));        }        else        {            ; /* Should never reached */        }        /*endif*/        fm->idx += 2;        if ((fitr = _FrameIterCounterIncr (fm->iters, 2/*BIT16*/)))            _FrameMgrRemoveIter(fm, fitr);        /*endif*/        return FmSuccess;    case BIT32:        if (data_size == sizeof (unsigned char))        {            *(unsigned char *) data =                Swap32 (fm, *(CARD32 *) (fm->area + fm->idx));        }        else if (data_size == sizeof (unsigned short))        {            *(unsigned short *) data =                Swap32 (fm, *(CARD32 *) (fm->area + fm->idx));        }        else if (data_size == sizeof (unsigned int))        {            *(unsigned int *) data =                Swap32 (fm, *(CARD32 *) (fm->area + fm->idx));

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费人成精品欧美精品| 成人18视频在线播放| 高清成人免费视频| 欧美日韩性生活| 国产精品久久久久天堂| 免费黄网站欧美| 欧日韩精品视频| 国产精品―色哟哟| 久久99国内精品| 欧美精品乱人伦久久久久久| 中文字幕综合网| 懂色av中文一区二区三区| 欧美一级理论性理论a| 亚洲综合在线观看视频| 国产成人精品aa毛片| 精品国产第一区二区三区观看体验| 亚洲第一成人在线| 色妹子一区二区| 亚洲欧美自拍偷拍| 成人av手机在线观看| 久久久久国产精品厨房| 久久精品国产99国产精品| 在线综合视频播放| 午夜av区久久| 91精品国产综合久久福利| 亚洲v精品v日韩v欧美v专区| 欧美在线|欧美| 亚洲永久免费av| 在线一区二区视频| 亚洲精品成人a在线观看| 91亚洲国产成人精品一区二区三| 亚洲国产成人自拍| 99久久综合色| 成人免费在线视频观看| 成av人片一区二区| 综合色天天鬼久久鬼色| 97久久精品人人做人人爽50路| 日本一区二区视频在线| 99麻豆久久久国产精品免费优播| 中文字幕一区二区三| 成人综合在线网站| 国产精品久久久久久久久久免费看 | 精品国产免费久久| 精品一区二区三区在线观看 | 欧美日韩在线三区| 偷拍日韩校园综合在线| 日韩美女在线视频| 国产丶欧美丶日本不卡视频| 国产精品色眯眯| 欧美亚洲国产一区二区三区| 日本美女一区二区三区| 久久这里只精品最新地址| jizzjizzjizz欧美| 亚洲v中文字幕| 精品精品欲导航| 不卡影院免费观看| 亚洲国产精品自拍| 26uuu国产日韩综合| 成人激情动漫在线观看| 亚洲成在人线免费| 久久精品人人爽人人爽| av一区二区三区黑人| 日韩精品免费专区| 亚洲国产精品传媒在线观看| 色婷婷精品久久二区二区蜜臂av| 日韩精品电影在线观看| 国产精品久99| 日韩亚洲欧美在线观看| av影院午夜一区| 热久久久久久久| 亚洲欧美一区二区三区极速播放| 在线成人午夜影院| 99久久婷婷国产| 国内久久婷婷综合| 亚洲高清免费一级二级三级| 久久色.com| 91精品国产日韩91久久久久久| 大陆成人av片| 国产自产高清不卡| 亚洲成a人片综合在线| 国产精品妹子av| 精品国产在天天线2019| 欧美视频一区在线| 成人av免费观看| 国产麻豆精品一区二区| 肉丝袜脚交视频一区二区| 一区精品在线播放| 337p粉嫩大胆色噜噜噜噜亚洲| 欧美亚洲尤物久久| 成人av综合在线| 国产精品亚洲专一区二区三区 | 欧美一区三区四区| 91毛片在线观看| 国产精品69毛片高清亚洲| 亚洲第四色夜色| 一区二区欧美国产| 综合久久综合久久| 国产精品久久99| 中文字幕一区二区三区在线播放| 精品国产一区二区三区久久久蜜月 | 亚洲一级不卡视频| 综合自拍亚洲综合图不卡区| 久久综合中文字幕| 欧美精品乱码久久久久久| 日本久久精品电影| 91在线精品一区二区三区| 成人免费视频视频| 国产成人精品影视| 国产精品一区二区免费不卡 | 视频一区二区不卡| 图片区小说区区亚洲影院| 亚洲高清视频中文字幕| 亚洲综合一区二区精品导航| 亚洲激情成人在线| 亚洲午夜私人影院| 亚洲成人免费在线观看| 午夜日韩在线电影| 秋霞av亚洲一区二区三| 久久国产成人午夜av影院| 美腿丝袜在线亚洲一区 | 97久久超碰国产精品| 91在线一区二区| 欧美三区在线视频| 欧美一级在线免费| 精品黑人一区二区三区久久| 久久久亚洲精华液精华液精华液| 久久理论电影网| 国产精品丝袜在线| 亚洲综合激情另类小说区| 亚洲成人精品一区二区| 免费视频一区二区| 高清shemale亚洲人妖| 色综合天天综合网国产成人综合天| 99久久99久久综合| 欧美系列一区二区| 欧美一区二区视频在线观看2020 | 成人久久18免费网站麻豆| 国产91精品久久久久久久网曝门| 99天天综合性| 欧美精品在线一区二区| 久久综合五月天婷婷伊人| 亚洲色图19p| 亚洲成人精品在线观看| 国产精品亚洲专一区二区三区| av一区二区三区四区| 正在播放亚洲一区| 日本一区二区免费在线观看视频 | 成人av中文字幕| 欧洲在线/亚洲| 欧美va亚洲va| 亚洲美女视频在线| 精品在线一区二区| 99久久精品国产一区| 欧美一区二区视频在线观看2020| 国产人妖乱国产精品人妖| 亚洲韩国精品一区| 国产成人亚洲精品青草天美| 欧美午夜精品一区二区蜜桃| 精品国产一区二区精华| 一区二区三区在线免费| 国产福利一区二区| 日韩一二三四区| 尤物av一区二区| 成人毛片在线观看| 精品国产乱子伦一区| 香蕉久久夜色精品国产使用方法| 国产精品911| 日韩欧美成人激情| 夜色激情一区二区| 99精品桃花视频在线观看| 精品福利一二区| 五月婷婷久久综合| 在线视频国产一区| |精品福利一区二区三区| 国产精品夜夜嗨| 精品国产亚洲在线| 麻豆精品国产传媒mv男同 | 欧美一区二区女人| 亚洲宅男天堂在线观看无病毒| 国产成人av资源| 久久久久久9999| 狠狠色狠狠色综合日日91app| 欧美日韩精品一区二区在线播放 | 视频一区免费在线观看| 一本一道综合狠狠老| 国产精品嫩草99a| 国产成人在线视频网址| 久久午夜羞羞影院免费观看| 日韩电影在线观看电影| 在线视频国内一区二区| 中文字幕字幕中文在线中不卡视频| 国产馆精品极品| 国产午夜精品福利| 国产成人免费网站| 国产日本欧美一区二区| 国产黑丝在线一区二区三区| 精品国产91洋老外米糕| 经典三级一区二区| 日本一区二区视频在线观看| 国产成人三级在线观看|