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

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

?? unicode.h

?? ReactOS是一些高手根據Windows XP的內核編寫出的類XP。內核實現機理和API函數調用幾乎相同。甚至可以兼容XP的程序。喜歡研究系統內核的人可以看一看。
?? H
字號:
/*
 * Wine internal Unicode definitions
 *
 * Copyright 2000 Alexandre Julliard
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

#ifndef __WINE_UNICODE_H
#define __WINE_UNICODE_H

#include <stdarg.h>

#include <windef.h>
#include <winbase.h>
#include <winnls.h>

#ifndef WINE_UNICODE_API
#define WINE_UNICODE_API DECLSPEC_IMPORT
#endif

/* code page info common to SBCS and DBCS */
struct cp_info
{
    unsigned int          codepage;          /* codepage id */
    unsigned int          char_size;         /* char size (1 or 2 bytes) */
    WCHAR                 def_char;          /* default char value (can be double-byte) */
    WCHAR                 def_unicode_char;  /* default Unicode char value */
    const char           *name;              /* code page name */
};

struct sbcs_table
{
    struct cp_info        info;
    const WCHAR          *cp2uni;            /* code page -> Unicode map */
    const unsigned char  *uni2cp_low;        /* Unicode -> code page map */
    const unsigned short *uni2cp_high;
};

struct dbcs_table
{
    struct cp_info        info;
    const WCHAR          *cp2uni;            /* code page -> Unicode map */
    const unsigned char  *cp2uni_leadbytes;
    const unsigned short *uni2cp_low;        /* Unicode -> code page map */
    const unsigned short *uni2cp_high;
    unsigned char         lead_bytes[12];    /* lead bytes ranges */
};

union cptable
{
    struct cp_info    info;
    struct sbcs_table sbcs;
    struct dbcs_table dbcs;
};

extern const union cptable *wine_cp_get_table( unsigned int codepage );
extern const union cptable *wine_cp_enum_table( unsigned int index );

extern int wine_cp_mbstowcs( const union cptable *table, int flags,
                             const char *src, int srclen,
                             WCHAR *dst, int dstlen );
extern int wine_cp_wcstombs( const union cptable *table, int flags,
                             const WCHAR *src, int srclen,
                             char *dst, int dstlen, const char *defchar, int *used );
extern int wine_cpsymbol_mbstowcs( const char *src, int srclen, WCHAR *dst, int dstlen );
extern int wine_cpsymbol_wcstombs( const WCHAR *src, int srclen, char *dst, int dstlen );
extern int wine_utf8_mbstowcs( int flags, const char *src, int srclen, WCHAR *dst, int dstlen );
extern int wine_utf8_wcstombs( const WCHAR *src, int srclen, char *dst, int dstlen );

extern int wine_compare_string( int flags, const WCHAR *str1, int len1, const WCHAR *str2, int len2 );
extern int wine_get_sortkey( int flags, const WCHAR *src, int srclen, char *dst, int dstlen );
extern int wine_fold_string( int flags, const WCHAR *src, int srclen , WCHAR *dst, int dstlen );

extern int strcmpiW( const WCHAR *str1, const WCHAR *str2 );
extern int strncmpiW( const WCHAR *str1, const WCHAR *str2, int n );
extern int memicmpW( const WCHAR *str1, const WCHAR *str2, int n );
extern WCHAR *strstrW( const WCHAR *str, const WCHAR *sub );
extern long int strtolW( const WCHAR *nptr, WCHAR **endptr, int base );
extern unsigned long int strtoulW( const WCHAR *nptr, WCHAR **endptr, int base );
extern int sprintfW( WCHAR *str, const WCHAR *format, ... );
extern int snprintfW( WCHAR *str, size_t len, const WCHAR *format, ... );
extern int vsprintfW( WCHAR *str, const WCHAR *format, va_list valist );
extern int vsnprintfW( WCHAR *str, size_t len, const WCHAR *format, va_list valist );

extern inline int wine_is_dbcs_leadbyte( const union cptable *table, unsigned char ch )
{
    return (table->info.char_size == 2) && (table->dbcs.cp2uni_leadbytes[ch]);
}

