Artifact 497c03c8bc7cf457e9c510ecbf8c8bb36aad361e:
0000: 2f 2f 2d 2d 2d 20 4b 2e 49 2e 4c 49 42 20 2d 2d //--- K.I.LIB --
0010: 2d 0d 0a 2f 2f 20 6b 6c 5f 6d 69 73 63 2e 68 20 -..// kl_misc.h
0020: 3a 20 63 6f 6d 6d 6f 6e 2d 63 6c 61 73 73 65 73 : common-classes
0030: 20 66 6f 72 20 4b 2e 49 2e 4c 49 42 0d 0a 0d 0a for K.I.LIB....
0040: 23 69 66 6e 64 65 66 20 41 46 58 5f 4b 49 4c 49 #ifndef AFX_KILI
0050: 42 42 41 53 45 5f 48 5f 5f 38 39 39 39 38 46 33 BBASE_H__89998F3
0060: 34 5f 41 39 46 45 5f 34 41 32 37 5f 41 31 35 39 4_A9FE_4A27_A159
0070: 5f 36 37 31 46 38 35 41 41 39 33 38 33 5f 5f 49 _671F85AA9383__I
0080: 4e 43 4c 55 44 45 44 5f 0d 0a 23 64 65 66 69 6e NCLUDED_..#defin
0090: 65 20 41 46 58 5f 4b 49 4c 49 42 42 41 53 45 5f e AFX_KILIBBASE_
00a0: 48 5f 5f 38 39 39 39 38 46 33 34 5f 41 39 46 45 H__89998F34_A9FE
00b0: 5f 34 41 32 37 5f 41 31 35 39 5f 36 37 31 46 38 _4A27_A159_671F8
00c0: 35 41 41 39 33 38 33 5f 5f 49 4e 43 4c 55 44 45 5AA9383__INCLUDE
00d0: 44 5f 0d 0a 0d 0a 2f 2a 3d 2a 3d 2a 3d 2a 3d 2a D_..../*=*=*=*=*
00e0: 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a =*=*=*=*=*=*=*=*
00f0: 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a =*=*=*=*=*=*=*=*
0100: 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a =*=*=*=*=*=*=*=*
0110: 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 2f 0d =*=*=*=*=*=*=*/.
0120: 0a 2f 2f 20 8e 67 97 70 82 b7 82 e9 8a 4f 95 94 .// .g.p.....O..
0130: 8a d6 90 94 82 f0 89 bd 82 c6 82 c8 82 ad 83 7d ...............}
0140: 83 4e 83 8d 89 bb 82 b5 82 c4 82 a8 82 ad 0d 0a .N..............
0150: 2f 2f 20 92 c7 8b 4c 81 46 89 bd 82 c5 82 b1 82 // ...L.F.......
0160: f1 82 c8 82 b1 82 c6 82 e2 82 c1 82 bd 82 f1 82 ................
0170: be 81 63 81 48 81 40 81 84 81 40 90 cc 82 cc 8e ..c.H.@...@.....
0180: a9 95 aa 28 5e 5e 3b 0d 0a 0d 0a 23 64 65 66 69 ...(^^;....#defi
0190: 6e 65 20 6b 69 5f 73 74 72 6c 65 6e 28 70 29 20 ne ki_strlen(p)
01a0: 20 20 20 20 20 3a 3a 6c 73 74 72 6c 65 6e 28 70 ::lstrlen(p
01b0: 29 0d 0a 23 64 65 66 69 6e 65 20 6b 69 5f 73 74 )..#define ki_st
01c0: 72 63 70 79 28 70 2c 73 29 20 20 20 20 3a 3a 6c rcpy(p,s) ::l
01d0: 73 74 72 63 70 79 28 70 2c 73 29 0d 0a 23 64 65 strcpy(p,s)..#de
01e0: 66 69 6e 65 20 6b 69 5f 73 74 72 63 61 74 28 70 fine ki_strcat(p
01f0: 2c 73 29 20 20 20 20 3a 3a 6c 73 74 72 63 61 74 ,s) ::lstrcat
0200: 28 70 2c 73 29 0d 0a 23 64 65 66 69 6e 65 20 6b (p,s)..#define k
0210: 69 5f 73 74 72 63 6d 70 28 70 2c 73 29 20 20 20 i_strcmp(p,s)
0220: 20 3a 3a 6c 73 74 72 63 6d 70 28 70 2c 73 29 0d ::lstrcmp(p,s).
0230: 0a 23 64 65 66 69 6e 65 20 6b 69 5f 73 74 72 63 .#define ki_strc
0240: 6d 70 69 28 70 2c 73 29 20 20 20 3a 3a 6c 73 74 mpi(p,s) ::lst
0250: 72 63 6d 70 69 28 70 2c 73 29 0d 0a 23 64 65 66 rcmpi(p,s)..#def
0260: 69 6e 65 20 6b 69 5f 6d 65 6d 7a 65 72 6f 28 70 ine ki_memzero(p
0270: 2c 6c 29 20 20 20 3a 3a 5a 65 72 6f 4d 65 6d 6f ,l) ::ZeroMemo
0280: 72 79 28 70 2c 6c 29 0d 0a 23 64 65 66 69 6e 65 ry(p,l)..#define
0290: 20 6b 69 5f 6d 65 6d 63 70 79 28 70 2c 73 2c 6c ki_memcpy(p,s,l
02a0: 29 20 20 3a 3a 43 6f 70 79 4d 65 6d 6f 72 79 28 ) ::CopyMemory(
02b0: 70 2c 73 2c 6c 29 0d 0a 23 64 65 66 69 6e 65 20 p,s,l)..#define
02c0: 6b 69 5f 6d 65 6d 6d 6f 76 28 70 2c 73 2c 6c 29 ki_memmov(p,s,l)
02d0: 20 20 3a 3a 4d 6f 76 65 4d 65 6d 6f 72 79 28 70 ::MoveMemory(p
02e0: 2c 73 2c 6c 29 0d 0a 23 64 65 66 69 6e 65 20 6b ,s,l)..#define k
02f0: 69 5f 6d 65 6d 73 65 74 28 70 2c 63 2c 6c 29 20 i_memset(p,c,l)
0300: 20 3a 3a 46 69 6c 6c 4d 65 6d 6f 72 79 28 70 2c ::FillMemory(p,
0310: 6c 2c 63 29 0d 0a 69 6e 6c 69 6e 65 20 62 6f 6f l,c)..inline boo
0320: 6c 20 6b 69 5f 6d 65 6d 63 6d 70 28 20 63 6f 6e l ki_memcmp( con
0330: 73 74 20 63 68 61 72 2a 20 78 2c 20 63 6f 6e 73 st char* x, cons
0340: 74 20 63 68 61 72 2a 20 79 2c 20 69 6e 74 20 6c t char* y, int l
0350: 20 29 0d 0a 7b 0d 0a 09 77 68 69 6c 65 28 20 2a )..{...while( *
0360: 78 2b 2b 3d 3d 2a 79 2b 2b 20 26 26 20 2d 2d 6c x++==*y++ && --l
0370: 20 29 3b 0d 0a 09 72 65 74 75 72 6e 20 6c 3d 3d );...return l==
0380: 30 3b 0d 0a 7d 0d 0a 0d 0a 2f 2a 3d 2a 3d 2a 3d 0;..}..../*=*=*=
0390: 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d *=*=*=*=*=*=*=*=
03a0: 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d *=*=*=*=*=*=*=*=
03b0: 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d *=*=*=*=*=*=*=*=
03c0: 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d *=*=*=*=*=*=*=*=
03d0: 2a 2f 0d 0a 2f 2f 20 6b 69 41 72 72 61 79 20 3a */..// kiArray :
03e0: 20 94 7a 97 f1 82 cc 82 e6 82 a4 82 c8 83 4c 83 .z...........L.
03f0: 85 81 5b 82 cc 82 e6 82 a4 82 c8 91 e3 95 a8 0d ..[.............
0400: 0a 0d 0a 74 65 6d 70 6c 61 74 65 20 3c 63 6c 61 ...template <cla
0410: 73 73 20 54 3e 20 63 6c 61 73 73 20 6b 69 41 72 ss T> class kiAr
0420: 72 61 79 0d 0a 7b 0d 0a 70 75 62 6c 69 63 3a 20 ray..{..public:
0430: 2f 2f 2d 2d 20 8a 4f 8c fc 82 ab 83 43 83 93 83 //-- .O.....C...
0440: 5e 81 5b 83 74 83 46 83 43 83 58 20 2d 2d 2d 2d ^.[.t.F.C.X ----
0450: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0460: 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 09 2f 2f 20 8f 89 ------.....// ..
0470: 8a fa 83 54 83 43 83 59 28 20 31 30 81 60 32 35 ...T.C.Y( 10.`25
0480: 35 20 29 82 c5 8f 89 8a fa 89 bb 0d 0a 09 6b 69 5 )...........ki
0490: 41 72 72 61 79 28 20 75 6e 73 69 67 6e 65 64 20 Array( unsigned
04a0: 63 68 61 72 20 73 74 61 72 74 5f 73 69 7a 65 3d char start_size=
04b0: 31 30 20 29 0d 0a 09 09 7b 0d 0a 09 09 09 6d 5f 10 )....{.....m_
04c0: 70 41 72 72 61 79 20 3d 20 6e 65 77 20 54 5b 20 pArray = new T[
04d0: 6d 5f 41 4c 65 6e 3d 73 74 61 72 74 5f 73 69 7a m_ALen=start_siz
04e0: 65 20 5d 3b 0d 0a 09 09 09 6d 5f 4c 65 6e 20 3d e ];.....m_Len =
04f0: 20 30 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09 2f 2f 20 0;....}.....//
0500: 94 7a 97 f1 82 f0 8b f3 82 c9 82 b7 82 e9 0d 0a .z..............
0510: 09 76 6f 69 64 20 65 6d 70 74 79 28 29 0d 0a 09 .void empty()...
0520: 09 7b 0d 0a 09 09 09 6d 5f 4c 65 6e 20 3d 20 30 .{.....m_Len = 0
0530: 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09 2f 2f 20 97 76 ;....}.....// .v
0540: 91 66 90 94 82 f0 8e e6 93 be 0d 0a 09 75 6e 73 .f...........uns
0550: 69 67 6e 65 64 20 6c 6f 6e 67 20 6c 65 6e 28 29 igned long len()
0560: 20 63 6f 6e 73 74 0d 0a 09 09 7b 0d 0a 09 09 09 const....{.....
0570: 72 65 74 75 72 6e 20 6d 5f 4c 65 6e 3b 0d 0a 09 return m_Len;...
0580: 09 7d 0d 0a 0d 0a 09 2f 2f 20 96 96 94 f6 82 c9 .}.....// ......
0590: 88 ea 8c c2 92 c7 89 c1 0d 0a 09 76 6f 69 64 20 ...........void
05a0: 61 64 64 28 20 63 6f 6e 73 74 20 54 26 20 6f 62 add( const T& ob
05b0: 6a 20 29 0d 0a 09 09 7b 0d 0a 09 09 09 69 66 28 j )....{.....if(
05c0: 20 6d 5f 4c 65 6e 3e 3d 6d 5f 41 4c 65 6e 20 29 m_Len>=m_ALen )
05d0: 0d 0a 09 09 09 7b 0d 0a 09 09 09 09 54 2a 20 70 .....{......T* p
05e0: 20 3d 20 6e 65 77 20 54 5b 20 6d 5f 41 4c 65 6e = new T[ m_ALen
05f0: 3c 3c 3d 31 20 5d 3b 0d 0a 09 09 09 09 66 6f 72 <<=1 ];......for
0600: 28 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 ( unsigned long
0610: 69 3d 30 3b 20 69 21 3d 6d 5f 4c 65 6e 3b 20 69 i=0; i!=m_Len; i
0620: 2b 2b 20 29 0d 0a 09 09 09 09 09 70 5b 69 5d 20 ++ ).......p[i]
0630: 3d 20 6d 5f 70 41 72 72 61 79 5b 69 5d 3b 0d 0a = m_pArray[i];..
0640: 09 09 09 09 64 65 6c 65 74 65 20 5b 5d 20 6d 5f ....delete [] m_
0650: 70 41 72 72 61 79 3b 0d 0a 09 09 09 09 6d 5f 70 pArray;......m_p
0660: 41 72 72 61 79 20 3d 20 70 3b 0d 0a 09 09 09 7d Array = p;.....}
0670: 0d 0a 09 09 09 6d 5f 70 41 72 72 61 79 5b 20 6d .....m_pArray[ m
0680: 5f 4c 65 6e 2b 2b 20 5d 20 3d 20 6f 62 6a 3b 0d _Len++ ] = obj;.
0690: 0a 09 09 7d 0d 0a 0d 0a 09 2f 2f 20 97 76 91 66 ...}.....// .v.f
06a0: 82 c9 83 41 83 4e 83 5a 83 58 0d 0a 09 54 26 20 ...A.N.Z.X...T&
06b0: 6f 70 65 72 61 74 6f 72 20 5b 5d 28 20 75 6e 73 operator []( uns
06c0: 69 67 6e 65 64 20 6c 6f 6e 67 20 69 20 29 0d 0a igned long i )..
06d0: 09 09 7b 0d 0a 09 09 09 72 65 74 75 72 6e 20 6d ..{.....return m
06e0: 5f 70 41 72 72 61 79 5b 69 5d 3b 0d 0a 09 09 7d _pArray[i];....}
06f0: 0d 0a 09 63 6f 6e 73 74 20 54 26 20 6f 70 65 72 ...const T& oper
0700: 61 74 6f 72 20 5b 5d 28 20 75 6e 73 69 67 6e 65 ator []( unsigne
0710: 64 20 6c 6f 6e 67 20 69 20 29 20 63 6f 6e 73 74 d long i ) const
0720: 0d 0a 09 09 7b 0d 0a 09 09 09 72 65 74 75 72 6e ....{.....return
0730: 20 6d 5f 70 41 72 72 61 79 5b 69 5d 3b 0d 0a 09 m_pArray[i];...
0740: 09 7d 0d 0a 0d 0a 09 2f 2f 20 94 7a 97 f1 83 52 .}.....// .z...R
0750: 83 73 81 5b 0d 0a 09 6b 69 41 72 72 61 79 3c 54 .s.[...kiArray<T
0760: 3e 26 20 6f 70 65 72 61 74 6f 72 20 3d 20 28 20 >& operator = (
0770: 63 6f 6e 73 74 20 6b 69 41 72 72 61 79 3c 54 3e const kiArray<T>
0780: 26 20 6f 20 29 0d 0a 09 09 7b 0d 0a 09 09 09 69 & o )....{.....i
0790: 66 28 20 26 6f 20 21 3d 20 74 68 69 73 20 29 0d f( &o != this ).
07a0: 0a 09 09 09 7b 0d 0a 09 09 09 09 65 6d 70 74 79 ....{......empty
07b0: 28 29 3b 0d 0a 09 09 09 09 66 6f 72 28 20 75 6e ();......for( un
07c0: 73 69 67 6e 65 64 20 69 6e 74 20 69 3d 30 3b 20 signed int i=0;
07d0: 69 21 3d 6f 2e 6c 65 6e 28 29 3b 20 69 2b 2b 20 i!=o.len(); i++
07e0: 29 0d 0a 09 09 09 09 09 61 64 64 28 20 6f 5b 69 ).......add( o[i
07f0: 5d 20 29 3b 0d 0a 09 09 09 7d 0d 0a 09 09 09 72 ] );.....}.....r
0800: 65 74 75 72 6e 20 2a 74 68 69 73 3b 0d 0a 09 09 eturn *this;....
0810: 7d 0d 0a 0d 0a 09 2f 2f 2d 2d 20 82 bf 82 e5 82 }.....//-- .....
0820: c1 82 c6 8a eb 8c af 82 c8 83 81 83 5c 83 62 83 ............\.b.
0830: 68 8c 51 0d 0a 09 76 6f 69 64 20 61 6c 6c 6f 63 h.Q...void alloc
0840: 28 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 ( unsigned long
0850: 78 20 29 0d 0a 09 09 7b 0d 0a 09 09 09 69 66 28 x )....{.....if(
0860: 20 78 20 3e 20 6d 5f 41 4c 65 6e 20 29 0d 0a 09 x > m_ALen )...
0870: 09 09 7b 0d 0a 09 09 09 09 54 2a 20 70 20 3d 20 ..{......T* p =
0880: 6e 65 77 20 54 5b 20 6d 5f 41 4c 65 6e 3d 28 6d new T[ m_ALen=(m
0890: 5f 41 4c 65 6e 3c 3c 31 29 3e 78 3f 28 6d 5f 41 _ALen<<1)>x?(m_A
08a0: 4c 65 6e 3c 3c 31 29 3a 78 20 5d 3b 0d 0a 09 09 Len<<1):x ];....
08b0: 09 09 66 6f 72 28 20 75 6e 73 69 67 6e 65 64 20 ..for( unsigned
08c0: 6c 6f 6e 67 20 69 3d 30 3b 20 69 21 3d 6d 5f 4c long i=0; i!=m_L
08d0: 65 6e 3b 20 69 2b 2b 20 29 0d 0a 09 09 09 09 09 en; i++ ).......
08e0: 70 5b 69 5d 20 3d 20 6d 5f 70 41 72 72 61 79 5b p[i] = m_pArray[
08f0: 69 5d 3b 0d 0a 09 09 09 09 64 65 6c 65 74 65 20 i];......delete
0900: 5b 5d 20 6d 5f 70 41 72 72 61 79 3b 0d 0a 09 09 [] m_pArray;....
0910: 09 09 6d 5f 70 41 72 72 61 79 20 3d 20 70 3b 0d ..m_pArray = p;.
0920: 0a 09 09 09 7d 0d 0a 09 09 7d 0d 0a 09 76 6f 69 ....}....}...voi
0930: 64 20 66 6f 72 63 65 6c 65 6e 28 20 75 6e 73 69 d forcelen( unsi
0940: 67 6e 65 64 20 6c 6f 6e 67 20 78 20 29 0d 0a 09 gned long x )...
0950: 09 7b 0d 0a 09 09 09 61 6c 6c 6f 63 28 20 78 20 .{.....alloc( x
0960: 29 3b 0d 0a 09 09 09 6d 5f 4c 65 6e 20 3d 20 78 );.....m_Len = x
0970: 3b 0d 0a 09 09 7d 0d 0a 0d 0a 70 72 69 76 61 74 ;....}....privat
0980: 65 3a 20 2f 2f 2d 2d 20 93 e0 95 94 8f 88 97 9d e: //-- ........
0990: 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------
09a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
09b0: 2d 2d 2d 2d 0d 0a 0d 0a 09 54 2a 20 6d 5f 70 41 ----.....T* m_pA
09c0: 72 72 61 79 3b 0d 0a 09 75 6e 73 69 67 6e 65 64 rray;...unsigned
09d0: 20 6c 6f 6e 67 20 6d 5f 4c 65 6e 2c 20 6d 5f 41 long m_Len, m_A
09e0: 4c 65 6e 3b 0d 0a 0d 0a 70 75 62 6c 69 63 3a 0d Len;....public:.
09f0: 0a 0d 0a 09 76 69 72 74 75 61 6c 20 7e 6b 69 41 ....virtual ~kiA
0a00: 72 72 61 79 28 29 0d 0a 09 09 7b 0d 0a 09 09 09 rray()....{.....
0a10: 64 65 6c 65 74 65 20 5b 5d 20 6d 5f 70 41 72 72 delete [] m_pArr
0a20: 61 79 3b 0d 0a 09 09 7d 0d 0a 7d 3b 0d 0a 0d 0a ay;....}..};....
0a30: 23 64 65 66 69 6e 65 20 20 42 6f 6f 6c 41 72 72 #define BoolArr
0a40: 61 79 20 6b 69 41 72 72 61 79 3c 62 6f 6f 6c 3e ay kiArray<bool>
0a50: 0d 0a 23 64 65 66 69 6e 65 20 20 43 68 61 72 41 ..#define CharA
0a60: 72 72 61 79 20 6b 69 41 72 72 61 79 3c 63 68 61 rray kiArray<cha
0a70: 72 2a 3e 0d 0a 23 64 65 66 69 6e 65 20 63 43 68 r*>..#define cCh
0a80: 61 72 41 72 72 61 79 20 6b 69 41 72 72 61 79 3c arArray kiArray<
0a90: 63 6f 6e 73 74 20 63 68 61 72 2a 3e 0d 0a 23 64 const char*>..#d
0aa0: 65 66 69 6e 65 20 20 20 53 74 72 41 72 72 61 79 efine StrArray
0ab0: 20 6b 69 41 72 72 61 79 3c 6b 69 53 74 72 3e 0d kiArray<kiStr>.
0ac0: 0a 0d 0a 23 65 6e 64 69 66 0d 0a ...#endif..