Hex Artifact Content Вы: nobody
Вход

Artifact b9f68ba52ef23d4d32a2d7fba09c0e0b843d24aa:


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                                   .....