Hex Artifact Content

Not logged in

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