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

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

?? unicode.h

?? 這是一個開放源代碼的與WINNT/WIN2K/WIN2003兼容的操作系統
?? 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一区二区三区免费野_久草精品视频
国产激情一区二区三区| 亚洲色图欧美激情| 色综合天天综合网国产成人综合天| 欧美日韩一区二区三区在线看| 成人ar影院免费观看视频| 亚洲国产日韩a在线播放性色| 天堂av在线一区| 成人免费视频视频| 欧美一二三四区在线| 国产精品国产三级国产有无不卡| 日本午夜精品一区二区三区电影| 99久久国产综合精品麻豆| 精品国产乱码久久久久久久久 | 国产亚洲一区字幕| 午夜精品久久久久久久99水蜜桃 | 一本色道亚洲精品aⅴ| 欧美一区二区久久| 亚洲国产精品久久人人爱蜜臀 | 亚洲成人动漫av| 91网上在线视频| 中文字幕精品一区二区三区精品| 日韩国产欧美一区二区三区| 日本韩国一区二区| 中文字幕成人av| 国产精品一品二品| 日韩欧美一级特黄在线播放| 亚洲丶国产丶欧美一区二区三区| www.日韩在线| 中文字幕高清一区| 国产麻豆精品theporn| 欧美大片日本大片免费观看| 日韩极品在线观看| 欧美影院一区二区| 亚洲免费在线视频| 91色婷婷久久久久合中文| 中文字幕精品三区| 成人高清视频在线| 精品日韩一区二区三区| 理论电影国产精品| 久久一留热品黄| 高清成人免费视频| 国产精品私人影院| 99这里都是精品| 亚洲国产精品av| 色综合天天天天做夜夜夜夜做| 国产精品免费免费| 欧美丰满美乳xxx高潮www| 亚洲激情欧美激情| 久久久久九九视频| 欧美日韩一二三区| 精品一区二区免费视频| 国产亚洲美州欧州综合国| 日韩一区二区精品| 精品国产免费一区二区三区香蕉| 欧美另类久久久品| 91精品婷婷国产综合久久性色 | 日本福利一区二区| 国产精品对白交换视频| 国产福利一区在线观看| 国产精品亚洲综合一区在线观看| 从欧美一区二区三区| jiyouzz国产精品久久| 成人性生交大片免费看在线播放| 91美女福利视频| 91精品国产色综合久久| 成人综合在线网站| 欧美老人xxxx18| 精品精品国产高清a毛片牛牛| 久久爱www久久做| 国产精品久久久久aaaa樱花| 在线观看www91| 美女在线一区二区| 国产精品国产自产拍高清av| 色狠狠色狠狠综合| 美女尤物国产一区| 亚洲美腿欧美偷拍| 欧美精品一区二区高清在线观看 | 中文字幕亚洲区| 欧美高清一级片在线| youjizz久久| 久草精品在线观看| 亚洲综合色视频| 国产日韩精品视频一区| 欧美色图片你懂的| hitomi一区二区三区精品| 日本最新不卡在线| 中文字幕综合网| 久久这里都是精品| 在线观看亚洲精品| 成人久久视频在线观看| 精品一区二区三区香蕉蜜桃| 一区二区三区四区乱视频| 欧美国产成人在线| 欧美精品一区男女天堂| 欧美日韩国产一区| 色婷婷久久一区二区三区麻豆| 蜜桃视频一区二区三区| 亚洲最大的成人av| 国产精品蜜臀在线观看| 日韩欧美中文字幕精品| 欧美亚洲综合另类| 91福利在线播放| av午夜精品一区二区三区| 97久久精品人人澡人人爽| 国产色综合久久| 99re这里都是精品| 一区二区在线看| 日韩欧美第一区| 一区在线中文字幕| 91在线播放网址| 亚洲综合精品自拍| 精品乱人伦一区二区三区| 日韩一区精品字幕| 国产三级欧美三级日产三级99 | 精品美女一区二区| 国产精品久久久一区麻豆最新章节| 在线视频你懂得一区| 91香蕉视频mp4| 成人av在线观| 成人一级片在线观看| 粉嫩av一区二区三区粉嫩| 久久精工是国产品牌吗| 日韩精品一级中文字幕精品视频免费观看 | 国产精品久久久久久久久久免费看| 欧美日韩美女一区二区| 欧美一级一级性生活免费录像| 精品国产精品一区二区夜夜嗨| 国产丶欧美丶日本不卡视频| 亚洲电影视频在线| 粉嫩蜜臀av国产精品网站| 欧美日韩精品免费观看视频| 日韩电影免费一区| 青青草国产精品亚洲专区无| 日本成人在线电影网| 精品一区二区成人精品| 黄色日韩网站视频| 国产高清在线精品| eeuss国产一区二区三区| 91欧美一区二区| 在线综合亚洲欧美在线视频| 欧美大片在线观看| 亚洲国产经典视频| 亚洲精品高清在线| 美女视频免费一区| 成人美女在线观看| 欧美另类一区二区三区| 经典三级在线一区| 国内精品在线播放| 777xxx欧美| 国产色91在线| 玉足女爽爽91| 国内精品伊人久久久久av一坑| 美女脱光内衣内裤视频久久网站 | 极品美女销魂一区二区三区免费 | 久久成人羞羞网站| 欧美日韩免费视频| 亚洲自拍偷拍九九九| 欧美一区二区三区视频在线| 成人亚洲精品久久久久软件| 91美女在线看| 国产精品欧美一级免费| 波多野结衣一区二区三区| 99视频国产精品| 亚洲精品在线电影| 国产精品久久一级| 国产激情91久久精品导航 | 欧美日韩精品一区二区三区四区 | 国产精品久久久久国产精品日日| 99久久夜色精品国产网站| 一个色综合网站| 综合久久久久综合| 精品国产一区二区三区久久影院| 91免费在线视频观看| voyeur盗摄精品| 麻豆国产91在线播放| 亚洲精品五月天| 欧美mv和日韩mv国产网站| 91国模大尺度私拍在线视频| 国产精品一区二区不卡| 26uuu欧美日本| 欧美日韩一区在线| 国产精品影音先锋| 亚洲成人动漫在线观看| 久久电影网电视剧免费观看| 91精品国产一区二区| 国产91丝袜在线播放0| 亚洲欧美日韩中文字幕一区二区三区| 精品国产伦一区二区三区观看体验 | 97se亚洲国产综合自在线不卡| 国产成人精品亚洲午夜麻豆| 欧美综合一区二区| 亚洲精品综合在线| 欧美丰满嫩嫩电影| 美国一区二区三区在线播放| 国产午夜精品一区二区三区嫩草| 国产综合久久久久久鬼色| 精品国精品国产尤物美女| 成人免费高清视频在线观看| 国产精品久久久久久久久晋中| 欧美色手机在线观看|