extern inline WCHAR tolowerW( WCHAR ch )
{
    extern WINE_UNICODE_API const WCHAR wine_casemap_lower[];
    return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)];
}

extern inline WCHAR toupperW( WCHAR ch )
{
    extern WINE_UNICODE_API const WCHAR wine_casemap_upper[];
    return ch + wine_casemap_upper[wine_casemap_upper[ch >> 8] + (ch & 0xff)];
}

/* the character type contains the C1_* flags in the low 12 bits */
/* and the C2_* type in the high 4 bits */
extern inline unsigned short get_char_typeW( WCHAR ch )
{
    extern WINE_UNICODE_API const unsigned short wine_wctype_table[];
    return wine_wctype_table[wine_wctype_table[ch >> 8] + (ch & 0xff)];
}

extern inline int iscntrlW( WCHAR wc )
{
    return get_char_typeW(wc) & C1_CNTRL;
}

extern inline int ispunctW( WCHAR wc )
{
    return get_char_typeW(wc) & C1_PUNCT;
}

extern inline int isspaceW( WCHAR wc )
{
    return get_char_typeW(wc) & C1_SPACE;
}

extern inline int isdigitW( WCHAR wc )
{
    return get_char_typeW(wc) & C1_DIGIT;
}

extern inline int isxdigitW( WCHAR wc )
{
    return get_char_typeW(wc) & C1_XDIGIT;
}

extern inline int islowerW( WCHAR wc )
{
    return get_char_typeW(wc) & C1_LOWER;
}

extern inline int isupperW( WCHAR wc )
{
    return get_char_typeW(wc) & C1_UPPER;
}

extern inline int isalnumW( WCHAR wc )
{
    return get_char_typeW(wc) & (C1_ALPHA|C1_DIGIT|C1_LOWER|C1_UPPER);
}

extern inline int isalphaW( WCHAR wc )
{
    return get_char_typeW(wc) & (C1_ALPHA|C1_LOWER|C1_UPPER);
}

extern inline int isgraphW( WCHAR wc )
{
    return get_char_typeW(wc) & (C1_ALPHA|C1_PUNCT|C1_DIGIT|C1_LOWER|C1_UPPER);
}

extern inline int isprintW( WCHAR wc )
{
    return get_char_typeW(wc) & (C1_ALPHA|C1_BLANK|C1_PUNCT|C1_DIGIT|C1_LOWER|C1_UPPER);
}

/* some useful string manipulation routines */

extern inline unsigned int strlenW( const WCHAR *str )
{
    const WCHAR *s = str;
    while (*s) s++;
    return s - str;
}

extern inline WCHAR *strcpyW( WCHAR *dst, const WCHAR *src )
{
    WCHAR *p = dst;
    while ((*p++ = *src++));
    return dst;
}

/* strncpy doesn't do what you think, don't use it */
#define strncpyW(d,s,n) error do_not_use_strncpyW_use_lstrcpynW_or_memcpy_instead

extern inline int strcmpW( const WCHAR *str1, const WCHAR *str2 )
{
    while (*str1 && (*str1 == *str2)) { str1++; str2++; }
    return *str1 - *str2;
}

extern inline int strncmpW( const WCHAR *str1, const WCHAR *str2, int n )
{
    if (n <= 0) return 0;
    while ((--n > 0) && *str1 && (*str1 == *str2)) { str1++; str2++; }
    return *str1 - *str2;
}

extern inline WCHAR *strcatW( WCHAR *dst, const WCHAR *src )
{
    strcpyW( dst + strlenW(dst), src );
    return dst;
}

extern inline WCHAR *strchrW( const WCHAR *str, WCHAR ch )
{
    do { if (*str == ch) return (WCHAR *)str; } while (*str++);
    return NULL;
}

extern inline WCHAR *strrchrW( const WCHAR *str, WCHAR ch )
{
    WCHAR *ret = NULL;
    do { if (*str == ch) ret = (WCHAR *)str; } while (*str++);
    return ret;
}

extern inline WCHAR *strpbrkW( const WCHAR *str, const WCHAR *accept )
{
    for ( ; *str; str++) if (strchrW( accept, *str )) return (WCHAR *)str;
    return NULL;
}

