Artifact
b9f68ba52ef23d4d32a2d7fba09c0e0b843d24aa:
- File
sqlite1c/SQL_DBF/utex.h
— part of check-in
[28eecd9daa]
at
2010-02-05 08:20:55
on branch trunk
— Версия 1.0.2.3
(user:
orefkov
size: 1509)
0000: 2f 2f 20 75 74 65 78 2e 68 0d 0a 23 70 72 61 67 // utex.h..#prag
0010: 6d 61 20 6f 6e 63 65 0d 0a 2f 2f 20 dd f2 ee f2 ma once..// ....
0020: 20 f4 e0 e9 eb 20 f1 ee e4 e5 f0 e6 e8 f2 20 f3 .... ........ .
0030: f2 e8 eb e8 f2 fb 20 e4 eb ff 20 f0 e0 e1 ee f2 ...... ... .....
0040: fb 20 f1 20 55 54 46 2d 31 36 20 e8 20 55 54 46 . . UTF-16 . UTF
0050: 2d 38 20 f2 e5 ea f1 f2 ee ec 0d 0a 23 69 6e 63 -8 .........#inc
0060: 6c 75 64 65 20 3c 66 69 78 61 6c 6c 6f 63 2e 68 lude <fixalloc.h
0070: 3e 0d 0a 0d 0a 73 74 72 75 63 74 20 75 38 74 65 >....struct u8te
0080: 78 74 0d 0a 7b 0d 0a 09 73 74 61 74 69 63 20 76 xt..{...static v
0090: 6f 69 64 20 69 6e 69 74 28 29 3b 0d 0a 09 2f 2f oid init();...//
00a0: 73 74 61 74 69 63 20 43 53 74 72 69 6e 67 20 74 static CString t
00b0: 6f 55 74 66 38 28 63 6f 6e 73 74 20 43 53 74 72 oUtf8(const CStr
00c0: 69 6e 67 26 20 73 74 72 53 6f 75 72 63 65 29 3b ing& strSource);
00d0: 0d 0a 09 73 74 61 74 69 63 20 76 6f 69 64 20 74 ...static void t
00e0: 6f 55 74 66 38 28 43 53 74 72 69 6e 67 26 20 73 oUtf8(CString& s
00f0: 74 72 57 69 6e 54 65 78 74 29 0d 0a 09 7b 0d 0a trWinText)...{..
0100: 09 09 69 6e 74 20 73 6c 20 3d 20 73 74 72 57 69 ..int sl = strWi
0110: 6e 54 65 78 74 2e 47 65 74 4c 65 6e 67 74 68 28 nText.GetLength(
0120: 29 20 2a 20 33 20 2b 20 33 3b 0d 0a 09 09 63 68 ) * 3 + 3;....ch
0130: 61 72 20 62 75 66 66 65 72 5b 31 30 32 34 5d 3b ar buffer[1024];
0140: 0d 0a 09 09 63 68 61 72 20 2a 70 57 72 69 74 65 ....char *pWrite
0150: 20 3d 20 28 73 6c 20 3c 3d 20 73 69 7a 65 6f 66 = (sl <= sizeof
0160: 28 62 75 66 66 65 72 29 20 3f 20 62 75 66 66 65 (buffer) ? buffe
0170: 72 20 3a 20 6e 65 77 20 63 68 61 72 5b 73 6c 5d r : new char[sl]
0180: 29 2c 20 2a 70 53 74 61 72 74 20 3d 20 70 57 72 ), *pStart = pWr
0190: 69 74 65 3b 0d 0a 09 09 4c 50 43 53 54 52 20 70 ite;....LPCSTR p
01a0: 52 65 61 64 20 3d 20 73 74 72 57 69 6e 54 65 78 Read = strWinTex
01b0: 74 3b 0d 0a 09 09 77 68 69 6c 65 28 44 57 4f 52 t;....while(DWOR
01c0: 44 20 73 20 3d 20 73 74 61 74 69 63 5f 63 61 73 D s = static_cas
01d0: 74 3c 44 57 4f 52 44 3e 28 73 74 61 74 69 63 5f t<DWORD>(static_
01e0: 63 61 73 74 3c 42 59 54 45 3e 28 2a 70 52 65 61 cast<BYTE>(*pRea
01f0: 64 29 29 29 0d 0a 09 09 7b 0d 0a 09 09 09 69 6e d)))....{.....in
0200: 74 20 64 20 3d 20 73 20 2d 20 31 32 38 3b 0d 0a t d = s - 128;..
0210: 09 09 09 69 66 28 64 20 3e 3d 20 30 29 0d 0a 09 ...if(d >= 0)...
0220: 09 09 7b 0d 0a 09 09 09 09 44 57 4f 52 44 20 75 ..{......DWORD u
0230: 73 20 3d 20 77 31 32 35 31 32 75 5b 64 5d 3b 0d s = w12512u[d];.
0240: 0a 09 09 09 09 2a 28 28 44 57 4f 52 44 2a 29 70 .....*((DWORD*)p
0250: 57 72 69 74 65 29 20 3d 20 75 73 3b 0d 0a 09 09 Write) = us;....
0260: 09 09 70 57 72 69 74 65 2b 2b 3b 0d 0a 09 09 09 ..pWrite++;.....
0270: 09 69 66 28 75 73 20 26 20 30 78 46 46 30 30 30 .if(us & 0xFF000
0280: 30 29 0d 0a 09 09 09 09 09 70 57 72 69 74 65 2b 0).......pWrite+
0290: 2b 3b 0d 0a 09 09 09 7d 0d 0a 09 09 09 65 6c 73 +;.....}.....els
02a0: 65 0d 0a 09 09 09 09 2a 70 57 72 69 74 65 20 3d e......*pWrite =
02b0: 20 73 3b 0d 0a 09 09 09 70 57 72 69 74 65 2b 2b s;.....pWrite++
02c0: 3b 0d 0a 09 09 09 70 52 65 61 64 2b 2b 3b 0d 0a ;.....pRead++;..
02d0: 09 09 7d 0d 0a 09 09 69 6e 74 20 6e 65 77 4c 65 ..}....int newLe
02e0: 6e 20 3d 20 70 57 72 69 74 65 20 2d 20 70 53 74 n = pWrite - pSt
02f0: 61 72 74 3b 0d 0a 09 09 69 66 28 6e 65 77 4c 65 art;....if(newLe
0300: 6e 20 21 3d 20 73 74 72 57 69 6e 54 65 78 74 2e n != strWinText.
0310: 47 65 74 4c 65 6e 67 74 68 28 29 29 0d 0a 09 09 GetLength())....
0320: 09 6d 65 6d 63 70 79 28 73 74 72 57 69 6e 54 65 .memcpy(strWinTe
0330: 78 74 2e 47 65 74 42 75 66 66 65 72 53 65 74 4c xt.GetBufferSetL
0340: 65 6e 67 74 68 28 6e 65 77 4c 65 6e 29 2c 20 70 ength(newLen), p
0350: 53 74 61 72 74 2c 20 6e 65 77 4c 65 6e 29 3b 0d Start, newLen);.
0360: 0a 09 09 69 66 28 73 6c 20 3e 20 73 69 7a 65 6f ...if(sl > sizeo
0370: 66 28 62 75 66 66 65 72 29 29 0d 0a 09 09 09 64 f(buffer)).....d
0380: 65 6c 65 74 65 20 5b 5d 20 70 53 74 61 72 74 3b elete [] pStart;
0390: 0d 0a 09 7d 0d 0a 0d 0a 09 73 74 61 74 69 63 20 ...}.....static
03a0: 43 53 74 72 69 6e 67 20 66 72 6f 6d 55 74 66 38 CString fromUtf8
03b0: 28 4c 50 43 53 54 52 20 73 74 72 53 72 63 29 3b (LPCSTR strSrc);
03c0: 0d 0a 09 73 74 61 74 69 63 20 76 6f 69 64 20 66 ...static void f
03d0: 72 6f 6d 55 74 66 38 28 4c 50 43 53 54 52 20 73 romUtf8(LPCSTR s
03e0: 74 72 53 72 63 2c 20 43 53 74 72 69 6e 67 26 20 trSrc, CString&
03f0: 72 65 73 29 3b 0d 0a 09 73 74 61 74 69 63 20 69 res);...static i
0400: 6e 74 20 5f 31 43 63 6f 6c 6c 61 74 65 28 76 6f nt _1Ccollate(vo
0410: 69 64 2a 2c 20 69 6e 74 20 6c 31 2c 20 63 6f 6e id*, int l1, con
0420: 73 74 20 76 6f 69 64 2a 20 73 74 72 31 2c 20 69 st void* str1, i
0430: 6e 74 20 6c 32 2c 20 63 6f 6e 73 74 20 76 6f 69 nt l2, const voi
0440: 64 2a 20 73 74 72 32 29 3b 0d 0a 09 73 74 61 74 d* str2);...stat
0450: 69 63 20 69 6e 74 20 63 6f 6d 70 61 72 65 52 74 ic int compareRt
0460: 72 69 6d 4e 6f 43 61 73 65 28 4c 50 43 53 54 52 rimNoCase(LPCSTR
0470: 20 73 74 72 31 2c 20 4c 50 43 53 54 52 20 73 74 str1, LPCSTR st
0480: 72 32 29 3b 0d 0a 09 73 74 61 74 69 63 20 69 6e r2);...static in
0490: 74 20 63 6f 6d 70 61 72 65 52 74 72 69 6d 28 4c t compareRtrim(L
04a0: 50 43 53 54 52 20 73 74 72 31 2c 20 4c 50 43 53 PCSTR str1, LPCS
04b0: 54 52 20 73 74 72 32 29 3b 0d 0a 09 73 74 61 74 TR str2);...stat
04c0: 69 63 20 69 6e 74 20 63 6f 6d 70 61 72 65 4c 65 ic int compareLe
04d0: 6e 28 4c 50 43 53 54 52 20 73 74 72 31 2c 20 4c n(LPCSTR str1, L
04e0: 50 43 53 54 52 20 73 74 72 32 2c 20 44 57 4f 52 PCSTR str2, DWOR
04f0: 44 20 6c 65 6e 29 0d 0a 09 7b 0d 0a 09 09 72 65 D len)...{....re
0500: 74 75 72 6e 20 6d 65 6d 63 6d 70 28 73 74 72 31 turn memcmp(str1
0510: 2c 20 73 74 72 32 2c 20 6c 65 6e 29 3b 0d 0a 09 , str2, len);...
0520: 7d 0d 0a 09 73 74 61 74 69 63 20 69 6e 74 20 63 }...static int c
0530: 6f 6d 70 61 72 65 4e 6f 43 61 73 65 4c 65 6e 28 ompareNoCaseLen(
0540: 4c 50 43 53 54 52 20 73 74 72 31 2c 20 4c 50 43 LPCSTR str1, LPC
0550: 53 54 52 20 73 74 72 32 2c 20 44 57 4f 52 44 20 STR str2, DWORD
0560: 6c 65 6e 29 3b 0d 0a 09 73 74 61 74 69 63 20 76 len);...static v
0570: 6f 69 64 20 64 62 55 70 70 65 72 28 43 53 74 72 oid dbUpper(CStr
0580: 69 6e 67 26 20 73 74 72 29 3b 0d 0a 0d 0a 70 72 ing& str);....pr
0590: 69 76 61 74 65 3a 0d 0a 09 73 74 61 74 69 63 20 ivate:...static
05a0: 63 6f 6e 73 74 20 44 57 4f 52 44 20 77 31 32 35 const DWORD w125
05b0: 31 32 75 5b 31 32 38 5d 3b 0d 0a 09 73 74 61 74 12u[128];...stat
05c0: 69 63 20 43 4d 61 70 50 74 72 54 6f 50 74 72 20 ic CMapPtrToPtr
05d0: 75 77 31 32 35 31 3b 0d 0a 7d 3b 0d 0a 0d 0a 0d uw1251;..};.....
05e0: 0a 0d 0a 0d 0a .....