Artifact 9ee1f8a2b0ea71f40386388c10afd236aa7aa971:
0000: 23 69 66 6e 64 65 66 20 5f 4b 49 4c 49 42 5f 53 #ifndef _KILIB_S
0010: 54 52 49 4e 47 5f 48 5f 0d 0a 23 64 65 66 69 6e TRING_H_..#defin
0020: 65 20 5f 4b 49 4c 49 42 5f 53 54 52 49 4e 47 5f e _KILIB_STRING_
0030: 48 5f 0d 0a 23 69 6e 63 6c 75 64 65 20 22 74 79 H_..#include "ty
0040: 70 65 73 2e 68 22 0d 0a 23 69 6e 63 6c 75 64 65 pes.h"..#include
0050: 20 22 6d 65 6d 6f 72 79 2e 68 22 0d 0a 23 69 6e "memory.h"..#in
0060: 63 6c 75 64 65 20 22 6b 74 6c 61 70 74 72 2e 68 clude "ktlaptr.h
0070: 22 0d 0a 23 69 66 6e 64 65 66 20 5f 5f 63 63 64 "..#ifndef __ccd
0080: 6f 63 5f 5f 0d 0a 6e 61 6d 65 73 70 61 63 65 20 oc__..namespace
0090: 6b 69 20 7b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 ki {..#endif..#i
00a0: 66 64 65 66 20 5f 55 4e 49 43 4f 44 45 0d 0a 09 fdef _UNICODE...
00b0: 23 64 65 66 69 6e 65 20 58 54 43 48 41 52 20 63 #define XTCHAR c
00c0: 68 61 72 0d 0a 23 65 6c 73 65 0d 0a 09 23 64 65 har..#else...#de
00d0: 66 69 6e 65 20 58 54 43 48 41 52 20 77 63 68 61 fine XTCHAR wcha
00e0: 72 5f 74 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 0d r_t..#endif.....
00f0: 0a 0d 0a 2f 2f 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ...//===========
0100: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0110: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0120: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0130: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0d 0a ==============..
0140: 2f 2f 40 7b 20 40 70 6b 67 20 6b 69 2e 53 74 64 //@{ @pkg ki.Std
0150: 4c 69 62 20 2f 2f 40 7d 0d 0a 2f 2f 40 7b 0d 0a Lib //@}..//@{..
0160: 2f 2f 09 95 b6 8e 9a 97 f1 8f 88 97 9d 0d 0a 2f //............./
0170: 2f 0d 0a 2f 2f 09 82 a9 82 c8 82 e8 4d 46 43 82 /..//.......MFC.
0180: cc 43 53 74 72 69 6e 67 82 f0 83 70 83 4e 82 c1 .CString...p.N..
0190: 82 c4 82 dc 82 b7 81 42 82 c6 82 e8 82 a0 82 a6 .......B........
01a0: 82 b8 20 6f 70 65 72 61 74 6f 72 3d 20 82 c9 82 .. operator= ...
01b0: e6 82 e9 0d 0a 2f 2f 09 92 50 8f 83 91 e3 93 fc .....//..P......
01c0: 82 c9 82 cd 82 d9 82 c6 82 f1 82 c7 83 52 83 58 .............R.X
01d0: 83 67 82 aa 82 a9 82 a9 82 e7 82 c8 82 a2 82 e6 .g..............
01e0: 82 a4 82 c9 82 b5 82 dc 82 b5 82 bd 81 42 53 75 .............BSu
01f0: 62 53 74 72 28 29 82 cc 0d 0a 2f 2f 09 8e 9e 82 bStr()....//....
0200: e0 83 52 83 73 81 5b 82 b5 82 c8 82 a2 82 e6 82 ..R.s.[.........
0210: a4 82 c9 82 b5 82 e6 82 a4 82 a9 82 c6 82 e0 8e ................
0220: 76 82 c1 82 bd 82 f1 82 c5 82 b7 82 aa 81 41 82 v.............A.
0230: bb 82 b1 82 dc 82 c5 82 cd 0d 0a 2f 2f 09 97 76 ...........//..v
0240: 82 e7 82 c8 82 a2 82 be 82 eb 82 a4 82 c6 82 a2 ................
0250: 82 a4 8b 43 82 e0 82 b7 82 e9 82 cc 82 c5 81 63 ...C...........c
0260: 81 42 0d 0a 2f 2f 40 7d 0d 0a 2f 2f 3d 3d 3d 3d .B..//@}..//====
0270: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0280: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0290: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
02a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
02b0: 3d 3d 3d 3d 3d 0d 0a 0d 0a 63 6c 61 73 73 20 53 =====....class S
02c0: 74 72 69 6e 67 20 3a 20 70 75 62 6c 69 63 20 4f tring : public O
02d0: 62 6a 65 63 74 0d 0a 7b 0d 0a 70 75 62 6c 69 63 bject..{..public
02e0: 3a 0d 0a 0d 0a 09 2f 2f 40 7b 20 8b f3 95 b6 8e :.....//@{ .....
02f0: 9a 97 f1 8d ec 90 ac 20 2f 2f 40 7d 0d 0a 09 53 ....... //@}...S
0300: 74 72 69 6e 67 28 29 3b 0d 0a 09 7e 53 74 72 69 tring();...~Stri
0310: 6e 67 28 29 3b 0d 0a 0d 0a 09 2f 2f 40 7b 20 95 ng();.....//@{ .
0320: ca 82 cc 53 74 72 69 6e 67 82 cc 83 52 83 73 81 ...String...R.s.
0330: 5b 20 2f 2f 40 7d 0d 0a 09 53 74 72 69 6e 67 28 [ //@}...String(
0340: 20 63 6f 6e 73 74 20 53 74 72 69 6e 67 26 20 6f const String& o
0350: 62 6a 20 29 3b 0d 0a 0d 0a 09 2f 2f 40 7b 20 95 bj );.....//@{ .
0360: ca 82 cc 95 b6 8e 9a 94 7a 97 f1 82 cc 83 52 83 ........z.....R.
0370: 73 81 5b 20 2f 2f 40 7d 0d 0a 09 53 74 72 69 6e s.[ //@}...Strin
0380: 67 28 20 63 6f 6e 73 74 20 54 43 48 41 52 2a 20 g( const TCHAR*
0390: 73 74 72 2c 20 6c 6f 6e 67 20 73 69 7a 3d 2d 31 str, long siz=-1
03a0: 20 29 3b 0d 0a 0d 0a 09 2f 2f 40 7b 20 83 8a 83 );.....//@{ ...
03b0: 5c 81 5b 83 58 82 a9 82 e7 8d ec 90 ac 20 2f 2f \.[.X........ //
03c0: 40 7d 0d 0a 09 65 78 70 6c 69 63 69 74 20 53 74 @}...explicit St
03d0: 72 69 6e 67 28 20 55 49 4e 54 20 72 73 72 63 49 ring( UINT rsrcI
03e0: 44 20 29 3b 0d 0a 0d 0a 09 2f 2f 40 7b 20 91 e5 D );.....//@{ ..
03f0: 95 b6 8e 9a 8f ac 95 b6 8e 9a 82 f0 8b e6 95 ca ................
0400: 82 b7 82 e9 94 e4 8a 72 20 2f 2f 40 7d 0d 0a 09 .......r //@}...
0410: 62 6f 6f 6c 20 6f 70 65 72 61 74 6f 72 3d 3d 28 bool operator==(
0420: 20 4c 50 43 54 53 54 52 20 73 20 29 20 63 6f 6e LPCTSTR s ) con
0430: 73 74 3b 0d 0a 09 62 6f 6f 6c 20 6f 70 65 72 61 st;...bool opera
0440: 74 6f 72 3d 3d 28 20 63 6f 6e 73 74 20 53 74 72 tor==( const Str
0450: 69 6e 67 26 20 6f 62 6a 20 29 20 63 6f 6e 73 74 ing& obj ) const
0460: 3b 0d 0a 0d 0a 09 2f 2f 40 7b 20 91 e5 95 b6 8e ;.....//@{ .....
0470: 9a 8f ac 95 b6 8e 9a 82 f0 8b e6 95 ca 82 b5 82 ................
0480: c8 82 a2 94 e4 8a 72 20 2f 2f 40 7d 0d 0a 09 62 ......r //@}...b
0490: 6f 6f 6c 20 69 73 53 61 6d 65 28 20 4c 50 43 54 ool isSame( LPCT
04a0: 53 54 52 20 73 20 29 20 63 6f 6e 73 74 3b 0d 0a STR s ) const;..
04b0: 09 62 6f 6f 6c 20 69 73 53 61 6d 65 28 20 63 6f .bool isSame( co
04c0: 6e 73 74 20 53 74 72 69 6e 67 26 20 6f 62 6a 20 nst String& obj
04d0: 29 20 63 6f 6e 73 74 3b 0d 0a 0d 0a 09 2f 2f 40 ) const;.....//@
04e0: 7b 20 92 50 8f 83 91 e3 93 fc 20 2f 2f 40 7d 0d { .P...... //@}.
04f0: 0a 09 53 74 72 69 6e 67 26 20 6f 70 65 72 61 74 ..String& operat
0500: 6f 72 3d 28 20 63 6f 6e 73 74 20 53 74 72 69 6e or=( const Strin
0510: 67 26 20 6f 62 6a 20 29 3b 0d 0a 09 53 74 72 69 g& obj );...Stri
0520: 6e 67 26 20 6f 70 65 72 61 74 6f 72 3d 28 20 63 ng& operator=( c
0530: 6f 6e 73 74 20 54 43 48 41 52 2a 20 73 20 29 3b onst TCHAR* s );
0540: 0d 0a 09 53 74 72 69 6e 67 26 20 6f 70 65 72 61 ...String& opera
0550: 74 6f 72 3d 28 20 63 6f 6e 73 74 20 58 54 43 48 tor=( const XTCH
0560: 41 52 2a 20 73 20 29 3b 0d 0a 0d 0a 09 2f 2f 40 AR* s );.....//@
0570: 7b 20 89 c1 8e 5a 91 e3 93 fc 20 2f 2f 40 7d 0d { ...Z.... //@}.
0580: 0a 09 53 74 72 69 6e 67 26 20 6f 70 65 72 61 74 ..String& operat
0590: 6f 72 2b 3d 28 20 63 6f 6e 73 74 20 53 74 72 69 or+=( const Stri
05a0: 6e 67 26 20 6f 62 6a 20 29 3b 0d 0a 09 53 74 72 ng& obj );...Str
05b0: 69 6e 67 26 20 6f 70 65 72 61 74 6f 72 2b 3d 28 ing& operator+=(
05c0: 20 63 6f 6e 73 74 20 54 43 48 41 52 2a 20 73 20 const TCHAR* s
05d0: 29 3b 0d 0a 09 53 74 72 69 6e 67 26 20 6f 70 65 );...String& ope
05e0: 72 61 74 6f 72 2b 3d 28 20 54 43 48 41 52 20 63 rator+=( TCHAR c
05f0: 20 29 3b 0d 0a 0d 0a 09 2f 2f 40 7b 20 83 8a 83 );.....//@{ ...
0600: 5c 81 5b 83 58 83 8d 81 5b 83 68 20 2f 2f 40 7d \.[.X...[.h //@}
0610: 0d 0a 09 53 74 72 69 6e 67 26 20 4c 6f 61 64 28 ...String& Load(
0620: 20 55 49 4e 54 20 72 73 72 63 49 44 20 29 3b 0d UINT rsrcID );.
0630: 0a 0d 0a 09 2f 2f 40 7b 20 89 45 82 f0 8d ed 82 ....//@{ .E.....
0640: e9 20 2f 2f 40 7d 0d 0a 09 76 6f 69 64 20 54 72 . //@}...void Tr
0650: 69 6d 52 69 67 68 74 28 20 75 6c 6f 6e 67 20 73 imRight( ulong s
0660: 69 7a 20 29 3b 0d 0a 0d 0a 09 2f 2f 40 7b 20 69 iz );.....//@{ i
0670: 6e 74 82 a9 82 e7 95 b6 8e 9a 97 f1 82 d6 95 cf nt..............
0680: 8a b7 20 2f 2f 40 7d 0d 0a 09 53 74 72 69 6e 67 .. //@}...String
0690: 26 20 53 65 74 49 6e 74 28 20 69 6e 74 20 6e 20 & SetInt( int n
06a0: 29 3b 0d 0a 0d 0a 09 2f 2f 40 7b 20 95 b6 8e 9a );.....//@{ ....
06b0: 97 f1 82 a9 82 e7 69 6e 74 82 d6 95 cf 8a b7 20 ......int......
06c0: 2f 2f 40 7d 0d 0a 09 69 6e 74 20 47 65 74 49 6e //@}...int GetIn
06d0: 74 28 29 3b 0d 0a 0d 0a 70 75 62 6c 69 63 3a 0d t();....public:.
06e0: 0a 0d 0a 09 2f 2f 40 7b 20 95 b6 8e 9a 97 f1 83 ....//@{ .......
06f0: 6f 83 62 83 74 83 40 82 f0 95 d4 82 b7 20 2f 2f o.b.t.@...... //
0700: 40 7d 0d 0a 09 63 6f 6e 73 74 20 54 43 48 41 52 @}...const TCHAR
0710: 2a 20 63 5f 73 74 72 28 29 20 63 6f 6e 73 74 3b * c_str() const;
0720: 0d 0a 0d 0a 09 2f 2f 40 7b 20 92 b7 82 b3 20 2f .....//@{ .... /
0730: 2f 40 7d 0d 0a 09 75 6c 6f 6e 67 20 6c 65 6e 28 /@}...ulong len(
0740: 29 20 63 6f 6e 73 74 3b 0d 0a 0d 0a 09 2f 2f 40 ) const;.....//@
0750: 7b 20 97 76 91 66 20 2f 2f 40 7d 0d 0a 09 63 6f { .v.f //@}...co
0760: 6e 73 74 20 54 43 48 41 52 20 6f 70 65 72 61 74 nst TCHAR operat
0770: 6f 72 5b 5d 28 69 6e 74 20 6e 29 20 63 6f 6e 73 or[](int n) cons
0780: 74 3b 0d 0a 0d 0a 09 2f 2f 40 7b 20 83 8f 83 43 t;.....//@{ ...C
0790: 83 68 95 b6 8e 9a 97 f1 82 c9 95 cf 8a b7 82 b5 .h..............
07a0: 82 c4 95 d4 82 b7 20 2f 2f 40 7d 0d 0a 09 63 6f ...... //@}...co
07b0: 6e 73 74 20 77 63 68 61 72 5f 74 2a 20 43 6f 6e nst wchar_t* Con
07c0: 76 54 6f 57 43 68 61 72 28 29 20 63 6f 6e 73 74 vToWChar() const
07d0: 3b 0d 0a 0d 0a 09 2f 2f 40 7b 20 43 6f 6e 76 54 ;.....//@{ ConvT
07e0: 6f 57 43 68 61 72 82 cc 95 d4 92 6c 83 6f 83 62 oWChar.....l.o.b
07f0: 83 74 83 40 82 cc 89 f0 95 fa 20 2f 2f 40 7d 0d .t.@...... //@}.
0800: 0a 09 76 6f 69 64 20 46 72 65 65 57 43 4d 65 6d ..void FreeWCMem
0810: 28 20 63 6f 6e 73 74 20 77 63 68 61 72 5f 74 2a ( const wchar_t*
0820: 20 77 63 20 29 20 63 6f 6e 73 74 3b 0d 0a 0d 0a wc ) const;....
0830: 70 75 62 6c 69 63 3a 0d 0a 0d 0a 09 2f 2f 40 7b public:.....//@{
0840: 20 8e 9f 82 cc 88 ea 95 b6 8e 9a 20 2f 2f 40 7d .......... //@}
0850: 0d 0a 09 73 74 61 74 69 63 20 54 43 48 41 52 2a ...static TCHAR*
0860: 20 20 20 20 20 20 20 6e 65 78 74 28 20 54 43 48 next( TCH
0870: 41 52 2a 20 70 20 29 3b 0d 0a 09 73 74 61 74 69 AR* p );...stati
0880: 63 20 63 6f 6e 73 74 20 54 43 48 41 52 2a 20 6e c const TCHAR* n
0890: 65 78 74 28 20 63 6f 6e 73 74 20 54 43 48 41 52 ext( const TCHAR
08a0: 2a 20 70 20 29 3b 0d 0a 0d 0a 09 2f 2f 40 7b 20 * p );.....//@{
08b0: 82 51 83 6f 83 43 83 67 95 b6 8e 9a 82 cc 90 e6 .Q.o.C.g........
08c0: 93 aa 82 a9 82 c7 82 a4 82 a9 81 48 20 2f 2f 40 ...........H //@
08d0: 7d 0d 0a 09 73 74 61 74 69 63 20 62 6f 6f 6c 20 }...static bool
08e0: 69 73 4c 42 28 20 54 43 48 41 52 20 63 20 29 3b isLB( TCHAR c );
08f0: 0d 0a 0d 0a 09 2f 2f 40 7b 20 95 b6 8e 9a 97 f1 .....//@{ ......
0900: 82 a9 82 e7 69 6e 74 82 d6 95 cf 8a b7 20 2f 2f ....int...... //
0910: 40 7d 0d 0a 09 73 74 61 74 69 63 20 69 6e 74 20 @}...static int
0920: 47 65 74 49 6e 74 28 20 63 6f 6e 73 74 20 54 43 GetInt( const TC
0930: 48 41 52 2a 20 70 20 29 3b 0d 0a 0d 0a 70 72 6f HAR* p );....pro
0940: 74 65 63 74 65 64 3a 0d 0a 0d 0a 09 2f 2f 20 8f tected:.....// .
0950: 91 82 ab 8d 9e 82 dd 89 c2 94 5c 82 c8 83 6f 83 ..........\...o.
0960: 62 83 74 83 40 82 f0 81 41 8f 49 92 5b 8a dc 82 b.t.@...A.I.[...
0970: df 82 c4 8d c5 92 e1 82 c5 82 e0 6d 69 6e 69 6d ...........minim
0980: 75 6d 95 b6 8e 9a 95 aa 97 70 88 d3 82 b7 82 e9 um.......p......
0990: 0d 0a 09 54 43 48 41 52 2a 20 41 6c 6c 6f 63 4d ...TCHAR* AllocM
09a0: 65 6d 28 20 75 6c 6f 6e 67 20 6d 69 6e 69 6d 75 em( ulong minimu
09b0: 6d 20 29 3b 0d 0a 09 54 43 48 41 52 2a 20 52 65 m );...TCHAR* Re
09c0: 61 6c 6c 6f 63 4d 65 6d 28 20 75 6c 6f 6e 67 20 allocMem( ulong
09d0: 6d 69 6e 69 6d 75 6d 20 29 3b 0d 0a 0d 0a 09 2f minimum );...../
09e0: 2f 20 8f 91 82 ab 8d 9e 82 dd 8f 49 97 b9 8c e3 / .........I....
09f0: 81 41 92 b7 82 b3 82 f0 8d c4 90 dd 92 e8 0d 0a .A..............
0a00: 09 76 6f 69 64 20 55 6e 6c 6f 63 6b 4d 65 6d 28 .void UnlockMem(
0a10: 20 6c 6f 6e 67 20 73 69 7a 3d 2d 31 20 29 3b 0d long siz=-1 );.
0a20: 0a 0d 0a 70 72 69 76 61 74 65 3a 0d 0a 0d 0a 09 ...private:.....
0a30: 73 74 72 75 63 74 20 53 74 72 69 6e 67 44 61 74 struct StringDat
0a40: 61 0d 0a 09 7b 0d 0a 09 09 6c 6f 6e 67 20 20 72 a...{....long r
0a50: 65 66 3b 20 20 20 20 20 20 20 20 20 2f 2f 20 8e ef; // .
0a60: 51 8f c6 83 4a 83 45 83 93 83 5e 0d 0a 09 09 75 Q...J.E...^....u
0a70: 6c 6f 6e 67 20 6c 65 6e 3b 20 20 20 20 20 20 20 long len;
0a80: 20 20 2f 2f 20 8f 49 92 5b 27 5c 30 27 82 f0 8a // .I.['\0'...
0a90: dc 82 df 82 e9 92 b7 82 b3 0d 0a 09 09 75 6c 6f .............ulo
0aa0: 6e 67 20 61 6c 65 6e 3b 20 20 20 20 20 20 20 20 ng alen;
0ab0: 2f 2f 20 8a 84 82 e8 93 96 82 c4 82 e7 82 ea 82 // .............
0ac0: c4 82 a2 82 e9 83 81 83 82 83 8a 82 cc 83 54 83 ..............T.
0ad0: 43 83 59 0d 0a 09 09 54 43 48 41 52 2a 20 62 75 C.Y....TCHAR* bu
0ae0: 66 28 29 20 63 6f 6e 73 74 20 2f 2f 20 54 43 48 f() const // TCH
0af0: 41 52 20 62 75 66 5b 61 6c 65 6e 5d 0d 0a 09 09 AR buf[alen]....
0b00: 09 7b 20 72 65 74 75 72 6e 20 72 65 69 6e 74 65 .{ return reinte
0b10: 72 70 72 65 74 5f 63 61 73 74 3c 54 43 48 41 52 rpret_cast<TCHAR
0b20: 2a 3e 28 0d 0a 09 09 09 09 63 6f 6e 73 74 5f 63 *>(......const_c
0b30: 61 73 74 3c 53 74 72 69 6e 67 44 61 74 61 2a 3e ast<StringData*>
0b40: 28 74 68 69 73 2b 31 29 0d 0a 09 09 09 29 3b 20 (this+1).....);
0b50: 7d 0d 0a 09 7d 3b 0d 0a 0d 0a 70 72 69 76 61 74 }...};....privat
0b60: 65 3a 0d 0a 0d 0a 09 54 43 48 41 52 2a 20 20 41 e:.....TCHAR* A
0b70: 6c 6c 6f 63 4d 65 6d 48 65 6c 70 65 72 28 20 75 llocMemHelper( u
0b80: 6c 6f 6e 67 20 6d 69 6e 69 6d 75 6d 2c 20 63 6f long minimum, co
0b90: 6e 73 74 20 54 43 48 41 52 2a 20 73 74 72 2c 20 nst TCHAR* str,
0ba0: 75 6c 6f 6e 67 20 73 69 7a 20 29 3b 0d 0a 09 53 ulong siz );...S
0bb0: 74 72 69 6e 67 26 20 43 61 74 53 74 72 69 6e 67 tring& CatString
0bc0: 28 20 63 6f 6e 73 74 20 54 43 48 41 52 2a 20 73 ( const TCHAR* s
0bd0: 74 72 2c 20 75 6c 6f 6e 67 20 73 69 7a 20 29 3b tr, ulong siz );
0be0: 0d 0a 09 53 74 72 69 6e 67 26 20 53 65 74 53 74 ...String& SetSt
0bf0: 72 69 6e 67 28 20 63 6f 6e 73 74 20 54 43 48 41 ring( const TCHA
0c00: 52 2a 20 73 74 72 2c 20 75 6c 6f 6e 67 20 73 69 R* str, ulong si
0c10: 7a 20 29 3b 0d 0a 09 76 6f 69 64 20 20 20 20 53 z );...void S
0c20: 65 74 44 61 74 61 28 20 53 74 72 69 6e 67 44 61 etData( StringDa
0c30: 74 61 2a 20 64 20 29 3b 0d 0a 09 76 6f 69 64 20 ta* d );...void
0c40: 20 20 20 52 65 6c 65 61 73 65 44 61 74 61 28 29 ReleaseData()
0c50: 3b 0d 0a 09 73 74 61 74 69 63 20 20 53 74 72 69 ;...static Stri
0c60: 6e 67 44 61 74 61 2a 20 6e 75 6c 6c 28 29 3b 0d ngData* null();.
0c70: 0a 09 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 .. String
0c80: 44 61 74 61 2a 20 64 61 74 61 28 29 20 63 6f 6e Data* data() con
0c90: 73 74 3b 0d 0a 0d 0a 70 72 69 76 61 74 65 3a 0d st;....private:.
0ca0: 0a 0d 0a 09 53 74 72 69 6e 67 44 61 74 61 2a 20 ....StringData*
0cb0: 20 20 20 20 20 20 20 64 61 74 61 5f 3b 0d 0a 09 data_;...
0cc0: 73 74 61 74 69 63 20 53 74 72 69 6e 67 44 61 74 static StringDat
0cd0: 61 2a 20 6e 75 6c 6c 44 61 74 61 5f 3b 0d 0a 09 a* nullData_;...
0ce0: 73 74 61 74 69 63 20 63 68 61 72 20 20 20 20 20 static char
0cf0: 20 20 20 6c 62 5f 5b 32 35 36 5d 3b 0d 0a 0d 0a lb_[256];....
0d00: 70 72 69 76 61 74 65 3a 0d 0a 0d 0a 09 73 74 61 private:.....sta
0d10: 74 69 63 20 76 6f 69 64 20 4c 69 62 49 6e 69 74 tic void LibInit
0d20: 28 29 3b 0d 0a 09 66 72 69 65 6e 64 20 76 6f 69 ();...friend voi
0d30: 64 20 41 50 49 45 4e 54 52 59 20 53 74 61 72 74 d APIENTRY Start
0d40: 75 70 28 29 3b 0d 0a 7d 3b 0d 0a 0d 0a 0d 0a 0d up();..};.......
0d50: 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d .//-------------
0d60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0d70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0d80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0d90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 69 ------------..#i
0da0: 66 6e 64 65 66 20 5f 5f 63 63 64 6f 63 5f 5f 0d fndef __ccdoc__.
0db0: 0a 0d 0a 2f 2f 20 8f 89 8a fa 89 bb 0d 0a 69 6e ...// ........in
0dc0: 6c 69 6e 65 20 53 74 72 69 6e 67 3a 3a 53 74 72 line String::Str
0dd0: 69 6e 67 28 29 0d 0a 09 7b 20 53 65 74 44 61 74 ing()...{ SetDat
0de0: 61 28 20 6e 75 6c 6c 28 29 20 29 3b 20 7d 0d 0a a( null() ); }..
0df0: 2f 2f 20 8f 89 8a fa 89 bb 0d 0a 69 6e 6c 69 6e // ........inlin
0e00: 65 20 53 74 72 69 6e 67 3a 3a 53 74 72 69 6e 67 e String::String
0e10: 28 20 55 49 4e 54 20 72 73 72 63 49 44 20 29 0d ( UINT rsrcID ).
0e20: 0a 09 7b 20 53 65 74 44 61 74 61 28 20 6e 75 6c ..{ SetData( nul
0e30: 6c 28 29 20 29 2c 20 4c 6f 61 64 28 20 72 73 72 l() ), Load( rsr
0e40: 63 49 44 20 29 3b 20 7d 0d 0a 2f 2f 20 8f 89 8a cID ); }..// ...
0e50: fa 89 bb 0d 0a 69 6e 6c 69 6e 65 20 53 74 72 69 .....inline Stri
0e60: 6e 67 3a 3a 53 74 72 69 6e 67 28 20 63 6f 6e 73 ng::String( cons
0e70: 74 20 53 74 72 69 6e 67 26 20 6f 62 6a 20 29 0d t String& obj ).
0e80: 0a 09 7b 20 53 65 74 44 61 74 61 28 20 6f 62 6a ..{ SetData( obj
0e90: 2e 64 61 74 61 28 29 20 29 3b 20 7d 0d 0a 0d 0a .data() ); }....
0ea0: 2f 2f 20 83 7c 83 43 83 93 83 5e 8c 76 8e 5a 83 // .|.C...^.v.Z.
0eb0: 54 83 7c 81 5b 83 67 0d 0a 23 69 66 20 21 64 65 T.|.[.g..#if !de
0ec0: 66 69 6e 65 64 28 5f 55 4e 49 43 4f 44 45 29 20 fined(_UNICODE)
0ed0: 26 26 20 64 65 66 69 6e 65 64 28 5f 4d 42 43 53 && defined(_MBCS
0ee0: 29 0d 0a 09 69 6e 6c 69 6e 65 20 54 43 48 41 52 )...inline TCHAR
0ef0: 2a 20 53 74 72 69 6e 67 3a 3a 6e 65 78 74 28 20 * String::next(
0f00: 54 43 48 41 52 2a 20 70 20 29 0d 0a 09 09 7b 20 TCHAR* p )....{
0f10: 72 65 74 75 72 6e 20 70 20 2b 20 6c 62 5f 5b 2a return p + lb_[*
0f20: 28 75 63 68 61 72 2a 29 70 5d 3b 20 7d 0d 0a 09 (uchar*)p]; }...
0f30: 69 6e 6c 69 6e 65 20 63 6f 6e 73 74 20 54 43 48 inline const TCH
0f40: 41 52 2a 20 53 74 72 69 6e 67 3a 3a 6e 65 78 74 AR* String::next
0f50: 28 20 63 6f 6e 73 74 20 54 43 48 41 52 2a 20 70 ( const TCHAR* p
0f60: 20 29 0d 0a 09 09 7b 20 72 65 74 75 72 6e 20 70 )....{ return p
0f70: 20 2b 20 6c 62 5f 5b 2a 28 63 6f 6e 73 74 20 75 + lb_[*(const u
0f80: 63 68 61 72 2a 29 70 5d 3b 20 7d 0d 0a 09 69 6e char*)p]; }...in
0f90: 6c 69 6e 65 20 62 6f 6f 6c 20 53 74 72 69 6e 67 line bool String
0fa0: 3a 3a 69 73 4c 42 28 20 54 43 48 41 52 20 63 20 ::isLB( TCHAR c
0fb0: 29 0d 0a 09 09 7b 20 72 65 74 75 72 6e 20 6c 62 )....{ return lb
0fc0: 5f 5b 28 75 63 68 61 72 29 63 5d 3d 3d 32 3b 20 _[(uchar)c]==2;
0fd0: 7d 0d 0a 23 65 6c 73 65 20 2f 2f 20 5f 55 4e 49 }..#else // _UNI
0fe0: 43 4f 44 45 20 6f 72 20 5f 53 42 43 53 0d 0a 09 CODE or _SBCS...
0ff0: 69 6e 6c 69 6e 65 20 54 43 48 41 52 2a 20 53 74 inline TCHAR* St
1000: 72 69 6e 67 3a 3a 6e 65 78 74 28 20 54 43 48 41 ring::next( TCHA
1010: 52 2a 20 70 20 29 0d 0a 09 09 7b 20 72 65 74 75 R* p )....{ retu
1020: 72 6e 20 70 20 2b 20 31 3b 20 7d 0d 0a 09 69 6e rn p + 1; }...in
1030: 6c 69 6e 65 20 63 6f 6e 73 74 20 54 43 48 41 52 line const TCHAR
1040: 2a 20 53 74 72 69 6e 67 3a 3a 6e 65 78 74 28 20 * String::next(
1050: 63 6f 6e 73 74 20 54 43 48 41 52 2a 20 70 20 29 const TCHAR* p )
1060: 0d 0a 09 09 7b 20 72 65 74 75 72 6e 20 70 20 2b ....{ return p +
1070: 20 31 3b 20 7d 0d 0a 09 69 6e 6c 69 6e 65 20 62 1; }...inline b
1080: 6f 6f 6c 20 53 74 72 69 6e 67 3a 3a 69 73 4c 42 ool String::isLB
1090: 28 20 54 43 48 41 52 20 63 20 29 0d 0a 09 09 7b ( TCHAR c )....{
10a0: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 20 7d return false; }
10b0: 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 2f 2f 20 93 ..#endif....// .
10c0: e0 95 94 83 81 83 82 83 8a 8a 6d 95 db 0d 0a 69 ..........m....i
10d0: 6e 6c 69 6e 65 20 54 43 48 41 52 2a 20 53 74 72 nline TCHAR* Str
10e0: 69 6e 67 3a 3a 41 6c 6c 6f 63 4d 65 6d 28 20 75 ing::AllocMem( u
10f0: 6c 6f 6e 67 20 6d 69 6e 69 6d 75 6d 20 29 0d 0a long minimum )..
1100: 09 7b 20 72 65 74 75 72 6e 20 41 6c 6c 6f 63 4d .{ return AllocM
1110: 65 6d 48 65 6c 70 65 72 28 20 6d 69 6e 69 6d 75 emHelper( minimu
1120: 6d 2c 20 54 45 58 54 28 22 22 29 2c 20 31 20 29 m, TEXT(""), 1 )
1130: 3b 20 7d 0d 0a 2f 2f 20 93 e0 95 94 83 81 83 82 ; }..// ........
1140: 83 8a 8c c5 92 e8 0d 0a 69 6e 6c 69 6e 65 20 76 ........inline v
1150: 6f 69 64 20 53 74 72 69 6e 67 3a 3a 55 6e 6c 6f oid String::Unlo
1160: 63 6b 4d 65 6d 28 20 6c 6f 6e 67 20 73 69 7a 20 ckMem( long siz
1170: 29 0d 0a 09 7b 20 64 61 74 61 5f 2d 3e 6c 65 6e )...{ data_->len
1180: 20 3d 20 31 20 2b 20 28 73 69 7a 3d 3d 2d 31 20 = 1 + (siz==-1
1190: 3f 20 3a 3a 6c 73 74 72 6c 65 6e 28 63 5f 73 74 ? ::lstrlen(c_st
11a0: 72 28 29 29 20 3a 20 73 69 7a 29 3b 20 7d 0d 0a r()) : siz); }..
11b0: 0d 0a 2f 2f 20 82 4f 95 b6 8e 9a 83 66 81 5b 83 ..// .O.....f.[.
11c0: 5e 0d 0a 69 6e 6c 69 6e 65 20 53 74 72 69 6e 67 ^..inline String
11d0: 3a 3a 53 74 72 69 6e 67 44 61 74 61 2a 20 53 74 ::StringData* St
11e0: 72 69 6e 67 3a 3a 6e 75 6c 6c 28 29 0d 0a 09 7b ring::null()...{
11f0: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 44 61 74 61 return nullData
1200: 5f 3b 20 7d 0d 0a 2f 2f 20 93 e0 95 94 83 66 81 _; }..// .....f.
1210: 5b 83 5e 8d 5c 91 a2 0d 0a 69 6e 6c 69 6e 65 20 [.^.\....inline
1220: 53 74 72 69 6e 67 3a 3a 53 74 72 69 6e 67 44 61 String::StringDa
1230: 74 61 2a 20 53 74 72 69 6e 67 3a 3a 64 61 74 61 ta* String::data
1240: 28 29 20 63 6f 6e 73 74 0d 0a 09 7b 20 72 65 74 () const...{ ret
1250: 75 72 6e 20 64 61 74 61 5f 3b 20 7d 0d 0a 2f 2f urn data_; }..//
1260: 20 8f 89 8a fa 89 bb 0d 0a 69 6e 6c 69 6e 65 20 ........inline
1270: 76 6f 69 64 20 53 74 72 69 6e 67 3a 3a 53 65 74 void String::Set
1280: 44 61 74 61 28 20 53 74 72 69 6e 67 3a 3a 53 74 Data( String::St
1290: 72 69 6e 67 44 61 74 61 2a 20 64 20 29 0d 0a 09 ringData* d )...
12a0: 7b 20 64 61 74 61 5f 3d 64 2c 20 64 61 74 61 5f { data_=d, data_
12b0: 2d 3e 72 65 66 2b 2b 3b 20 7d 0d 0a 0d 0a 2f 2f ->ref++; }....//
12c0: 20 91 ae 90 ab 0d 0a 69 6e 6c 69 6e 65 20 63 6f ......inline co
12d0: 6e 73 74 20 54 43 48 41 52 2a 20 53 74 72 69 6e nst TCHAR* Strin
12e0: 67 3a 3a 63 5f 73 74 72 28 29 20 63 6f 6e 73 74 g::c_str() const
12f0: 0d 0a 09 7b 20 72 65 74 75 72 6e 20 64 61 74 61 ...{ return data
1300: 5f 2d 3e 62 75 66 28 29 3b 20 7d 0d 0a 2f 2f 20 _->buf(); }..//
1310: 91 ae 90 ab 0d 0a 69 6e 6c 69 6e 65 20 75 6c 6f ......inline ulo
1320: 6e 67 20 53 74 72 69 6e 67 3a 3a 6c 65 6e 28 29 ng String::len()
1330: 20 63 6f 6e 73 74 0d 0a 09 7b 20 72 65 74 75 72 const...{ retur
1340: 6e 20 64 61 74 61 5f 2d 3e 6c 65 6e 2d 31 3b 20 n data_->len-1;
1350: 7d 0d 0a 2f 2f 20 97 76 91 66 0d 0a 69 6e 6c 69 }..// .v.f..inli
1360: 6e 65 20 63 6f 6e 73 74 20 54 43 48 41 52 20 53 ne const TCHAR S
1370: 74 72 69 6e 67 3a 3a 6f 70 65 72 61 74 6f 72 5b tring::operator[
1380: 5d 28 69 6e 74 20 6e 29 20 63 6f 6e 73 74 0d 0a ](int n) const..
1390: 09 7b 20 72 65 74 75 72 6e 20 64 61 74 61 5f 2d .{ return data_-
13a0: 3e 62 75 66 28 29 5b 6e 5d 3b 20 7d 0d 0a 0d 0a >buf()[n]; }....
13b0: 2f 2f 20 94 e4 8a 72 0d 0a 69 6e 6c 69 6e 65 20 // ...r..inline
13c0: 62 6f 6f 6c 20 53 74 72 69 6e 67 3a 3a 6f 70 65 bool String::ope
13d0: 72 61 74 6f 72 3d 3d 28 20 4c 50 43 54 53 54 52 rator==( LPCTSTR
13e0: 20 73 20 29 20 63 6f 6e 73 74 0d 0a 09 7b 20 72 s ) const...{ r
13f0: 65 74 75 72 6e 20 30 3d 3d 3a 3a 6c 73 74 72 63 eturn 0==::lstrc
1400: 6d 70 28 20 63 5f 73 74 72 28 29 2c 20 73 20 29 mp( c_str(), s )
1410: 3b 20 7d 0d 0a 2f 2f 20 94 e4 8a 72 0d 0a 69 6e ; }..// ...r..in
1420: 6c 69 6e 65 20 62 6f 6f 6c 20 53 74 72 69 6e 67 line bool String
1430: 3a 3a 6f 70 65 72 61 74 6f 72 3d 3d 28 20 63 6f ::operator==( co
1440: 6e 73 74 20 53 74 72 69 6e 67 26 20 6f 62 6a 20 nst String& obj
1450: 29 20 63 6f 6e 73 74 0d 0a 09 7b 20 72 65 74 75 ) const...{ retu
1460: 72 6e 20 28 64 61 74 61 5f 3d 3d 6f 62 6a 2e 64 rn (data_==obj.d
1470: 61 74 61 5f 20 3f 20 74 72 75 65 20 3a 20 6f 70 ata_ ? true : op
1480: 65 72 61 74 6f 72 3d 3d 28 20 6f 62 6a 2e 63 5f erator==( obj.c_
1490: 73 74 72 28 29 20 29 29 3b 20 7d 0d 0a 2f 2f 20 str() )); }..//
14a0: 94 e4 8a 72 0d 0a 69 6e 6c 69 6e 65 20 62 6f 6f ...r..inline boo
14b0: 6c 20 53 74 72 69 6e 67 3a 3a 69 73 53 61 6d 65 l String::isSame
14c0: 28 20 4c 50 43 54 53 54 52 20 73 20 29 20 63 6f ( LPCTSTR s ) co
14d0: 6e 73 74 0d 0a 09 7b 20 72 65 74 75 72 6e 20 30 nst...{ return 0
14e0: 3d 3d 3a 3a 6c 73 74 72 63 6d 70 69 28 20 63 5f ==::lstrcmpi( c_
14f0: 73 74 72 28 29 2c 20 73 20 29 3b 20 7d 0d 0a 2f str(), s ); }../
1500: 2f 20 94 e4 8a 72 0d 0a 69 6e 6c 69 6e 65 20 62 / ...r..inline b
1510: 6f 6f 6c 20 53 74 72 69 6e 67 3a 3a 69 73 53 61 ool String::isSa
1520: 6d 65 28 20 63 6f 6e 73 74 20 53 74 72 69 6e 67 me( const String
1530: 26 20 6f 62 6a 20 29 20 63 6f 6e 73 74 0d 0a 09 & obj ) const...
1540: 7b 20 72 65 74 75 72 6e 20 28 64 61 74 61 5f 3d { return (data_=
1550: 3d 6f 62 6a 2e 64 61 74 61 5f 20 3f 20 74 72 75 =obj.data_ ? tru
1560: 65 20 3a 20 6f 70 65 72 61 74 6f 72 3d 3d 28 20 e : operator==(
1570: 6f 62 6a 2e 63 5f 73 74 72 28 29 20 29 29 3b 20 obj.c_str() ));
1580: 7d 0d 0a 0d 0a 2f 2f 20 97 76 83 52 83 73 81 5b }....// .v.R.s.[
1590: 91 e3 93 fc 0d 0a 69 6e 6c 69 6e 65 20 53 74 72 ......inline Str
15a0: 69 6e 67 26 20 53 74 72 69 6e 67 3a 3a 6f 70 65 ing& String::ope
15b0: 72 61 74 6f 72 20 3d 20 28 20 63 6f 6e 73 74 20 rator = ( const
15c0: 54 43 48 41 52 2a 20 73 20 29 0d 0a 09 7b 20 72 TCHAR* s )...{ r
15d0: 65 74 75 72 6e 20 53 65 74 53 74 72 69 6e 67 28 eturn SetString(
15e0: 20 73 2c 20 3a 3a 6c 73 74 72 6c 65 6e 28 73 29 s, ::lstrlen(s)
15f0: 20 29 3b 20 7d 0d 0a 2f 2f 20 8d 87 90 ac 0d 0a ); }..// ......
1600: 69 6e 6c 69 6e 65 20 53 74 72 69 6e 67 26 20 53 inline String& S
1610: 74 72 69 6e 67 3a 3a 6f 70 65 72 61 74 6f 72 20 tring::operator
1620: 2b 3d 20 28 20 63 6f 6e 73 74 20 53 74 72 69 6e += ( const Strin
1630: 67 26 20 6f 62 6a 20 29 0d 0a 09 7b 20 72 65 74 g& obj )...{ ret
1640: 75 72 6e 20 43 61 74 53 74 72 69 6e 67 28 20 6f urn CatString( o
1650: 62 6a 2e 63 5f 73 74 72 28 29 2c 20 6f 62 6a 2e bj.c_str(), obj.
1660: 6c 65 6e 28 29 20 29 3b 20 7d 0d 0a 2f 2f 20 8d len() ); }..// .
1670: 87 90 ac 0d 0a 69 6e 6c 69 6e 65 20 53 74 72 69 .....inline Stri
1680: 6e 67 26 20 53 74 72 69 6e 67 3a 3a 6f 70 65 72 ng& String::oper
1690: 61 74 6f 72 20 2b 3d 20 28 20 63 6f 6e 73 74 20 ator += ( const
16a0: 54 43 48 41 52 2a 20 73 20 29 0d 0a 09 7b 20 72 TCHAR* s )...{ r
16b0: 65 74 75 72 6e 20 43 61 74 53 74 72 69 6e 67 28 eturn CatString(
16c0: 20 73 2c 20 3a 3a 6c 73 74 72 6c 65 6e 28 73 29 s, ::lstrlen(s)
16d0: 20 29 3b 20 7d 0d 0a 2f 2f 20 8d 87 90 ac 0d 0a ); }..// ......
16e0: 69 6e 6c 69 6e 65 20 53 74 72 69 6e 67 26 20 53 inline String& S
16f0: 74 72 69 6e 67 3a 3a 6f 70 65 72 61 74 6f 72 20 tring::operator
1700: 2b 3d 20 28 20 54 43 48 41 52 20 63 20 29 0d 0a += ( TCHAR c )..
1710: 09 7b 20 72 65 74 75 72 6e 20 43 61 74 53 74 72 .{ return CatStr
1720: 69 6e 67 28 20 26 63 2c 20 31 20 29 3b 20 7d 0d ing( &c, 1 ); }.
1730: 0a 0d 0a 2f 2f 20 95 cf 8a b7 0d 0a 69 6e 6c 69 ...// ......inli
1740: 6e 65 20 69 6e 74 20 53 74 72 69 6e 67 3a 3a 47 ne int String::G
1750: 65 74 49 6e 74 28 29 0d 0a 09 7b 20 72 65 74 75 etInt()...{ retu
1760: 72 6e 20 47 65 74 49 6e 74 28 20 64 61 74 61 5f rn GetInt( data_
1770: 2d 3e 62 75 66 28 29 20 29 3b 20 7d 0d 0a 0d 0a ->buf() ); }....
1780: 2f 2f 40 7b 20 53 74 72 69 6e 67 20 2b 20 53 74 //@{ String + St
1790: 72 69 6e 67 20 2f 2f 40 7d 0d 0a 69 6e 6c 69 6e ring //@}..inlin
17a0: 65 20 63 6f 6e 73 74 20 53 74 72 69 6e 67 20 6f e const String o
17b0: 70 65 72 61 74 6f 72 2b 28 20 63 6f 6e 73 74 20 perator+( const
17c0: 53 74 72 69 6e 67 26 20 61 2c 20 63 6f 6e 73 74 String& a, const
17d0: 20 53 74 72 69 6e 67 26 20 62 20 29 0d 0a 09 7b String& b )...{
17e0: 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67 28 61 return String(a
17f0: 29 20 2b 3d 20 62 3b 20 7d 0d 0a 2f 2f 40 7b 20 ) += b; }..//@{
1800: 53 74 72 69 6e 67 20 2b 20 54 43 48 41 52 2a 20 String + TCHAR*
1810: 2f 2f 40 7d 0d 0a 69 6e 6c 69 6e 65 20 63 6f 6e //@}..inline con
1820: 73 74 20 53 74 72 69 6e 67 20 6f 70 65 72 61 74 st String operat
1830: 6f 72 2b 28 20 63 6f 6e 73 74 20 53 74 72 69 6e or+( const Strin
1840: 67 26 20 61 2c 20 63 6f 6e 73 74 20 54 43 48 41 g& a, const TCHA
1850: 52 2a 20 62 20 29 0d 0a 09 7b 20 72 65 74 75 72 R* b )...{ retur
1860: 6e 20 53 74 72 69 6e 67 28 61 29 20 2b 3d 20 62 n String(a) += b
1870: 3b 20 7d 0d 0a 2f 2f 40 7b 20 54 43 48 41 52 2a ; }..//@{ TCHAR*
1880: 20 2b 20 53 74 72 69 6e 67 20 2f 2f 40 7d 0d 0a + String //@}..
1890: 69 6e 6c 69 6e 65 20 63 6f 6e 73 74 20 53 74 72 inline const Str
18a0: 69 6e 67 20 6f 70 65 72 61 74 6f 72 2b 28 20 63 ing operator+( c
18b0: 6f 6e 73 74 20 54 43 48 41 52 2a 20 61 2c 20 63 onst TCHAR* a, c
18c0: 6f 6e 73 74 20 53 74 72 69 6e 67 26 20 62 20 29 onst String& b )
18d0: 0d 0a 09 7b 20 72 65 74 75 72 6e 20 53 74 72 69 ...{ return Stri
18e0: 6e 67 28 61 29 20 2b 3d 20 62 3b 20 7d 0d 0a 0d ng(a) += b; }...
18f0: 0a 2f 2f 20 43 6f 6e 76 54 6f 57 43 68 61 72 82 .// ConvToWChar.
1900: cc 95 d4 92 6c 83 6f 83 62 83 74 83 40 82 cc 89 ....l.o.b.t.@...
1910: f0 95 fa 0d 0a 69 6e 6c 69 6e 65 20 76 6f 69 64 .....inline void
1920: 20 53 74 72 69 6e 67 3a 3a 46 72 65 65 57 43 4d String::FreeWCM
1930: 65 6d 28 20 63 6f 6e 73 74 20 77 63 68 61 72 5f em( const wchar_
1940: 74 2a 20 77 63 20 29 20 63 6f 6e 73 74 0d 0a 23 t* wc ) const..#
1950: 69 66 64 65 66 20 5f 55 4e 49 43 4f 44 45 0d 0a ifdef _UNICODE..
1960: 09 7b 7d 0d 0a 23 65 6c 73 65 20 2f 2f 20 5f 4d .{}..#else // _M
1970: 42 43 53 20 6f 72 20 5f 53 42 43 53 0d 0a 09 7b BCS or _SBCS...{
1980: 20 64 65 6c 65 74 65 20 5b 5d 20 63 6f 6e 73 74 delete [] const
1990: 5f 63 61 73 74 3c 77 63 68 61 72 5f 74 2a 3e 28 _cast<wchar_t*>(
19a0: 77 63 29 3b 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a wc); }..#endif..
19b0: 0d 0a 0d 0a 0d 0a 23 65 6e 64 69 66 20 2f 2f 20 ......#endif //
19c0: 5f 5f 63 63 64 6f 63 5f 5f 0d 0a 23 75 6e 64 65 __ccdoc__..#unde
19d0: 66 20 58 54 43 48 41 52 0d 0a 2f 2f 3d 3d 3d 3d f XTCHAR..//====
19e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
19f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1a00: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1a10: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1a20: 3d 3d 3d 3d 3d 0d 0a 2f 2f 40 7b 0d 0a 2f 2f 09 =====..//@{..//.
1a30: 95 b6 8e 9a 97 f1 8f 88 97 9d 81 7b 83 bf 0d 0a ...........{....
1a40: 2f 2f 0d 0a 2f 2f 09 53 74 72 69 6e 67 83 4e 83 //..//.String.N.
1a50: 89 83 58 93 e0 82 cc 83 6f 83 62 83 74 83 40 8a ..X.....o.b.t.@.
1a60: 6d 95 db 8a d6 90 94 82 f0 8c c4 82 d7 82 e9 82 m...............
1a70: e6 82 a4 82 c9 82 b5 82 bd 94 c5 53 74 72 69 6e ...........Strin
1a80: 67 82 c5 82 b7 81 42 0d 0a 2f 2f 40 7d 0d 0a 2f g.....B..//@}../
1a90: 2f 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d /===============
1aa0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1ab0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1ac0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1ad0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0d 0a 0d 0a 73 74 ==========....st
1ae0: 72 75 63 74 20 52 61 77 53 74 72 69 6e 67 20 3a ruct RawString :
1af0: 20 70 75 62 6c 69 63 20 53 74 72 69 6e 67 0d 0a public String..
1b00: 7b 0d 0a 09 54 43 48 41 52 2a 20 41 6c 6c 6f 63 {...TCHAR* Alloc
1b10: 4d 65 6d 28 20 75 6c 6f 6e 67 20 6d 20 29 20 7b Mem( ulong m ) {
1b20: 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67 3a 3a return String::
1b30: 41 6c 6c 6f 63 4d 65 6d 28 6d 29 3b 20 7d 0d 0a AllocMem(m); }..
1b40: 09 76 6f 69 64 20 55 6e 6c 6f 63 6b 4d 65 6d 28 .void UnlockMem(
1b50: 29 20 20 20 20 20 20 20 20 20 20 20 7b 20 53 74 ) { St
1b60: 72 69 6e 67 3a 3a 55 6e 6c 6f 63 6b 4d 65 6d 28 ring::UnlockMem(
1b70: 29 3b 20 7d 0d 0a 7d 3b 0d 0a 0d 0a 7d 20 20 20 ); }..};....}
1b80: 20 20 20 2f 2f 20 6e 61 6d 65 73 70 61 63 65 20 // namespace
1b90: 6b 69 0d 0a 0d 0a 0d 0a 2f 2f 3d 3d 3d 3d 3d 3d ki......//======
1ba0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1bb0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1bc0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1bd0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1be0: 3d 3d 3d 0d 0a 2f 2f 40 7b 0d 0a 2f 2f 09 95 b6 ===..//@{..//...
1bf0: 8e 9a 97 f1 8f 88 97 9d 81 7b 83 bf 82 51 0d 0a .........{...Q..
1c00: 2f 2f 0d 0a 2f 2f 09 57 69 64 65 95 b6 8e 9a 94 //..//.Wide.....
1c10: c5 8a d6 90 94 82 f0 8e a9 91 4f 82 c5 0d 0a 2f ..........O..../
1c20: 2f 40 7d 0d 0a 2f 2f 3d 3d 3d 3d 3d 3d 3d 3d 3d /@}..//=========
1c30: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1c40: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1c50: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1c60: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1c70: 0d 0a 0d 0a 23 69 66 64 65 66 20 5f 55 4e 49 43 ....#ifdef _UNIC
1c80: 4f 44 45 0d 0a 09 23 64 65 66 69 6e 65 20 6d 79 ODE...#define my
1c90: 5f 6c 73 74 72 6c 65 6e 57 20 3a 3a 6c 73 74 72 _lstrlenW ::lstr
1ca0: 6c 65 6e 57 0d 0a 09 23 64 65 66 69 6e 65 20 6d lenW...#define m
1cb0: 79 5f 6c 73 74 72 63 70 79 57 20 3a 3a 6c 73 74 y_lstrcpyW ::lst
1cc0: 72 63 70 79 57 0d 0a 23 65 6c 73 65 0d 0a 09 69 rcpyW..#else...i
1cd0: 6e 6c 69 6e 65 20 73 74 61 74 69 63 0d 0a 09 75 nline static...u
1ce0: 6e 69 63 6f 64 65 2a 20 6d 79 5f 6c 73 74 72 63 nicode* my_lstrc
1cf0: 70 79 57 28 20 75 6e 69 63 6f 64 65 2a 20 63 6f pyW( unicode* co
1d00: 6e 73 74 20 64 2c 20 63 6f 6e 73 74 20 75 6e 69 nst d, const uni
1d10: 63 6f 64 65 2a 20 73 20 29 0d 0a 09 7b 0d 0a 09 code* s )...{...
1d20: 09 66 6f 72 28 75 6e 69 63 6f 64 65 2a 20 6e 3d .for(unicode* n=
1d30: 64 3b 20 2a 6e 2b 2b 3d 2a 73 2b 2b 3b 29 3b 0d d; *n++=*s++;);.
1d40: 0a 09 09 72 65 74 75 72 6e 20 64 3b 0d 0a 09 7d ...return d;...}
1d50: 0d 0a 0d 0a 09 69 6e 6c 69 6e 65 20 73 74 61 74 .....inline stat
1d60: 69 63 0d 0a 09 69 6e 74 20 6d 79 5f 6c 73 74 72 ic...int my_lstr
1d70: 6c 65 6e 57 28 20 63 6f 6e 73 74 20 75 6e 69 63 lenW( const unic
1d80: 6f 64 65 2a 20 63 6f 6e 73 74 20 64 20 29 0d 0a ode* const d )..
1d90: 09 7b 0d 0a 09 09 63 6f 6e 73 74 20 75 6e 69 63 .{....const unic
1da0: 6f 64 65 2a 20 6e 3b 0d 0a 09 09 66 6f 72 28 6e ode* n;....for(n
1db0: 3d 64 3b 20 2a 6e 3b 20 2b 2b 6e 29 3b 0d 0a 09 =d; *n; ++n);...
1dc0: 09 72 65 74 75 72 6e 20 73 74 61 74 69 63 5f 63 .return static_c
1dd0: 61 73 74 3c 69 6e 74 3e 28 6e 2d 64 29 3b 0d 0a ast<int>(n-d);..
1de0: 09 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 0d 0a .}..#endif......
1df0: 0d 0a 2f 2f 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ..//============
1e00: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1e10: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1e20: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1e30: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0d 0a 0d =============...
1e40: 0a 23 65 6e 64 69 66 20 2f 2f 20 5f 4b 49 4c 49 .#endif // _KILI
1e50: 42 5f 53 54 52 49 4e 47 5f 48 5f 0d 0a B_STRING_H_..