extern inline size_t strspnW( const WCHAR *str, const WCHAR *accept )
{
    const WCHAR *ptr;
    for (ptr = str; *ptr; ptr++) if (!strchrW( accept, *ptr )) break;
    return ptr - str;
}

extern inline size_t strcspnW( const WCHAR *str, const WCHAR *reject )
{
    const WCHAR *ptr;
    for (ptr = str; *ptr; ptr++) if (strchrW( reject, *ptr )) break;
    return ptr - str;
}

extern inline WCHAR *strlwrW( WCHAR *str )
{
    WCHAR *ret = str;
    while ((*str = tolowerW(*str))) str++;
    return ret;
}

extern inline WCHAR *struprW( WCHAR *str )
{
    WCHAR *ret = str;
    while ((*str = toupperW(*str))) str++;
    return ret;
}

extern inline WCHAR *memchrW( const WCHAR *ptr, WCHAR ch, size_t n )
{
    const WCHAR *end;
    for (end = ptr + n; ptr < end; ptr++) if (*ptr == ch) return (WCHAR *)ptr;
    return NULL;
}

extern inline WCHAR *memrchrW( const WCHAR *ptr, WCHAR ch, size_t n )
{
    const WCHAR *end, *ret = NULL;
    for (end = ptr + n; ptr < end; ptr++) if (*ptr == ch) ret = ptr;
    return (WCHAR *)ret;
}

extern inline long int atolW( const WCHAR *str )
{
    return strtolW( str, (WCHAR **)0, 10 );
}

extern inline int atoiW( const WCHAR *str )
{
    return (int)atolW( str );
}

