亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
国产欧美一区二区精品仙草咪| 欧美主播一区二区三区美女| 精品国产免费一区二区三区四区| 亚洲成人1区2区| 欧美久久久久久久久久| 污片在线观看一区二区 | 丁香婷婷综合五月| 国产精品素人一区二区| 色综合天天性综合| 国产一区二区三区四| 久久九九久精品国产免费直播| 亚洲欧美成aⅴ人在线观看| 色婷婷av一区二区三区gif| 亚洲午夜视频在线观看| 91精品国产综合久久福利软件 | 蜜芽一区二区三区| 久久色在线视频| 色噜噜狠狠成人网p站| 日韩1区2区日韩1区2区| 国产亚洲欧洲一区高清在线观看| 99国内精品久久| 丝袜美腿亚洲综合| 国产精品色婷婷| 欧美精品自拍偷拍动漫精品| 国产成人综合网| 一区二区三区在线影院| 26uuu久久综合| 91久久香蕉国产日韩欧美9色| 三级影片在线观看欧美日韩一区二区| 26uuu色噜噜精品一区二区| 91视频在线观看免费| 免费视频最近日韩| 亚洲精品国产一区二区精华液 | 99在线热播精品免费| 亚洲成人av资源| 国产精品嫩草影院av蜜臀| 欧美精品日韩一区| 99精品欧美一区二区三区小说| 日本在线不卡视频| 亚洲免费色视频| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 亚洲免费毛片网站| 国产亚洲综合性久久久影院| 欧美性高清videossexo| 成人精品亚洲人成在线| 日韩激情中文字幕| 一区二区三区国产精品| 国产日产亚洲精品系列| 欧美一区二区三区性视频| 一本久道中文字幕精品亚洲嫩| 激情都市一区二区| 日日摸夜夜添夜夜添国产精品| 国产精品久久久久婷婷二区次| 精品999在线播放| 欧美丰满一区二区免费视频| 91福利区一区二区三区| 成人不卡免费av| 国产一区不卡精品| 久久99精品视频| 日韩成人一级片| 午夜在线成人av| 一区二区三区精密机械公司| 国产精品乱码妇女bbbb| 国产日韩一级二级三级| 2023国产精华国产精品| 欧美成人精品高清在线播放| 欧美日韩不卡一区二区| 欧美在线免费播放| 一本一道久久a久久精品| 成人91在线观看| 成人一区二区三区在线观看| 国产精品一区二区无线| 国产99久久久精品| 豆国产96在线|亚洲| 高清av一区二区| 成人h动漫精品一区二| 国产不卡视频一区| 成人福利视频网站| av亚洲精华国产精华精| 97久久精品人人做人人爽| 91网站最新网址| 91九色最新地址| 欧美精品久久久久久久多人混战 | 91麻豆6部合集magnet| www.亚洲人| 91麻豆精品在线观看| 91成人在线精品| 欧美精品vⅰdeose4hd| 日韩欧美资源站| 久久久不卡影院| 国产精品久久久久久久岛一牛影视 | 91在线丨porny丨国产| 色综合久久天天综合网| 欧美日韩在线免费视频| 91精品国产综合久久久久久久| 欧美一级精品大片| 久久久午夜电影| 亚洲欧美另类久久久精品2019| 亚洲精品免费电影| 日韩高清在线电影| 国产精品中文字幕欧美| 91影院在线观看| 91麻豆精品国产自产在线观看一区| 日韩精品一区二区三区四区| 国产欧美一区二区精品秋霞影院| 亚洲欧洲av色图| 国产麻豆视频一区二区| 成人福利视频在线| 欧美日韩第一区日日骚| 精品久久久久久久一区二区蜜臀| 欧美激情在线免费观看| 亚洲一区二区三区四区五区中文| 捆绑变态av一区二区三区| 成人国产一区二区三区精品| 欧美午夜寂寞影院| 国产午夜精品一区二区三区嫩草| 亚洲三级小视频| 久久影视一区二区| 亚洲人妖av一区二区| 日韩avvvv在线播放| heyzo一本久久综合| 日韩午夜精品电影| 依依成人综合视频| 国产成人三级在线观看| 欧美精品aⅴ在线视频| 中文字幕亚洲欧美在线不卡| 日韩成人一区二区| 91蝌蚪porny| 久久久电影一区二区三区| 午夜精品福利久久久| 成人性色生活片免费看爆迷你毛片| 欧美日韩三级一区| 中文字幕字幕中文在线中不卡视频| 麻豆精品在线观看| 欧美日韩性生活| 亚洲欧美日本在线| 国产一区二区在线看| 91精品欧美久久久久久动漫| 国产精品白丝在线| 精品亚洲国产成人av制服丝袜| 在线精品视频免费观看| 国产精品沙发午睡系列990531| 久久精品国产成人一区二区三区| 色婷婷久久久久swag精品| 国产精品免费视频观看| 黄色成人免费在线| 91精品国产综合久久精品app | 亚洲蜜臀av乱码久久精品蜜桃| 国产一区二区三区精品欧美日韩一区二区三区 | 99国产精品一区| 久久久精品免费免费| 乱一区二区av| 在线观看91精品国产麻豆| 亚洲另类在线视频| 不卡免费追剧大全电视剧网站| 欧美mv日韩mv| 日本成人在线网站| 欧美一级片免费看| 人妖欧美一区二区| 欧美一区二区三区免费视频| 亚洲国产乱码最新视频| 欧美在线一区二区| 亚洲香蕉伊在人在线观| 欧美日韩一区二区三区不卡| 一区二区三区**美女毛片| 在线观看欧美日本| 亚洲午夜羞羞片| 欧美精品一卡两卡| 日韩av电影免费观看高清完整版| 欧美精品777| 日本特黄久久久高潮| 日韩欧美高清一区| 国产麻豆欧美日韩一区| 欧美激情一区二区三区不卡| 成人深夜在线观看| 亚洲婷婷国产精品电影人久久| 91色.com| 香蕉乱码成人久久天堂爱免费| 欧美高清在线精品一区| 99精品在线免费| 亚洲一级片在线观看| 3751色影院一区二区三区| 奇米综合一区二区三区精品视频| 日韩写真欧美这视频| 极品少妇xxxx精品少妇| 国产精品免费aⅴ片在线观看| 成人白浆超碰人人人人| 亚洲一区二区三区在线播放| 555www色欧美视频| 黑人巨大精品欧美一区| 国产精品毛片久久久久久| 91性感美女视频| 日韩制服丝袜av| 国产丝袜欧美中文另类| 日本电影欧美片| 精品在线观看视频| 亚洲男人天堂av网| 日韩西西人体444www| caoporn国产一区二区| 日韩成人免费电影|