Hex Artifact Content Вы: nobody
Вход

Artifact ed6aa5c3371f12e42882fa263e50d6eefcb0214c:


0000: 2f 2f 20 70 68 69 73 69 63 61 6c 69 6e 66 6f 2e  // phisicalinfo.
0010: 68 0d 0a 23 70 72 61 67 6d 61 20 6f 6e 63 65 0d  h..#pragma once.
0020: 0a 0d 0a 0d 0a 73 74 72 75 63 74 20 66 69 65 6c  .....struct fiel
0030: 64 5f 69 6e 66 6f 0d 0a 7b 0d 0a 09 65 6e 75 6d  d_info..{...enum
0040: 20 66 69 65 6c 64 5f 63 6d 70 5f 74 79 70 65 20   field_cmp_type 
0050: 7b 66 74 54 65 78 74 2c 20 66 74 4e 75 6d 65 72  {ftText, ftNumer
0060: 69 63 7d 3b 0d 0a 0d 0a 09 66 69 65 6c 64 5f 63  ic};.....field_c
0070: 6d 70 5f 74 79 70 65 20 74 79 70 65 28 29 09 63  mp_type type().c
0080: 6f 6e 73 74 20 7b 20 72 65 74 75 72 6e 20 28 66  onst { return (f
0090: 69 65 6c 64 5f 63 6d 70 5f 74 79 70 65 29 74 3b  ield_cmp_type)t;
00a0: 20 7d 0d 0a 09 44 57 4f 52 44 20 6c 65 6e 67 74   }...DWORD lengt
00b0: 68 28 29 09 09 09 63 6f 6e 73 74 20 7b 20 72 65  h()...const { re
00c0: 74 75 72 6e 20 6c 3b 20 7d 0d 0a 09 44 57 4f 52  turn l; }...DWOR
00d0: 44 20 70 72 65 63 65 73 73 69 6f 6e 28 29 09 09  D precession()..
00e0: 63 6f 6e 73 74 20 7b 20 72 65 74 75 72 6e 20 70  const { return p
00f0: 3b 20 7d 0d 0a 09 44 57 4f 52 44 20 6f 66 66 73  ; }...DWORD offs
0100: 65 74 49 6e 52 65 63 6f 72 64 28 29 09 63 6f 6e  etInRecord().con
0110: 73 74 20 7b 20 72 65 74 75 72 6e 20 6f 3b 20 7d  st { return o; }
0120: 0d 0a 0d 0a 70 72 69 76 61 74 65 3a 0d 0a 09 66  ....private:...f
0130: 72 69 65 6e 64 20 73 74 72 75 63 74 20 70 68 69  riend struct phi
0140: 73 69 63 61 6c 5f 69 6e 66 6f 3b 0d 0a 09 44 57  sical_info;...DW
0150: 4f 52 44 20 6c 09 3a 20 31 30 3b 0d 0a 09 44 57  ORD l.: 10;...DW
0160: 4f 52 44 20 70 09 3a 20 34 3b 0d 0a 09 44 57 4f  ORD p.: 4;...DWO
0170: 52 44 20 74 09 3a 20 32 3b 0d 0a 09 44 57 4f 52  RD t.: 2;...DWOR
0180: 44 20 6f 09 3a 20 31 36 3b 0d 0a 7d 3b 0d 0a 0d  D o.: 16;..};...
0190: 0a 73 74 72 75 63 74 20 69 64 78 5f 66 69 65 6c  .struct idx_fiel
01a0: 64 5f 69 6e 66 6f 0d 0a 7b 0d 0a 09 44 57 4f 52  d_info..{...DWOR
01b0: 44 20 6e 75 6d 49 6e 54 61 62 6c 65 28 29 20 63  D numInTable() c
01c0: 6f 6e 73 74 20 7b 72 65 74 75 72 6e 20 64 77 4e  onst {return dwN
01d0: 75 6d 49 6e 54 61 62 6c 65 3b 7d 0d 0a 09 63 6f  umInTable;}...co
01e0: 6e 73 74 20 66 69 65 6c 64 5f 69 6e 66 6f 26 20  nst field_info& 
01f0: 69 6e 66 6f 28 29 20 63 6f 6e 73 74 20 7b 72 65  info() const {re
0200: 74 75 72 6e 20 66 49 6e 66 6f 3b 7d 0d 0a 70 72  turn fInfo;}..pr
0210: 69 76 61 74 65 3a 0d 0a 09 66 72 69 65 6e 64 20  ivate:...friend 
0220: 73 74 72 75 63 74 20 70 68 69 73 69 63 61 6c 5f  struct phisical_
0230: 69 6e 66 6f 3b 0d 0a 09 66 69 65 6c 64 5f 69 6e  info;...field_in
0240: 66 6f 20 66 49 6e 66 6f 3b 0d 0a 09 44 57 4f 52  fo fInfo;...DWOR
0250: 44 20 64 77 4e 75 6d 49 6e 54 61 62 6c 65 3b 0d  D dwNumInTable;.
0260: 0a 7d 3b 0d 0a 0d 0a 73 74 72 75 63 74 20 69 6e  .};....struct in
0270: 64 65 78 5f 69 6e 66 6f 0d 0a 7b 0d 0a 09 44 57  dex_info..{...DW
0280: 4f 52 44 20 66 69 65 6c 64 73 43 6f 75 6e 74 28  ORD fieldsCount(
0290: 29 09 09 63 6f 6e 73 74 20 7b 20 72 65 74 75 72  )..const { retur
02a0: 6e 20 63 3b 20 7d 0d 0a 09 44 57 4f 52 44 20 6b  n c; }...DWORD k
02b0: 65 79 53 69 7a 65 28 29 09 09 09 63 6f 6e 73 74  eySize()...const
02c0: 20 7b 20 72 65 74 75 72 6e 20 73 3b 20 7d 0d 0a   { return s; }..
02d0: 09 63 6f 6e 73 74 20 69 64 78 5f 66 69 65 6c 64  .const idx_field
02e0: 5f 69 6e 66 6f 2a 20 66 69 65 6c 64 73 28 29 20  _info* fields() 
02f0: 63 6f 6e 73 74 20 7b 20 72 65 74 75 72 6e 20 66  const { return f
0300: 69 3b 7d 0d 0a 0d 0a 70 72 69 76 61 74 65 3a 0d  i;}....private:.
0310: 0a 09 66 72 69 65 6e 64 20 73 74 72 75 63 74 20  ..friend struct 
0320: 70 68 69 73 69 63 61 6c 5f 69 6e 66 6f 3b 0d 0a  phisical_info;..
0330: 09 44 57 4f 52 44 20 63 20 3a 20 31 36 3b 0d 0a  .DWORD c : 16;..
0340: 09 44 57 4f 52 44 20 73 20 3a 20 31 36 3b 0d 0a  .DWORD s : 16;..
0350: 09 69 64 78 5f 66 69 65 6c 64 5f 69 6e 66 6f 20  .idx_field_info 
0360: 66 69 5b 31 5d 3b 0d 0a 7d 3b 0d 0a 0d 0a 2f 2f  fi[1];..};....//
0370: 20 d1 f2 f0 f3 ea f2 f3 f0 e0 20 ee ef e8 f1 fb   ......... .....
0380: e2 e0 e5 f2 20 f4 e8 e7 e8 f7 e5 f1 ea f3 fe 20  .... .......... 
0390: f1 f2 f0 f3 ea f2 f3 f0 f3 20 f2 e0 e1 eb e8 f6  ......... ......
03a0: fb 2e 0d 0a 2f 2f 20 ce ed e0 20 ef ee e7 e2 ee  ....// ... .....
03b0: eb ff e5 f2 3a 0d 0a 2f 2f 20 2d 20 cf ee 20 ed  ....:..// - .. .
03c0: ee ec e5 f0 f3 20 ef ee eb ff 20 f2 e0 e1 eb e8  ..... .... .....
03d0: f6 fb 20 ee ef f0 e5 e4 e5 eb e8 f2 fc 2c 20 e2  .. .........., .
03e0: 20 ea e0 ea e8 e5 20 e8 ed e4 e5 ea f1 fb 20 ee   ..... ....... .
03f0: ed ee 20 e2 f5 ee e4 e8 f2 0d 0a 2f 2f 20 20 20  .. ........//   
0400: e8 20 ef ee e7 e8 f6 e8 fe 20 fd f2 ee e3 ee 20  . ....... ..... 
0410: ef ee eb ff 20 e2 20 e8 ed e4 e5 ea f1 e5 2e 0d  .... . .........
0420: 0a 2f 2f 20 2d 20 cf ee 20 ed ee ec e5 f0 f3 20  .// - .. ...... 
0430: e8 ed e4 e5 ea f1 e0 20 f2 e0 e1 eb e8 f6 fb 20  ....... ....... 
0440: ef e5 f0 e5 f7 e8 f1 eb e8 f2 fc 20 ed ee ec e5  ........... ....
0450: f0 e0 20 ef ee eb e5 e9 20 f2 e0 e1 eb e8 f6 fb  .. ..... .......
0460: 2c 0d 0a 2f 2f 20 20 20 e2 f5 ee e4 ff f9 e8 f5  ,..//   ........
0470: 20 e2 20 fd f2 ee f2 20 e8 ed e4 e5 ea f1 2e 0d   . .... ........
0480: 0a 2f 2f 20 2d 20 cf ee eb f3 f7 e8 f2 fc 20 e0  .// - ........ .
0490: e4 f0 e5 f1 20 e1 f3 f4 e5 f0 e0 20 f7 f2 e5 ed  .... ...... ....
04a0: e8 ff 20 f2 e0 e1 eb e8 f6 fb 2c 20 f0 e0 e7 ec  .. ......., ....
04b0: e5 f0 20 e1 f3 f4 e5 f0 e0 2c 0d 0a 2f 2f 20 2d  .. ......,..// -
04c0: 20 d1 ec e5 f9 e5 ed e8 e5 20 e8 20 e4 eb e8 ed   ........ . ....
04d0: f3 20 ef ee eb e5 e9 20 e2 20 e1 f3 f4 e5 f0 e5  . ..... . ......
04e0: 2e 0d 0a 73 74 72 75 63 74 20 70 68 69 73 69 63  ...struct phisic
04f0: 61 6c 5f 69 6e 66 6f 0d 0a 7b 0d 0a 09 44 57 4f  al_info..{...DWO
0500: 52 44 20 66 69 65 6c 64 73 43 6f 75 6e 74 28 29  RD fieldsCount()
0510: 09 09 09 09 63 6f 6e 73 74 20 7b 72 65 74 75 72  ....const {retur
0520: 6e 20 66 6c 64 43 6f 75 6e 74 3b 7d 0d 0a 09 44  n fldCount;}...D
0530: 57 4f 52 44 20 69 6e 64 65 78 65 73 43 6f 75 6e  WORD indexesCoun
0540: 74 28 29 09 09 09 63 6f 6e 73 74 20 7b 72 65 74  t()...const {ret
0550: 75 72 6e 20 69 64 78 43 6f 75 6e 74 3b 7d 0d 0a  urn idxCount;}..
0560: 09 63 6f 6e 73 74 20 66 69 65 6c 64 5f 69 6e 66  .const field_inf
0570: 6f 26 20 66 69 65 6c 64 28 44 57 4f 52 44 20 70  o& field(DWORD p
0580: 6f 73 29 09 63 6f 6e 73 74 20 7b 72 65 74 75 72  os).const {retur
0590: 6e 20 6d 5f 70 46 69 65 6c 64 73 5b 70 6f 73 5d  n m_pFields[pos]
05a0: 3b 7d 0d 0a 09 63 6f 6e 73 74 20 69 6e 64 65 78  ;}...const index
05b0: 5f 69 6e 66 6f 2a 20 69 6e 64 65 78 28 44 57 4f  _info* index(DWO
05c0: 52 44 20 70 6f 73 29 09 63 6f 6e 73 74 20 7b 72  RD pos).const {r
05d0: 65 74 75 72 6e 20 6d 5f 70 70 49 6e 64 65 78 65  eturn m_ppIndexe
05e0: 73 5b 70 6f 73 5d 3b 7d 0d 0a 09 2f 2f 20 cf ee  s[pos];}...// ..
05f0: eb f3 f7 e8 f2 fc 20 e0 e4 f0 e5 f1 20 e1 f3 f4  ...... ..... ...
0600: e5 f0 e0 20 f2 e0 e1 eb e8 f6 fb 2c 20 e2 20 ea  ... ......., . .
0610: ee f2 ee f0 fb e9 20 e4 e2 e8 e6 ee ea 20 31 d1  ...... ...... 1.
0620: 20 ef ee ec e5 f9 e0 e5 f2 0d 0a 09 2f 2f 20 e4   ...........// .
0630: e0 ed ed fb e5 20 e7 e0 ef e8 f1 e8 20 ef ee f1  ..... ...... ...
0640: eb e5 20 ef e5 f0 e5 ef ee e7 e8 f6 e8 ee ed e8  .. .............
0650: f0 ee e2 e0 ed e8 ff 20 e7 e0 ef e8 f1 e8 2e 0d  ....... ........
0660: 0a 09 2f 2f 20 d2 e0 ea ee e9 20 e1 f3 f4 e5 f0  ..// ..... .....
0670: 20 d2 ce cb dc ca ce 20 ce c4 c8 cd 20 ed e0 20   ...... .... .. 
0680: f2 e0 e1 eb e8 f6 f3 2c 20 f2 ee 20 e5 f1 f2 fc  ......., .. ....
0690: 20 e5 f1 eb e8 20 e5 f1 f2 fc 20 e4 e2 e0 20 f7   .... .... ... .
06a0: e8 f2 e0 fe f9 e8 f5 0d 0a 09 2f 2f 20 43 53 74  ..........// CSt
06b0: 6f 72 65 4f 62 6a 2c 20 f2 ee 20 ef ee f1 eb e5  oreObj, .. .....
06c0: 20 ea e0 ea 20 e2 f2 ee f0 ee e9 20 f7 e8 f2 e0   ... ...... ....
06d0: f2 e5 eb fc 20 ef e5 f0 e5 ec e5 f1 f2 e8 f2 f1  .... ...........
06e0: ff 20 ed e0 20 e4 f0 f3 e3 f3 fe 20 e7 e0 ef e8  . .. ...... ....
06f0: f1 fc 2c 0d 0a 09 2f 2f 20 ef e5 f0 e2 fb e9 20  ..,...// ...... 
0700: e1 f3 e4 e5 f2 20 e2 ee e7 e2 f0 e0 f9 e0 f2 fc  ..... ..........
0710: 20 e4 e0 ed ed fb e5 20 e8 e7 20 ed ee e2 ee e9   ...... .. .....
0720: 20 e7 e0 ef e8 f1 e8 2e 0d 0a 09 63 6f 6e 73 74   ..........const
0730: 20 63 68 61 72 2a 20 74 61 62 6c 65 52 65 61 64   char* tableRead
0740: 42 75 66 65 72 28 29 09 63 6f 6e 73 74 20 7b 72  Bufer().const {r
0750: 65 74 75 72 6e 20 70 54 61 62 6c 65 42 75 66 3b  eturn pTableBuf;
0760: 7d 0d 0a 09 2f 2f 20 d0 e0 e7 ec e5 f0 20 e1 f3  }...// ...... ..
0770: f4 e5 f0 e0 20 e7 e0 ef e8 f1 e8 20 f2 e0 e1 eb  .... ...... ....
0780: e8 f6 fb 2e 0d 0a 09 44 57 4f 52 44 20 72 65 63  .......DWORD rec
0790: 6f 72 64 53 69 7a 65 28 29 09 09 09 09 63 6f 6e  ordSize()....con
07a0: 73 74 20 7b 72 65 74 75 72 6e 20 72 65 63 53 69  st {return recSi
07b0: 7a 65 3b 7d 0d 0a 0d 0a 09 2f 2f 20 c8 f2 e5 f0  ze;}.....// ....
07c0: e0 f2 ee f0 20 e4 eb ff 20 e2 fb ff f1 ed e5 ed  .... ... .......
07d0: e8 ff 2c 20 e2 20 ea e0 ea e8 e5 20 f4 e8 e7 e8  .., . ..... ....
07e0: f7 e5 f1 ea e8 e5 20 e8 ed e4 e5 ea f1 fb 20 e2  ...... ....... .
07f0: f5 ee e4 e8 f2 20 f4 e8 e7 e8 f7 e5 f1 ea ee e5  ..... ..........
0800: 20 ef ee eb e5 0d 0a 09 2f 2f 20 e8 20 ef ee e7   .......// . ...
0810: e8 f6 e8 fe 20 e2 f5 ee e6 e4 e5 ed e8 ff 20 e2  .... ......... .
0820: 20 e8 ed e4 e5 ea f1 e5 0d 0a 09 73 74 72 75 63   ..........struc
0830: 74 20 66 6c 64 32 69 64 78 49 74 0d 0a 09 7b 0d  t fld2idxIt...{.
0840: 0a 09 09 6f 70 65 72 61 74 6f 72 20 42 4f 4f 4c  ...operator BOOL
0850: 28 29 20 7b 72 65 74 75 72 6e 20 70 74 72 20 3c  () {return ptr <
0860: 20 65 6e 64 3b 7d 0d 0a 09 09 44 57 4f 52 44 20   end;}....DWORD 
0870: 69 64 78 4e 75 6d 28 29 09 7b 72 65 74 75 72 6e  idxNum().{return
0880: 20 28 2a 70 74 72 29 20 26 20 30 78 46 46 46 46   (*ptr) & 0xFFFF
0890: 3b 7d 0d 0a 09 09 44 57 4f 52 44 20 66 6c 64 4e  ;}....DWORD fldN
08a0: 75 6d 28 29 09 7b 72 65 74 75 72 6e 20 28 2a 70  um().{return (*p
08b0: 74 72 29 20 3e 3e 20 31 36 3b 7d 0d 0a 09 09 76  tr) >> 16;}....v
08c0: 6f 69 64 20 6f 70 65 72 61 74 6f 72 2b 2b 28 29  oid operator++()
08d0: 20 7b 70 74 72 2b 2b 3b 7d 0d 0a 09 70 72 69 76   {ptr++;}...priv
08e0: 61 74 65 3a 0d 0a 09 09 66 72 69 65 6e 64 20 70  ate:....friend p
08f0: 68 69 73 69 63 61 6c 5f 69 6e 66 6f 3b 0d 0a 09  hisical_info;...
0900: 09 66 6c 64 32 69 64 78 49 74 28 63 6f 6e 73 74  .fld2idxIt(const
0910: 20 44 57 4f 52 44 2a 20 73 2c 20 63 6f 6e 73 74   DWORD* s, const
0920: 20 44 57 4f 52 44 2a 20 65 29 20 3a 20 70 74 72   DWORD* e) : ptr
0930: 28 73 29 2c 20 65 6e 64 28 65 29 7b 7d 0d 0a 09  (s), end(e){}...
0940: 09 63 6f 6e 73 74 20 44 57 4f 52 44 20 2a 70 74  .const DWORD *pt
0950: 72 2c 20 2a 65 6e 64 3b 0d 0a 09 7d 3b 0d 0a 0d  r, *end;...};...
0960: 0a 09 0d 0a 09 66 6c 64 32 69 64 78 49 74 20 66  .....fld2idxIt f
0970: 6c 64 32 69 64 78 28 44 57 4f 52 44 20 66 6c 64  ld2idx(DWORD fld
0980: 29 09 63 6f 6e 73 74 0d 0a 09 7b 0d 0a 09 09 44  ).const...{....D
0990: 57 4f 52 44 20 64 20 3d 20 6d 5f 70 46 69 65 6c  WORD d = m_pFiel
09a0: 64 73 32 49 6e 64 65 78 5b 66 6c 64 5d 3b 0d 0a  ds2Index[fld];..
09b0: 09 09 63 6f 6e 73 74 20 44 57 4f 52 44 20 2a 70  ..const DWORD *p
09c0: 53 20 3d 20 28 44 57 4f 52 44 2a 29 6d 5f 70 46  S = (DWORD*)m_pF
09d0: 69 65 6c 64 73 20 2b 20 4c 4f 57 4f 52 44 28 64  ields + LOWORD(d
09e0: 29 2c 20 2a 70 45 20 3d 20 70 53 20 2b 20 48 49  ), *pE = pS + HI
09f0: 57 4f 52 44 28 64 29 3b 0d 0a 09 09 72 65 74 75  WORD(d);....retu
0a00: 72 6e 20 66 6c 64 32 69 64 78 49 74 28 70 53 2c  rn fld2idxIt(pS,
0a10: 20 70 45 29 3b 0d 0a 09 7d 0d 0a 09 0d 0a 70 72   pE);...}.....pr
0a20: 69 76 61 74 65 3a 0d 0a 09 66 72 69 65 6e 64 20  ivate:...friend 
0a30: 63 6c 61 73 73 20 43 56 74 61 62 49 6e 66 6f 3b  class CVtabInfo;
0a40: 0d 0a 0d 0a 09 70 68 69 73 69 63 61 6c 5f 69 6e  .....phisical_in
0a50: 66 6f 28 29 7b 7d 0d 0a 0d 0a 09 73 74 61 74 69  fo(){}.....stati
0a60: 63 20 70 68 69 73 69 63 61 6c 5f 69 6e 66 6f 2a  c phisical_info*
0a70: 20 62 75 69 6c 64 49 6e 66 6f 28 43 54 61 62 6c   buildInfo(CTabl
0a80: 65 45 78 2a 20 70 54 61 62 6c 65 29 3b 0d 0a 0d  eEx* pTable);...
0a90: 0a 09 63 6f 6e 73 74 20 63 68 61 72 2a 20 70 54  ..const char* pT
0aa0: 61 62 6c 65 42 75 66 3b 0d 0a 09 44 57 4f 52 44  ableBuf;...DWORD
0ab0: 20 72 65 63 53 69 7a 65 3b 0d 0a 09 44 57 4f 52   recSize;...DWOR
0ac0: 44 20 66 6c 64 43 6f 75 6e 74 3b 0d 0a 09 44 57  D fldCount;...DW
0ad0: 4f 52 44 20 69 64 78 43 6f 75 6e 74 3b 0d 0a 09  ORD idxCount;...
0ae0: 44 57 4f 52 44 2a 20 6d 5f 70 46 69 65 6c 64 73  DWORD* m_pFields
0af0: 32 49 6e 64 65 78 3b 0d 0a 09 69 6e 64 65 78 5f  2Index;...index_
0b00: 69 6e 66 6f 2a 2a 20 6d 5f 70 70 49 6e 64 65 78  info** m_ppIndex
0b10: 65 73 3b 0d 0a 09 66 69 65 6c 64 5f 69 6e 66 6f  es;...field_info
0b20: 20 6d 5f 70 46 69 65 6c 64 73 5b 31 5d 3b 0d 0a   m_pFields[1];..
0b30: 09 2f 2f 5b 66 69 65 6c 64 5f 69 6e 66 6f 20 2a  .//[field_info *
0b40: 20 6e 46 69 65 6c 64 73 5d 20 5b 44 57 4f 52 44   nFields] [DWORD
0b50: 20 2a 20 6e 46 69 65 6c 64 73 5d 20 5b 69 6e 64   * nFields] [ind
0b60: 65 78 5f 69 6e 66 30 2a 20 2a 20 6e 49 6e 64 65  ex_inf0* * nInde
0b70: 78 65 73 5d 20 5b 66 6c 64 32 69 64 78 49 74 20  xes] [fld2idxIt 
0b80: 2a 20 66 6c 64 49 6e 49 64 78 5d 20 5b 69 6e 64  * fldInIdx] [ind
0b90: 65 78 5f 69 6e 66 6f 7e 20 2a 20 6e 49 64 65 78  ex_info~ * nIdex
0ba0: 65 73 5d 0d 0a 7d 3b 0d 0a                       es]..};..