#endif  /* __WINE_UNICODE_H */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产91精品久久久久久久网曝门 | 日韩黄色小视频| 青青草国产成人av片免费| 不卡av在线网| 日韩一级片网站| 麻豆成人综合网| 99精品欧美一区| 26uuu另类欧美亚洲曰本| 亚洲狠狠丁香婷婷综合久久久| 美女爽到高潮91| 欧美亚洲综合另类| 亚洲同性gay激情无套| 韩国av一区二区三区在线观看| 91啪九色porn原创视频在线观看| 欧美www视频| 午夜久久久影院| 欧美亚洲一区二区在线| 中文字幕亚洲精品在线观看| 国产成人精品影视| 欧美精品一区二区三区一线天视频| 五月婷婷久久综合| 在线观看视频一区二区欧美日韩| 中文字幕精品在线不卡| 国产一区二区三区视频在线播放| 这里只有精品视频在线观看| 亚洲综合在线第一页| 99re成人在线| 亚洲品质自拍视频| 成人小视频免费观看| 国产视频911| 国产成人精品一区二| 久久精品视频在线免费观看| 麻豆91在线播放| 欧美变态tickle挠乳网站| 污片在线观看一区二区| 欧美不卡一区二区三区四区| 热久久免费视频| 日韩一区二区三区四区| 日本成人在线视频网站| 欧美一区二区三区免费| 日韩高清在线不卡| 精品国产区一区| 国产高清一区日本| 中文字幕在线播放不卡一区| 99国产精品久久久久| 亚洲人成7777| 精品1区2区3区| 免费观看91视频大全| 欧美成人精品1314www| 国内外成人在线| 亚洲欧美自拍偷拍色图| 欧美性一区二区| 日本va欧美va精品| 国产日韩欧美综合一区| 91麻豆免费看片| 婷婷综合在线观看| 国产亚洲欧美日韩在线一区| 成人h动漫精品一区二| 一区二区在线观看免费 | 成人自拍视频在线| 国产精品电影院| 欧美色综合网站| 韩国视频一区二区| 亚洲三级电影网站| 2023国产一二三区日本精品2022| 波多野结衣91| 亚洲成人自拍偷拍| 国产欧美综合在线观看第十页 | 激情文学综合插| 亚洲视频在线一区| 日韩视频在线你懂得| 成人免费毛片app| 日本aⅴ精品一区二区三区| 久久九九久久九九| 欧美日韩一区二区三区在线| 韩国三级在线一区| 亚洲自拍偷拍网站| www欧美成人18+| 欧美中文字幕一区二区三区亚洲| 韩国视频一区二区| 性久久久久久久久久久久| 久久精品欧美一区二区三区不卡 | 欧美高清dvd| www.成人网.com| 精品一区二区三区香蕉蜜桃| 18成人在线观看| 精品日韩一区二区三区 | 99re视频这里只有精品| 精品一区中文字幕| 亚洲永久免费av| 国产精品久久久久久久久晋中 | 日本不卡在线视频| 亚洲人快播电影网| 中文字幕不卡的av| 精品sm捆绑视频| 日韩一区二区三区电影| 一本一道综合狠狠老| 丁香激情综合五月| 国产麻豆精品在线| 免费不卡在线视频| 日产欧产美韩系列久久99| 悠悠色在线精品| 亚洲视频中文字幕| 中文字幕中文在线不卡住| 久久久久国产一区二区三区四区| 日韩欧美综合在线| 日韩欧美中文一区| 欧美精选在线播放| 欧美日韩国产精选| 欧美系列在线观看| 欧美色区777第一页| 在线观看三级视频欧美| 色欧美日韩亚洲| 在线观看欧美精品| 欧美综合一区二区| 欧美日韩精品三区| 88在线观看91蜜桃国自产| 在线成人午夜影院| 欧美一区2区视频在线观看| 91精品国产综合久久蜜臀| 欧美丰满一区二区免费视频| 欧美军同video69gay| 欧美视频在线播放| 91精品国产综合久久精品| 欧美日韩一区小说| 欧美精品九九99久久| 国产精品成人网| 亚洲色图在线看| 亚洲黄色av一区| 爽好久久久欧美精品| 免费在线看成人av| 国产成人精品影视| 91麻豆精品在线观看| 欧美裸体bbwbbwbbw| 欧美老人xxxx18| 精品国产不卡一区二区三区| 国产欧美精品区一区二区三区 | 欧美不卡在线视频| 国产欧美一区二区三区沐欲| 亚洲欧美视频在线观看视频| 亚洲成人一区二区在线观看| 美女视频免费一区| av电影在线观看完整版一区二区 | 波多野结衣在线一区| 在线一区二区观看| 精品精品国产高清a毛片牛牛| 精品国产亚洲在线| 中文字幕日韩av资源站| 午夜精品久久久久久久久久久 | 亚洲综合一区二区三区| 日韩高清一区在线| 成人高清视频在线观看| 欧美日韩激情在线| 国产日韩精品一区二区三区 | 亚洲欧美一区二区在线观看| 亚洲综合色婷婷| 丝袜亚洲另类欧美综合| 国产激情偷乱视频一区二区三区| 色哟哟亚洲精品| 久久综合av免费| 亚洲成人黄色小说| 不卡在线观看av| 精品久久久久一区二区国产| 一区二区三区在线视频播放| 天天综合网 天天综合色| 岛国精品在线播放| 日韩精品影音先锋| 亚洲欧洲另类国产综合| 精品一区二区三区香蕉蜜桃| 在线视频国产一区| 国产精品高清亚洲| 精品一区二区精品| 欧美日韩精品一区视频| 中文字幕一区视频| 美国av一区二区| 欧美日韩大陆一区二区| 1024亚洲合集| 成人国产免费视频| 精品国产91洋老外米糕| 偷窥少妇高潮呻吟av久久免费| av亚洲精华国产精华精华| 久久午夜羞羞影院免费观看| 天天射综合影视| 欧美视频三区在线播放| 亚洲欧美成aⅴ人在线观看| 国产91清纯白嫩初高中在线观看| 日韩一二三四区| 天堂在线一区二区| 欧美视频中文字幕| 亚洲一二三区在线观看| 色婷婷亚洲一区二区三区| 国产欧美日韩麻豆91| 色综合天天狠狠| 中文字幕一区二区三区乱码在线| 狠狠色2019综合网| 久久影音资源网| 国产高清在线精品| 国产女人aaa级久久久级| 国产成人aaa| 国产精品色噜噜|