Hex Artifact Content Вы: nobody
Вход

Artifact 6a7f0c24a679e5559beed2e09b4c9baa92de9cdc:


0000: 2f 2f 20 66 69 6c 74 65 72 6d 61 63 68 69 6e 65  // filtermachine
0010: 2e 68 0d 0a 23 70 72 61 67 6d 61 20 6f 6e 63 65  .h..#pragma once
0020: 0d 0a 0d 0a 65 6e 75 6d 20 4f 70 43 6f 64 65 73  ....enum OpCodes
0030: 0d 0a 7b 0d 0a 09 73 74 6f 70 2c 0d 0a 09 2f 2f  ..{...stop,...//
0040: 20 d3 f1 f2 e0 ed ee e2 e8 f2 fc 20 ed f3 e6 ed   .......... ....
0050: fb e9 20 e8 ed e4 e5 ea f1 0d 0a 09 73 65 6c 65  .. .........sele
0060: 63 74 49 64 78 2c 0d 0a 09 2f 2f 20 d7 f2 e5 ed  ctIdx,...// ....
0070: e8 e5 20 e0 f0 e3 f3 ec e5 ed f2 ee e2 0d 0a 09  .. .............
0080: 67 65 74 41 72 67 54 65 78 74 2c 0d 0a 09 67 65  getArgText,...ge
0090: 74 41 72 67 4e 75 6d 65 72 69 63 2c 0d 0a 09 67  tArgNumeric,...g
00a0: 65 74 41 72 67 4c 6f 6e 67 2c 0d 0a 09 2f 2f 20  etArgLong,...// 
00b0: d0 e0 e1 ee f2 e0 20 f1 20 f3 f1 eb ee e2 e8 ff  ...... . .......
00c0: ec e8 20 3d 0d 0a 09 73 65 74 45 71 75 61 6c 53  .. =...setEqualS
00d0: 74 72 69 6e 67 2c 0d 0a 09 73 65 74 45 71 75 61  tring,...setEqua
00e0: 6c 4e 75 6d 65 72 69 63 2c 0d 0a 09 73 65 74 45  lNumeric,...setE
00f0: 71 75 61 6c 4c 6f 6e 67 2c 0d 0a 09 0d 0a 09 63  qualLong,......c
0100: 6d 70 53 74 72 69 6e 67 45 71 75 61 6c 5f 45 71  mpStringEqual_Eq
0110: 75 61 6c 2c 0d 0a 09 63 6d 70 4e 75 6d 65 72 69  ual,...cmpNumeri
0120: 63 45 71 75 61 6c 5f 45 71 75 61 6c 2c 0d 0a 09  cEqual_Equal,...
0130: 63 6d 70 4c 6f 6e 67 45 71 75 61 6c 5f 45 71 75  cmpLongEqual_Equ
0140: 61 6c 2c 0d 0a 0d 0a 09 2f 2f 20 d0 e0 e1 ee f2  al,.....// .....
0150: e0 20 f1 20 f3 f1 eb ee e2 e8 ff ec e8 20 3e 0d  . . ......... >.
0160: 0a 09 63 6d 70 53 74 72 69 6e 67 5f 4d 69 6e 5f  ..cmpString_Min_
0170: 45 71 75 61 6c 2c 0d 0a 09 63 6d 70 4e 75 6d 65  Equal,...cmpNume
0180: 72 69 63 5f 4d 69 6e 5f 45 71 75 61 6c 2c 0d 0a  ric_Min_Equal,..
0190: 09 63 6d 70 4c 6f 6e 67 5f 4d 69 6e 5f 45 71 75  .cmpLong_Min_Equ
01a0: 61 6c 2c 0d 0a 09 0d 0a 09 73 65 74 4d 69 6e 53  al,......setMinS
01b0: 74 72 69 6e 67 2c 0d 0a 09 73 65 74 4d 69 6e 4e  tring,...setMinN
01c0: 75 6d 65 72 69 63 2c 0d 0a 09 73 65 74 4d 69 6e  umeric,...setMin
01d0: 4c 6f 6e 67 2c 0d 0a 09 0d 0a 09 73 65 6c 4d 69  Long,......selMi
01e0: 6e 53 74 72 69 6e 67 2c 0d 0a 09 73 65 6c 4d 69  nString,...selMi
01f0: 6e 4e 75 6d 65 72 69 63 2c 0d 0a 09 73 65 6c 4d  nNumeric,...selM
0200: 69 6e 4c 6f 6e 67 2c 0d 0a 0d 0a 09 2f 2f 20 d0  inLong,.....// .
0210: e0 e1 ee f2 e0 20 f1 20 f3 f1 eb ee e2 e8 ff ec  ..... . ........
0220: e8 20 3e 3d 0d 0a 09 63 6d 70 53 74 72 69 6e 67  . >=...cmpString
0230: 5f 4d 69 6e 45 71 5f 45 71 75 61 6c 2c 0d 0a 09  _MinEq_Equal,...
0240: 63 6d 70 4e 75 6d 65 72 69 63 5f 4d 69 6e 45 71  cmpNumeric_MinEq
0250: 5f 45 71 75 61 6c 2c 0d 0a 09 63 6d 70 4c 6f 6e  _Equal,...cmpLon
0260: 67 5f 4d 69 6e 45 71 5f 45 71 75 61 6c 2c 0d 0a  g_MinEq_Equal,..
0270: 09 0d 0a 09 73 65 74 4d 69 6e 45 71 53 74 72 69  ....setMinEqStri
0280: 6e 67 2c 0d 0a 09 73 65 74 4d 69 6e 45 71 4e 75  ng,...setMinEqNu
0290: 6d 65 72 69 63 2c 0d 0a 09 73 65 74 4d 69 6e 45  meric,...setMinE
02a0: 71 4c 6f 6e 67 2c 0d 0a 09 0d 0a 09 73 65 6c 4d  qLong,......selM
02b0: 69 6e 45 71 53 74 72 69 6e 67 2c 0d 0a 09 73 65  inEqString,...se
02c0: 6c 4d 69 6e 45 71 4e 75 6d 65 72 69 63 2c 0d 0a  lMinEqNumeric,..
02d0: 09 73 65 6c 4d 69 6e 45 71 4c 6f 6e 67 2c 0d 0a  .selMinEqLong,..
02e0: 0d 0a 09 2f 2f 20 d0 e0 e1 ee f2 e0 20 f1 20 f3  ...// ...... . .
02f0: f1 eb ee e2 e8 ff ec e8 20 3c 0d 0a 09 63 6d 70  ........ <...cmp
0300: 53 74 72 69 6e 67 5f 4d 61 78 5f 45 71 75 61 6c  String_Max_Equal
0310: 2c 0d 0a 09 63 6d 70 4e 75 6d 65 72 69 63 5f 4d  ,...cmpNumeric_M
0320: 61 78 5f 45 71 75 61 6c 2c 0d 0a 09 63 6d 70 4c  ax_Equal,...cmpL
0330: 6f 6e 67 5f 4d 61 78 5f 45 71 75 61 6c 2c 0d 0a  ong_Max_Equal,..
0340: 0d 0a 09 63 6d 70 53 74 72 69 6e 67 5f 4d 61 78  ...cmpString_Max
0350: 5f 4d 69 6e 69 6d 75 6d 2c 0d 0a 09 63 6d 70 4e  _Minimum,...cmpN
0360: 75 6d 65 72 69 63 5f 4d 61 78 5f 4d 69 6e 69 6d  umeric_Max_Minim
0370: 75 6d 2c 0d 0a 09 63 6d 70 4c 6f 6e 67 5f 4d 61  um,...cmpLong_Ma
0380: 78 5f 4d 69 6e 69 6d 75 6d 2c 0d 0a 0d 0a 09 73  x_Minimum,.....s
0390: 65 74 4d 61 78 53 74 72 69 6e 67 2c 0d 0a 09 73  etMaxString,...s
03a0: 65 74 4d 61 78 4e 75 6d 65 72 69 63 2c 0d 0a 09  etMaxNumeric,...
03b0: 73 65 74 4d 61 78 4c 6f 6e 67 2c 0d 0a 0d 0a 09  setMaxLong,.....
03c0: 73 65 6c 4d 61 78 53 74 72 69 6e 67 2c 0d 0a 09  selMaxString,...
03d0: 73 65 6c 4d 61 78 4e 75 6d 65 72 69 63 2c 0d 0a  selMaxNumeric,..
03e0: 09 73 65 6c 4d 61 78 4c 6f 6e 67 2c 0d 0a 0d 0a  .selMaxLong,....
03f0: 09 2f 2f 20 d0 e0 e1 ee f2 e0 20 f1 20 f3 f1 eb  .// ...... . ...
0400: ee e2 e8 ff ec e8 20 3c 3d 0d 0a 09 63 6d 70 53  ...... <=...cmpS
0410: 74 72 69 6e 67 5f 4d 61 78 45 71 5f 45 71 75 61  tring_MaxEq_Equa
0420: 6c 2c 0d 0a 09 63 6d 70 4e 75 6d 65 72 69 63 5f  l,...cmpNumeric_
0430: 4d 61 78 45 71 5f 45 71 75 61 6c 2c 0d 0a 09 63  MaxEq_Equal,...c
0440: 6d 70 4c 6f 6e 67 5f 4d 61 78 45 71 5f 45 71 75  mpLong_MaxEq_Equ
0450: 61 6c 2c 0d 0a 0d 0a 09 63 6d 70 53 74 72 69 6e  al,.....cmpStrin
0460: 67 5f 4d 61 78 45 71 5f 4d 69 6e 69 6d 75 6d 2c  g_MaxEq_Minimum,
0470: 0d 0a 09 63 6d 70 4e 75 6d 65 72 69 63 5f 4d 61  ...cmpNumeric_Ma
0480: 78 45 71 5f 4d 69 6e 69 6d 75 6d 2c 0d 0a 09 63  xEq_Minimum,...c
0490: 6d 70 4c 6f 6e 67 5f 4d 61 78 45 71 5f 4d 69 6e  mpLong_MaxEq_Min
04a0: 69 6d 75 6d 2c 0d 0a 0d 0a 09 73 65 74 4d 61 78  imum,.....setMax
04b0: 45 71 53 74 72 69 6e 67 2c 0d 0a 09 73 65 74 4d  EqString,...setM
04c0: 61 78 45 71 4e 75 6d 65 72 69 63 2c 0d 0a 09 73  axEqNumeric,...s
04d0: 65 74 4d 61 78 45 71 4c 6f 6e 67 2c 0d 0a 0d 0a  etMaxEqLong,....
04e0: 09 73 65 6c 4d 61 78 45 71 53 74 72 69 6e 67 2c  .selMaxEqString,
04f0: 0d 0a 09 73 65 6c 4d 61 78 45 71 4e 75 6d 65 72  ...selMaxEqNumer
0500: 69 63 2c 0d 0a 09 73 65 6c 4d 61 78 45 71 4c 6f  ic,...selMaxEqLo
0510: 6e 67 2c 0d 0a 09 0d 0a 09 2f 2f 20 ca ee e3 e4  ng,......// ....
0520: e0 20 ee e1 f0 e0 e1 ee f2 e0 ed fb 20 e2 f1 e5  . .......... ...
0530: 20 f3 f1 eb ee e2 e8 ff 20 e4 eb ff 20 ee e4 ed   ....... ... ...
0540: ee e3 ee 20 ef ee eb ff 20 e8 ed e4 e5 ea f1 e0  ... .... .......
0550: 0d 0a 09 73 65 74 46 75 6c 6c 4b 65 79 45 71 75  ...setFullKeyEqu
0560: 61 6c 2c 0d 0a 09 73 65 74 46 75 6c 6c 4b 65 79  al,...setFullKey
0570: 4d 69 6e 69 6d 75 6d 2c 0d 0a 09 73 65 74 46 75  Minimum,...setFu
0580: 6c 6c 4b 65 79 4d 61 78 69 6d 75 6d 2c 0d 0a 0d  llKeyMaximum,...
0590: 0a 09 73 65 74 50 61 72 74 4b 65 79 45 71 75 61  ..setPartKeyEqua
05a0: 6c 54 65 78 74 2c 0d 0a 09 73 65 74 50 61 72 74  lText,...setPart
05b0: 4b 65 79 45 71 75 61 6c 4e 75 6d 65 72 69 63 2c  KeyEqualNumeric,
05c0: 0d 0a 09 73 65 74 50 61 72 74 4b 65 79 45 71 75  ...setPartKeyEqu
05d0: 61 6c 4c 6f 6e 67 2c 0d 0a 0d 0a 09 73 65 74 50  alLong,.....setP
05e0: 61 72 74 4b 65 79 4d 69 6e 69 6d 75 6d 54 65 78  artKeyMinimumTex
05f0: 74 2c 0d 0a 09 73 65 74 50 61 72 74 4b 65 79 4d  t,...setPartKeyM
0600: 69 6e 69 6d 75 6d 4e 75 6d 65 72 69 63 2c 0d 0a  inimumNumeric,..
0610: 09 73 65 74 50 61 72 74 4b 65 79 4d 69 6e 69 6d  .setPartKeyMinim
0620: 75 6d 4c 6f 6e 67 2c 0d 0a 09 0d 0a 09 73 65 74  umLong,......set
0630: 50 61 72 74 4b 65 79 4d 61 78 69 6d 75 6d 54 65  PartKeyMaximumTe
0640: 78 74 2c 0d 0a 09 73 65 74 50 61 72 74 4b 65 79  xt,...setPartKey
0650: 4d 61 78 69 6d 75 6d 4e 75 6d 65 72 69 63 2c 0d  MaximumNumeric,.
0660: 0a 09 73 65 74 50 61 72 74 4b 65 79 4d 61 78 69  ..setPartKeyMaxi
0670: 6d 75 6d 4c 6f 6e 67 2c 0d 0a 0d 0a 09 2f 2f 20  mumLong,.....// 
0680: c7 e0 ef ee ec ed e8 f2 fc 20 ed ee ec e5 f0 20  ......... ..... 
0690: e7 e0 ef e8 f1 e8 20 ef f0 e8 20 ef e5 f0 e5 f5  ...... ... .....
06a0: ee e4 e5 20 ef ee 20 ed ee ec e5 f0 f3 20 e7 e0  ... .. ...... ..
06b0: ef e8 f1 e8 0d 0a 09 73 74 6f 72 65 52 65 63 4e  .......storeRecN
06c0: 6f 2c 0d 0a 09 0d 0a 09 2f 2f 20 ca ee e3 e4 e0  o,......// .....
06d0: 20 ee e1 f0 e0 e1 ee f2 e0 ed fb 20 e2 f1 e5 20   .......... ... 
06e0: f3 f1 eb ee e2 e8 ff 20 e4 eb ff 20 ee e4 ed ee  ....... ... ....
06f0: e3 ee 20 ef ee eb ff 2c 20 ed e5 20 e2 f5 ee e4  .. ...., .. ....
0700: ff f9 e5 e3 ee 20 e2 20 e8 ed e4 e5 ea f1 0d 0a  ..... . ........
0710: 09 61 64 64 54 65 73 74 45 71 75 61 6c 54 65 78  .addTestEqualTex
0720: 74 2c 0d 0a 09 61 64 64 54 65 73 74 45 71 75 61  t,...addTestEqua
0730: 6c 4e 75 6d 65 72 69 63 2c 0d 0a 09 61 64 64 54  lNumeric,...addT
0740: 65 73 74 45 71 75 61 6c 4c 6f 6e 67 2c 0d 0a 09  estEqualLong,...
0750: 61 64 64 54 65 73 74 45 71 75 61 6c 52 65 63 4e  addTestEqualRecN
0760: 6f 2c 0d 0a 0d 0a 09 61 64 64 54 65 73 74 4d 69  o,.....addTestMi
0770: 6e 69 6d 75 6d 54 65 78 74 2c 0d 0a 09 61 64 64  nimumText,...add
0780: 54 65 73 74 4d 69 6e 69 6d 75 6d 4e 75 6d 65 72  TestMinimumNumer
0790: 69 63 2c 0d 0a 09 61 64 64 54 65 73 74 4d 69 6e  ic,...addTestMin
07a0: 69 6d 75 6d 4c 6f 6e 67 2c 0d 0a 09 61 64 64 54  imumLong,...addT
07b0: 65 73 74 4d 69 6e 69 6d 75 6d 52 65 63 4e 6f 2c  estMinimumRecNo,
07c0: 0d 0a 0d 0a 09 61 64 64 54 65 73 74 4d 61 78 69  .....addTestMaxi
07d0: 6d 75 6d 54 65 78 74 2c 0d 0a 09 61 64 64 54 65  mumText,...addTe
07e0: 73 74 4d 61 78 69 6d 75 6d 4e 75 6d 65 72 69 63  stMaximumNumeric
07f0: 2c 0d 0a 09 61 64 64 54 65 73 74 4d 61 78 69 6d  ,...addTestMaxim
0800: 75 6d 4c 6f 6e 67 2c 0d 0a 09 61 64 64 54 65 73  umLong,...addTes
0810: 74 4d 61 78 69 6d 75 6d 52 65 63 4e 6f 2c 0d 0a  tMaximumRecNo,..
0820: 0d 0a 0d 0a 0d 0a 2f 2f 2f 2f 20 c2 fb e1 ee f0  ......//// .....
0830: 20 f1 f2 e0 f0 f2 ee e2 ee e3 ee 20 e8 20 ea ee   .......... . ..
0840: ed e5 f7 ed ee e3 ee 20 ea eb fe f7 e0 0d 0a 2f  ....... ......./
0850: 2a 0d 0a c2 fb e1 ee f0 20 ed e0 e8 ec e5 ed fc  *....... .......
0860: f8 e5 e3 ee 20 ea eb fe f7 e0 2e 0d 0a c2 ee e7  .... ...........
0870: ec ee e6 ed fb 20 e2 e0 f0 e8 e0 ed f2 fb 3a 0d  ..... ........:.
0880: 0a c7 e0 e4 e0 ed 20 ec e8 ed 2d ef ee eb ed fb  ...... ...-.....
0890: e9 20 ea eb fe f7 0d 0a c7 e0 e4 e0 ed 20 f1 f2  . ........... ..
08a0: f0 ee e3 e8 e9 20 ef ee eb ed fb e9 20 ea eb fe  ..... ...... ...
08b0: f7 0d 0a c7 e0 e4 e0 ed 20 ec e8 ed 2d f7 e0 f1  ........ ...-...
08c0: f2 e8 f7 ed fb e9 20 ea eb fe f7 0d 0a c7 e0 e4  ...... .........
08d0: e0 ed 20 f1 f2 f0 ee e3 e8 e9 20 f7 e0 f1 f2 e8  .. ....... .....
08e0: f7 ed fb e9 20 ea eb fe f7 0d 0a c7 e0 e4 e0 ed  .... ...........
08f0: 20 ec e8 ed 2d ef ee eb ed fb e9 20 ea eb fe f7   ...-...... ....
0900: 20 e8 20 ec e8 ed 2d f7 e0 f1 f2 e8 f7 ed fb e9   . ...-.........
0910: 20 ea eb fe f7 0d 0a c7 e0 e4 e0 ed 20 ec e8 ed   ........... ...
0920: 2d ef ee eb ed fb e9 20 ea eb fe f7 20 e8 20 f1  -...... .... . .
0930: f2 f0 ee e3 e8 e9 20 f7 e0 f1 f2 e8 f7 ed fb e9  ...... .........
0940: 20 ea eb fe f7 0d 0a c7 e0 e4 e0 ed 20 f1 f2 f0   ........... ...
0950: ee e3 e8 e9 20 ef ee eb ed fb e9 20 ea eb fe f7  .... ...... ....
0960: 20 e8 20 ec e8 ed 2d f7 e0 f1 f2 e8 f7 ed fb e9   . ...-.........
0970: 20 ea eb fe f7 0d 0a c7 e0 e4 e0 ed 20 f1 f2 f0   ........... ...
0980: ee e3 e8 e9 20 ef ee eb ed fb e9 20 ea eb fe f7  .... ...... ....
0990: 20 e8 20 f1 f2 f0 ee e3 e8 e9 20 f7 e0 f1 f2 e8   . ....... .....
09a0: f7 ed fb e9 20 ea eb fe f7 2e 0d 0a cd f3 e6 ed  .... ...........
09b0: ee 20 f1 f0 e0 e2 ed e5 ed e8 e5 ec 20 ea eb fe  . .......... ...
09c0: f7 e5 e9 20 ee ef f0 e5 e4 e5 eb e8 f2 fc 2c 20  ... .........., 
09d0: f7 f2 ee 20 e8 e7 20 fd f2 ee e3 ee 20 e1 f3 e4  ... .. ..... ...
09e0: e5 f2 20 e8 f1 ef ee eb fc e7 ee e2 e0 f2 fc f1  .. .............
09f0: ff 20 ea e0 ea 20 ec e8 ed 2d ea eb fe f7 0d 0a  . ... ...-......
0a00: c2 e0 f0 e8 e0 ed f2 fb 20 ee f2 e2 e5 f2 e0 20  ........ ...... 
0a10: 2d 20 ec e8 ed 2d ef ee eb ed fb e9 20 ea eb fe  - ...-...... ...
0a20: f7 2c 20 f1 f2 f0 ee e3 e8 e9 2d ef ee eb ed fb  ., .......-.....
0a30: e9 20 ea eb fe f7 2c 20 ec e8 ed 2d f7 e0 f1 f2  . ...., ...-....
0a40: e8 f7 ed fb e9 20 ea eb fe f7 2c 20 f1 f2 f0 ee  ..... ...., ....
0a50: e3 e8 e9 20 f7 e0 f1 f2 e8 f7 ed fb e9 20 ea eb  ... ......... ..
0a60: fe f7 2e 0d 0a 2a 2f 0d 0a 09 2f 2f 20 d3 f1 f2  .....*/...// ...
0a70: e0 ed ee e2 e8 f2 fc 20 ec e8 ed e8 ec e0 eb fc  ....... ........
0a80: ed fb e9 20 ea eb fe f7 20 f0 e0 e2 ed fb e9 20  ... .... ...... 
0a90: ed e0 e8 ec e5 ed fc f8 e5 ec f3 20 ef ee eb ed  ........... ....
0aa0: ee ec f3 0d 0a 09 73 65 74 4d 69 6e 4b 65 79 5f  ......setMinKey_
0ab0: 46 4b 4d 69 6e 2c 0d 0a 09 2f 2f 20 d3 f1 f2 e0  FKMin,...// ....
0ac0: ed ee e2 e8 f2 fc 20 ec e8 ed e8 ec e0 eb fc ed  ...... .........
0ad0: fb e9 20 ea eb fe f7 20 f0 e0 e2 ed fb e9 20 f1  .. .... ...... .
0ae0: f2 f0 ee e3 ee ec f3 20 ef ee eb ed ee ec f3 0d  ....... ........
0af0: 0a 09 73 65 74 4d 69 6e 4b 65 79 5f 46 4b 45 71  ..setMinKey_FKEq
0b00: 75 61 6c 2c 0d 0a 09 2f 2f 20 d3 f1 f2 e0 ed ee  ual,...// ......
0b10: e2 e8 f2 fc 20 ec e8 ed e8 ec e0 eb fc ed fb e9  .... ...........
0b20: 20 ea eb fe f7 20 f0 e0 e2 ed fb e9 20 ed e0 e8   .... ...... ...
0b30: ec e5 ed fc f8 e5 ec f3 20 f7 e0 f1 f2 e8 f7 ed  ........ .......
0b40: ee ec f3 0d 0a 09 73 65 74 4d 69 6e 4b 65 79 5f  ......setMinKey_
0b50: 50 4b 4d 69 6e 2c 0d 0a 09 2f 2f 20 d3 f1 f2 e0  PKMin,...// ....
0b60: ed ee e2 e8 f2 fc 20 ec e8 ed e8 ec e0 eb fc ed  ...... .........
0b70: fb e9 20 ea eb fe f7 20 f0 e0 e2 ed fb e9 20 f1  .. .... ...... .
0b80: f2 f0 ee e3 ee ec f3 20 f7 e0 f1 f2 e8 f7 ed ee  ....... ........
0b90: ec f3 0d 0a 09 73 65 74 4d 69 6e 4b 65 79 5f 50  .....setMinKey_P
0ba0: 4b 45 71 75 61 6c 2c 0d 0a 09 2f 2f 20 c2 fb e1  KEqual,...// ...
0bb0: f0 e0 f2 fc 20 ec e8 ed e8 ec e0 eb fc ed fb e9  .... ...........
0bc0: 20 ea eb fe f7 20 e8 e7 20 ed e0 e8 ec e5 ed fc   .... .. .......
0bd0: f8 e5 e3 ee 20 ef ee eb ed ee e3 ee 20 e8 20 ed  .... ....... . .
0be0: e0 e8 ec e5 ed fc f8 e5 e3 ee 20 f7 e0 f1 f2 e8  .......... .....
0bf0: f7 ed ee e3 ee 0d 0a 09 73 65 6c 4d 69 6e 4b 65  ........selMinKe
0c00: 79 5f 46 4b 4d 69 6e 5f 50 4b 4d 69 6e 2c 0d 0a  y_FKMin_PKMin,..
0c10: 09 2f 2f 20 c2 fb e1 f0 e0 f2 fc 20 ec e8 ed e8  .// ....... ....
0c20: ec e0 eb fc ed fb e9 20 ea eb fe f7 20 e8 e7 20  ....... .... .. 
0c30: ed e0 e8 ec e5 ed fc f8 e5 e3 ee 20 ef ee eb ed  ........... ....
0c40: ee e3 ee 20 e8 20 f1 f2 f0 ee e3 ee e3 ee 20 f7  ... . ........ .
0c50: e0 f1 f2 e8 f7 ed ee e3 ee 0d 0a 09 73 65 6c 4d  ............selM
0c60: 69 6e 4b 65 79 5f 46 4b 4d 69 6e 5f 50 4b 45 71  inKey_FKMin_PKEq
0c70: 75 61 6c 2c 0d 0a 09 2f 2f 20 c2 fb e1 f0 e0 f2  ual,...// ......
0c80: fc 20 ec e8 ed e8 ec e0 eb fc ed fb e9 20 ea eb  . ........... ..
0c90: fe f7 20 e8 e7 20 f1 f2 f0 ee e3 ee e3 ee 20 ef  .. .. ........ .
0ca0: ee eb ed ee e3 ee 20 e8 20 ed e0 e8 ec e5 ed fc  ...... . .......
0cb0: f8 e5 e3 ee 20 f7 e0 f1 f2 e8 f7 ed ee e3 ee 0d  .... ...........
0cc0: 0a 09 73 65 6c 4d 69 6e 4b 65 79 5f 46 4b 45 71  ..selMinKey_FKEq
0cd0: 75 61 6c 5f 50 4b 4d 69 6e 2c 0d 0a 09 2f 2f 20  ual_PKMin,...// 
0ce0: c2 fb e1 f0 e0 f2 fc 20 ec e8 ed e8 ec e0 eb fc  ....... ........
0cf0: ed fb e9 20 ea eb fe f7 20 e8 e7 20 f1 f2 f0 ee  ... .... .. ....
0d00: e3 ee e3 ee 20 ef ee eb ed ee e3 ee 20 e8 20 f1  .... ....... . .
0d10: f2 f0 ee e3 ee e3 ee 20 f7 e0 f1 f2 e8 f7 ed ee  ....... ........
0d20: e3 ee 0d 0a 09 73 65 6c 4d 69 6e 4b 65 79 5f 46  .....selMinKey_F
0d30: 4b 45 71 75 61 6c 5f 50 4b 45 71 75 61 6c 2c 0d  KEqual_PKEqual,.
0d40: 0a 2f 2f 20 c2 fb e1 ee f0 20 ed e0 e8 e1 ee eb  .// ..... ......
0d50: fc f8 e5 e3 ee 20 ea eb fe f7 e0 20 2d 20 e0 ed  ..... ..... - ..
0d60: e0 eb ee e3 e8 f7 ed ee 20 ed e0 e8 ec e5 ed fc  ........ .......
0d70: f8 e5 ec f3 2e 0d 0a 09 2f 2f 20 d3 f1 f2 e0 ed  ........// .....
0d80: ee e2 e8 f2 fc 20 ec e0 ea f1 e8 ec e0 eb fc ed  ..... ..........
0d90: fb e9 20 ea eb fe f7 20 f0 e0 e2 ed fb e9 20 ec  .. .... ...... .
0da0: e0 ea f1 e8 ec e0 eb fc ed ee ec f3 20 ef ee eb  ............ ...
0db0: ed ee ec f3 0d 0a 09 73 65 74 4d 61 78 4b 65 79  .......setMaxKey
0dc0: 5f 46 4b 4d 61 78 2c 0d 0a 09 2f 2f 20 d3 f1 f2  _FKMax,...// ...
0dd0: e0 ed ee e2 e8 f2 fc 20 ec e0 ea f1 e8 ec e0 eb  ....... ........
0de0: fc ed fb e9 20 ea eb fe f7 20 f0 e0 e2 ed fb e9  .... .... ......
0df0: 20 f1 f2 f0 ee e3 ee ec f3 20 ef ee eb ed ee ec   ........ ......
0e00: f3 0d 0a 09 73 65 74 4d 61 78 4b 65 79 5f 46 4b  ....setMaxKey_FK
0e10: 45 71 75 61 6c 2c 0d 0a 09 2f 2f 20 d3 f1 f2 e0  Equal,...// ....
0e20: ed ee e2 e8 f2 fc 20 ec e0 ea f1 e8 ec e0 eb fc  ...... .........
0e30: ed fb e9 20 ea eb fe f7 20 f0 e0 e2 ed fb e9 20  ... .... ...... 
0e40: ec e0 ea f1 e8 ec e0 eb fc ed ee ec f3 20 f7 e0  ............. ..
0e50: f1 f2 e8 f7 ed ee ec f3 0d 0a 09 73 65 74 4d 61  ...........setMa
0e60: 78 4b 65 79 5f 50 4b 4d 61 78 2c 0d 0a 09 2f 2f  xKey_PKMax,...//
0e70: 20 d3 f1 f2 e0 ed ee e2 e8 f2 fc 20 ec e0 ea f1   .......... ....
0e80: e8 ec e0 eb fc ed fb e9 20 ea eb fe f7 20 f0 e0  ........ .... ..
0e90: e2 ed fb e9 20 f1 f2 f0 ee e3 ee ec f3 20 f7 e0  .... ........ ..
0ea0: f1 f2 e8 f7 ed ee ec f3 0d 0a 09 73 65 74 4d 61  ...........setMa
0eb0: 78 4b 65 79 5f 50 4b 45 71 75 61 6c 2c 0d 0a 09  xKey_PKEqual,...
0ec0: 2f 2f 20 c2 fb e1 f0 e0 f2 fc 20 ec e0 ea f1 e8  // ....... .....
0ed0: ec e0 eb fc ed fb e9 20 ea eb fe f7 20 e8 e7 20  ....... .... .. 
0ee0: ed e0 e8 e1 ee eb fc f8 e5 e3 ee 20 ef ee eb ed  ........... ....
0ef0: ee e3 ee 20 e8 20 ed e0 e8 e1 ee eb fc f8 e5 e3  ... . ..........
0f00: ee 20 f7 e0 f1 f2 e8 f7 ed ee e3 ee 0d 0a 09 73  . .............s
0f10: 65 6c 4d 61 78 4b 65 79 5f 46 4b 4d 61 78 5f 50  elMaxKey_FKMax_P
0f20: 4b 4d 61 78 2c 0d 0a 09 2f 2f 20 c2 fb e1 f0 e0  KMax,...// .....
0f30: f2 fc 20 ec e0 ea f1 e8 ec e0 eb fc ed fb e9 20  .. ............ 
0f40: ea eb fe f7 20 e8 e7 20 ed e0 e8 e1 ee eb fc f8  .... .. ........
0f50: e5 e3 ee 20 ef ee eb ed ee e3 ee 20 e8 20 f1 f2  ... ....... . ..
0f60: f0 ee e3 ee e3 ee 20 f7 e0 f1 f2 e8 f7 ed ee e3  ...... .........
0f70: ee 0d 0a 09 73 65 6c 4d 61 78 4b 65 79 5f 46 4b  ....selMaxKey_FK
0f80: 4d 61 78 5f 50 4b 45 71 75 61 6c 2c 0d 0a 09 2f  Max_PKEqual,.../
0f90: 2f 20 c2 fb e1 f0 e0 f2 fc 20 ec e0 ea f1 e8 ec  / ....... ......
0fa0: e0 eb fc ed fb e9 20 ea eb fe f7 20 e8 e7 20 f1  ...... .... .. .
0fb0: f2 f0 ee e3 ee e3 ee 20 ef ee eb ed ee e3 ee 20  ....... ....... 
0fc0: e8 20 ed e0 e8 e1 ee eb fc f8 e5 e3 ee 20 f7 e0  . ........... ..
0fd0: f1 f2 e8 f7 ed ee e3 ee 0d 0a 09 73 65 6c 4d 61  ...........selMa
0fe0: 78 4b 65 79 5f 46 4b 45 71 75 61 6c 5f 50 4b 4d  xKey_FKEqual_PKM
0ff0: 61 78 2c 0d 0a 09 2f 2f 20 c2 fb e1 f0 e0 f2 fc  ax,...// .......
1000: 20 ec e0 ea f1 e8 ec e0 eb fc ed fb e9 20 ea eb   ............ ..
1010: fe f7 20 e8 e7 20 f1 f2 f0 ee e3 ee e3 ee 20 ef  .. .. ........ .
1020: ee eb ed ee e3 ee 20 e8 20 f1 f2 f0 ee e3 ee e3  ...... . .......
1030: ee 20 f7 e0 f1 f2 e8 f7 ed ee e3 ee 0d 0a 09 73  . .............s
1040: 65 6c 4d 61 78 4b 65 79 5f 46 4b 45 71 75 61 6c  elMaxKey_FKEqual
1050: 5f 50 4b 45 71 75 61 6c 2c 0d 0a 0d 0a 2f 2f 20  _PKEqual,....// 
1060: d1 f0 e0 e2 ed e5 ed e8 e5 20 ec e0 ea f1 20 e8  ......... .... .
1070: 20 ec e8 ed 20 ea eb fe f7 e5 e9 2e 0d 0a 2f 2f   ... .........//
1080: 20 c5 f1 eb e8 20 e4 e8 e0 ef e0 e7 ee ed 20 ee   .... ........ .
1090: e3 f0 e0 ed e8 f7 e5 ed 20 f1 20 ee e1 ee e8 f5  ........ . .....
10a0: 20 f1 f2 ee f0 ee ed 2c 20 e8 20 f5 ee f2 ff 20   ......, . .... 
10b0: e1 fb 20 e4 eb ff 20 ee e4 ed ee e9 20 e3 f0 e0  .. ... ..... ...
10c0: ed e8 f6 fb 20 e1 fb eb 20 e2 fb e1 ee f0 20 e8  .... ... ..... .
10d0: e7 20 e4 e2 f3 f5 20 e2 e0 f0 e8 e0 ed f2 ee e2  . .... .........
10e0: 0d 0a 2f 2f 20 ea eb fe f7 e5 e9 2c 20 f2 ee 20  ..// ......, .. 
10f0: ed e0 e4 ee 20 ef f0 ee e2 e5 f0 e8 f2 fc 20 f0  .... ......... .
1100: e5 e7 f3 eb fc f2 e8 f0 f3 fe f9 e8 e5 20 ea eb  ............. ..
1110: fe f7 e8 2c 20 f7 f2 ee 20 ee ed e8 20 ed e5 20  ..., ... ... .. 
1120: e4 e0 eb e8 20 ef f3 f1 f2 ee e9 20 e4 e8 e0 ef  .... ...... ....
1130: e0 e7 ee ed 0d 0a 2f 2f 20 f2 e5 20 ec e8 ed 20  ......// .. ... 
1140: ea eb fe f7 20 e4 ee eb e6 e5 ed 20 e1 fb f2 fc  .... ...... ....
1150: 20 ed e5 20 e1 ee eb fc f8 e5 20 ec e0 ea f1 e8   .. ...... .....
1160: ec e0 eb fc ed ee e3 ee 2e 20 c5 f1 eb e8 20 f1  ......... .... .
1170: 20 ee e1 ee e8 f5 20 e3 f0 e0 ed e8 f6 20 e4 e8   ..... ...... ..
1180: e0 ef e0 e7 ee ed e0 20 e8 f1 ef ee eb fc e7 ee  ....... ........
1190: e2 e0 eb e8 f1 fc 0d 0a 2f 2f 20 ea eb fe f7 e8  ........// .....
11a0: 20 ee e4 ed ee e3 ee 20 f2 e8 ef e0 2c 20 f2 ee   ...... ...., ..
11b0: 20 f2 e0 ea f3 fe 20 ef f0 ee e2 e5 f0 ea f3 20   ..... ........ 
11c0: e4 e5 eb e0 f2 fc 20 ed e5 20 ed e0 e4 ee 2c 20  ...... .. ...., 
11d0: f2 e0 ea 20 ea e0 ea 20 ee ed e0 20 e4 e5 eb e0  ... ... ... ....
11e0: eb e0 e5 f2 f1 ff 20 ef f0 e8 20 ef ee f1 f2 f0  ...... ... .....
11f0: ee e5 ed e8 e8 0d 0a 2f 2f 20 ea eb fe f7 e5 e9  .......// ......
1200: 2e 0d 0a 09 63 6d 70 4d 69 6e 4d 61 78 4b 65 79  ....cmpMinMaxKey
1210: 73 2c 0d 0a 0d 0a 2f 2f 2f 2f 20 c2 fb e1 ee f0  s,....//// .....
1220: ea e0 0d 0a 09 2f 2f 20 c8 e4 f2 e8 20 ee f2 20  .....// .... .. 
1230: ed e0 f7 e0 eb e0 20 e4 ee 20 ea ee ed f6 e0 0d  ...... .. ......
1240: 0a 09 67 6f 74 6f 46 69 72 73 74 54 6f 4c 61 73  ..gotoFirstToLas
1250: 74 2c 0d 0a 09 2f 2f 20 c8 e4 f2 e8 20 ee f2 20  t,...// .... .. 
1260: ed e0 f7 e0 eb e0 20 e4 ee 20 ec e0 ea f1 e8 ec  ...... .. ......
1270: e0 eb fc ed ee e3 ee 20 ea eb fe f7 e0 0d 0a 09  ....... ........
1280: 67 6f 74 6f 46 69 72 73 74 54 6f 4d 61 78 2c 0d  gotoFirstToMax,.
1290: 0a 09 2f 2f 20 c8 e4 f2 e8 20 ee f2 20 ec e8 ed  ..// .... .. ...
12a0: e8 ec e0 eb fc ed ee e3 ee 20 ea eb fe f7 e0 20  ......... ..... 
12b0: e4 ee 20 ea ee ed f6 e0 0d 0a 09 67 6f 74 6f 4d  .. ........gotoM
12c0: 69 6e 54 6f 4c 61 73 74 2c 0d 0a 09 2f 2f 20 c8  inToLast,...// .
12d0: e4 f2 e8 20 ee f2 20 ec e8 ed e8 ec e0 eb fc ed  ... .. .........
12e0: ee e3 ee 20 ea eb fe f7 e0 20 e4 ee 20 ea ee ed  ... ..... .. ...
12f0: e5 f7 ed ee e3 ee 20 ea eb fe f7 e0 0d 0a 09 67  ...... ........g
1300: 6f 74 6f 4d 69 6e 54 6f 4d 61 78 2c 0d 0a 09 2f  otoMinToMax,.../
1310: 2f 20 c8 e4 f2 e8 20 ee f2 20 ea ee ed f6 e0 20  / .... .. ..... 
1320: e4 ee 20 ed e0 f7 e0 eb e0 0d 0a 09 67 6f 74 6f  .. .........goto
1330: 4c 61 73 74 54 6f 46 69 72 73 74 2c 0d 0a 09 2f  LastToFirst,.../
1340: 2f 20 c8 e4 f2 e8 20 ee f2 20 ea ee ed e5 f7 ed  / .... .. ......
1350: ee e3 ee 20 ea eb fe f7 e0 20 e4 ee 20 ed e0 f7  ... ..... .. ...
1360: e0 eb e0 0d 0a 09 67 6f 74 6f 4d 61 78 54 6f 46  ......gotoMaxToF
1370: 69 72 73 74 2c 0d 0a 09 2f 2f 20 c8 e4 f2 e8 20  irst,...// .... 
1380: ee f2 20 ea ee ed f6 e0 20 e4 ee 20 ec e8 ed e8  .. ..... .. ....
1390: ec e0 eb fc ed ee e3 ee 20 ea eb fe f7 e0 0d 0a  ........ .......
13a0: 09 67 6f 74 6f 4c 61 73 74 54 6f 4d 69 6e 2c 0d  .gotoLastToMin,.
13b0: 0a 09 2f 2f 20 c8 e4 f2 e8 20 ee f2 20 ea ee ed  ..// .... .. ...
13c0: e5 f7 ed ee e3 ee 20 ea eb fe f7 e0 20 e4 ee 20  ...... ..... .. 
13d0: ec e8 ed e8 ec e0 eb fc ed ee e3 ee 20 ea eb fe  ............ ...
13e0: f7 e0 0d 0a 09 67 6f 74 6f 4d 61 78 54 6f 4d 69  .....gotoMaxToMi
13f0: 6e 2c 0d 0a 09 2f 2f 20 cf e5 f0 e5 e9 f2 e8 20  n,...// ....... 
1400: ef ee 20 ed ee ec e5 f0 f3 20 e7 e0 ef e8 f1 e8  .. ...... ......
1410: 0d 0a 09 67 6f 74 6f 54 6f 52 6f 77 2c 0d 0a 0d  ...gotoToRow,...
1420: 0a 09 6c 61 73 74 4f 70 43 6f 64 65 0d 0a 7d 3b  ..lastOpCode..};
1430: 0d 0a 0d 0a 73 74 72 75 63 74 20 63 75 72 73 6f  ....struct curso
1440: 72 5f 64 61 74 61 3b 0d 0a 63 6c 61 73 73 20 73  r_data;..class s
1450: 65 6c 65 63 74 5f 69 74 65 72 61 74 6f 72 3b 0d  elect_iterator;.
1460: 0a 63 6c 61 73 73 20 43 56 74 61 62 49 6e 66 6f  .class CVtabInfo
1470: 3b 0d 0a 0d 0a 73 74 72 75 63 74 20 74 65 73 74  ;....struct test
1480: 43 6f 6e 73 74 72 61 69 6e 74 0d 0a 7b 0d 0a 09  Constraint..{...
1490: 76 69 72 74 75 61 6c 20 42 4f 4f 4c 20 74 65 73  virtual BOOL tes
14a0: 74 28 63 6f 6e 73 74 20 63 75 72 73 6f 72 5f 64  t(const cursor_d
14b0: 61 74 61 26 20 63 75 72 73 6f 72 29 20 3d 20 30  ata& cursor) = 0
14c0: 3b 0d 0a 09 76 69 72 74 75 61 6c 20 7e 74 65 73  ;...virtual ~tes
14d0: 74 43 6f 6e 73 74 72 61 69 6e 74 28 29 20 7b 20  tConstraint() { 
14e0: 64 65 6c 65 74 65 20 6e 65 78 74 3b 20 7d 0d 0a  delete next; }..
14f0: 0d 0a 09 73 74 61 74 69 63 20 42 4f 4f 4c 20 64  ...static BOOL d
1500: 6f 54 65 73 74 28 74 65 73 74 43 6f 6e 73 74 72  oTest(testConstr
1510: 61 69 6e 74 2a 20 70 74 72 2c 20 63 6f 6e 73 74  aint* ptr, const
1520: 20 63 75 72 73 6f 72 5f 64 61 74 61 26 20 63 75   cursor_data& cu
1530: 72 73 6f 72 29 0d 0a 09 7b 0d 0a 09 09 77 68 69  rsor)...{....whi
1540: 6c 65 28 70 74 72 29 0d 0a 09 09 7b 0d 0a 09 09  le(ptr)....{....
1550: 09 69 66 28 21 70 74 72 2d 3e 74 65 73 74 28 63  .if(!ptr->test(c
1560: 75 72 73 6f 72 29 29 0d 0a 09 09 09 09 72 65 74  ursor))......ret
1570: 75 72 6e 20 46 41 4c 53 45 3b 0d 0a 09 09 09 70  urn FALSE;.....p
1580: 74 72 20 3d 20 70 74 72 2d 3e 6e 65 78 74 3b 0d  tr = ptr->next;.
1590: 0a 09 09 7d 0d 0a 09 09 72 65 74 75 72 6e 20 54  ...}....return T
15a0: 52 55 45 3b 0d 0a 09 7d 0d 0a 09 74 65 73 74 43  RUE;...}...testC
15b0: 6f 6e 73 74 72 61 69 6e 74 28 74 65 73 74 43 6f  onstraint(testCo
15c0: 6e 73 74 72 61 69 6e 74 2a 26 20 70 29 20 3a 20  nstraint*& p) : 
15d0: 6e 65 78 74 28 70 29 20 7b 70 20 3d 20 74 68 69  next(p) {p = thi
15e0: 73 3b 7d 0d 0a 09 73 74 61 74 69 63 20 76 6f 69  s;}...static voi
15f0: 64 20 61 70 70 65 6e 64 28 74 65 73 74 43 6f 6e  d append(testCon
1600: 73 74 72 61 69 6e 74 2a 26 20 72 65 74 2c 20 74  straint*& ret, t
1610: 65 73 74 43 6f 6e 73 74 72 61 69 6e 74 2a 26 20  estConstraint*& 
1620: 6e 31 2c 20 74 65 73 74 43 6f 6e 73 74 72 61 69  n1, testConstrai
1630: 6e 74 2a 26 20 6e 32 29 0d 0a 09 7b 0d 0a 09 09  nt*& n2)...{....
1640: 72 65 74 20 3d 20 6e 31 3b 0d 0a 09 09 6e 31 2d  ret = n1;....n1-
1650: 3e 6e 65 78 74 20 3d 20 6e 32 3b 0d 0a 09 09 6e  >next = n2;....n
1660: 32 20 3d 20 4e 55 4c 4c 3b 0d 0a 09 09 6e 31 20  2 = NULL;....n1 
1670: 3d 20 4e 55 4c 4c 3b 0d 0a 09 7d 0d 0a 70 72 6f  = NULL;...}..pro
1680: 74 65 63 74 65 64 3a 0d 0a 09 74 65 73 74 43 6f  tected:...testCo
1690: 6e 73 74 72 61 69 6e 74 2a 20 6e 65 78 74 3b 0d  nstraint* next;.
16a0: 0a 7d 3b 0d 0a 0d 0a 0d 0a 63 6c 61 73 73 20 46  .};......class F
16b0: 69 6c 74 65 72 4d 61 63 68 69 6e 65 0d 0a 7b 0d  ilterMachine..{.
16c0: 0a 70 75 62 6c 69 63 3a 0d 0a 09 46 69 6c 74 65  .public:...Filte
16d0: 72 4d 61 63 68 69 6e 65 28 63 6f 6e 73 74 20 43  rMachine(const C
16e0: 56 74 61 62 49 6e 66 6f 26 20 74 2c 20 63 75 72  VtabInfo& t, cur
16f0: 73 6f 72 5f 64 61 74 61 26 20 63 29 0d 0a 09 09  sor_data& c)....
1700: 3a 20 6d 5f 70 50 4b 45 71 43 6f 6e 73 74 72 28  : m_pPKEqConstr(
1710: 4e 55 4c 4c 29 2c 20 6d 5f 70 50 4b 4d 69 6e 43  NULL), m_pPKMinC
1720: 6f 6e 73 74 72 28 4e 55 4c 4c 29 2c 20 6d 5f 70  onstr(NULL), m_p
1730: 50 4b 4d 61 78 43 6f 6e 73 74 72 28 4e 55 4c 4c  PKMaxConstr(NULL
1740: 29 2c 20 6d 5f 70 41 64 64 69 74 69 6f 6e 61 6c  ), m_pAdditional
1750: 54 65 73 74 73 28 4e 55 4c 4c 29 2c 0d 0a 09 09  Tests(NULL),....
1760: 6d 5f 74 61 62 6c 65 28 74 29 2c 20 6d 5f 63 75  m_table(t), m_cu
1770: 72 73 6f 72 28 63 29 0d 0a 09 7b 0d 0a 09 09 6d  rsor(c)...{....m
1780: 5f 68 61 72 64 43 75 72 4d 69 6e 20 3d 0d 0a 09  _hardCurMin =...
1790: 09 6d 5f 68 61 72 64 43 75 72 4d 61 78 20 3d 0d  .m_hardCurMax =.
17a0: 0a 09 09 6d 5f 68 61 72 64 46 4b 4d 69 6e 20 20  ...m_hardFKMin  
17b0: 3d 0d 0a 09 09 6d 5f 68 61 72 64 46 4b 4d 61 78  =....m_hardFKMax
17c0: 20 20 3d 0d 0a 09 09 6d 5f 68 61 72 64 50 4b 4d    =....m_hardPKM
17d0: 69 6e 20 20 3d 0d 0a 09 09 6d 5f 68 61 72 64 50  in  =....m_hardP
17e0: 4b 4d 61 78 20 20 3d 0d 0a 09 09 6d 5f 68 61 72  KMax  =....m_har
17f0: 64 54 53 4d 69 6e 20 20 3d 0d 0a 09 09 6d 5f 68  dTSMin  =....m_h
1800: 61 72 64 54 53 4d 61 78 20 20 3d 0d 0a 09 09 6d  ardTSMax  =....m
1810: 5f 6d 69 6e 4b 54 79 70 65 20 20 20 3d 0d 0a 09  _minKType   =...
1820: 09 6d 5f 6d 61 78 4b 54 79 70 65 20 20 20 3d 20  .m_maxKType   = 
1830: 30 3b 0d 0a 09 7d 0d 0a 09 7e 46 69 6c 74 65 72  0;...}...~Filter
1840: 4d 61 63 68 69 6e 65 28 29 0d 0a 09 7b 0d 0a 09  Machine()...{...
1850: 09 64 65 6c 65 74 65 20 6d 5f 70 50 4b 45 71 43  .delete m_pPKEqC
1860: 6f 6e 73 74 72 3b 0d 0a 09 09 64 65 6c 65 74 65  onstr;....delete
1870: 20 6d 5f 70 50 4b 4d 69 6e 43 6f 6e 73 74 72 3b   m_pPKMinConstr;
1880: 0d 0a 09 09 64 65 6c 65 74 65 20 6d 5f 70 50 4b  ....delete m_pPK
1890: 4d 61 78 43 6f 6e 73 74 72 3b 0d 0a 09 09 64 65  MaxConstr;....de
18a0: 6c 65 74 65 20 6d 5f 70 41 64 64 69 74 69 6f 6e  lete m_pAddition
18b0: 61 6c 54 65 73 74 73 3b 0d 0a 09 7d 0d 0a 09 0d  alTests;...}....
18c0: 0a 09 73 65 6c 65 63 74 5f 69 74 65 72 61 74 6f  ..select_iterato
18d0: 72 2a 20 70 72 6f 63 65 73 73 28 63 6f 6e 73 74  r* process(const
18e0: 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 2a 20   unsigned char* 
18f0: 70 42 79 74 65 43 6f 64 65 2c 20 73 71 6c 69 74  pByteCode, sqlit
1900: 65 33 5f 76 61 6c 75 65 2a 2a 20 61 72 67 73 29  e3_value** args)
1910: 3b 0d 0a 0d 0a 09 73 74 61 74 69 63 20 76 6f 69  ;.....static voi
1920: 64 20 62 75 69 6c 64 28 63 6f 6e 73 74 20 63 6c  d build(const cl
1930: 61 73 73 20 43 56 74 61 62 49 6e 66 6f 26 20 74  ass CVtabInfo& t
1940: 61 62 6c 65 2c 20 73 71 6c 69 74 65 33 5f 69 6e  able, sqlite3_in
1950: 64 65 78 5f 69 6e 66 6f 2a 20 70 49 64 78 2c 20  dex_info* pIdx, 
1960: 63 6f 6e 73 74 20 73 74 72 75 63 74 20 69 64 78  const struct idx
1970: 5f 6e 6f 64 65 2a 20 70 42 65 73 74 29 3b 0d 0a  _node* pBest);..
1980: 09 73 74 61 74 69 63 20 63 6c 61 73 73 20 73 65  .static class se
1990: 6c 65 63 74 5f 69 74 65 72 61 74 6f 72 2a 20 70  lect_iterator* p
19a0: 61 72 73 65 46 69 6c 74 65 72 28 73 74 72 75 63  arseFilter(struc
19b0: 74 20 63 75 72 73 6f 72 5f 64 61 74 61 26 2c 20  t cursor_data&, 
19c0: 63 6f 6e 73 74 20 63 6c 61 73 73 20 43 56 74 61  const class CVta
19d0: 62 49 6e 66 6f 26 2c 20 63 6f 6e 73 74 20 63 68  bInfo&, const ch
19e0: 61 72 2a 2c 20 73 71 6c 69 74 65 33 5f 76 61 6c  ar*, sqlite3_val
19f0: 75 65 2a 2a 29 3b 0d 0a 70 72 6f 74 65 63 74 65  ue**);..protecte
1a00: 64 3a 0d 0a 0d 0a 09 65 6e 75 6d 20 6b 65 79 53  d:.....enum keyS
1a10: 72 63 20 7b 6b 65 79 46 4b 45 71 2c 20 6b 65 79  rc {keyFKEq, key
1a20: 46 4b 6e 45 71 2c 20 6b 65 79 50 4b 45 71 2c 20  FKnEq, keyPKEq, 
1a30: 6b 65 79 50 4b 6e 45 71 7d 3b 0d 0a 0d 0a 09 73  keyPKnEq};.....s
1a40: 65 6c 65 63 74 5f 69 74 65 72 61 74 6f 72 2a 20  elect_iterator* 
1a50: 47 6f 74 6f 46 69 72 73 74 54 6f 4c 61 73 74 28  GotoFirstToLast(
1a60: 29 3b 0d 0a 09 73 65 6c 65 63 74 5f 69 74 65 72  );...select_iter
1a70: 61 74 6f 72 2a 20 47 6f 74 6f 46 69 72 73 74 54  ator* GotoFirstT
1a80: 6f 4d 61 78 28 29 3b 0d 0a 09 73 65 6c 65 63 74  oMax();...select
1a90: 5f 69 74 65 72 61 74 6f 72 2a 20 47 6f 74 6f 4d  _iterator* GotoM
1aa0: 69 6e 54 6f 4c 61 73 74 28 29 3b 0d 0a 09 73 65  inToLast();...se
1ab0: 6c 65 63 74 5f 69 74 65 72 61 74 6f 72 2a 20 47  lect_iterator* G
1ac0: 6f 74 6f 4d 69 6e 54 6f 4d 61 78 28 29 3b 0d 0a  otoMinToMax();..
1ad0: 09 73 65 6c 65 63 74 5f 69 74 65 72 61 74 6f 72  .select_iterator
1ae0: 2a 20 47 6f 74 6f 4c 61 73 74 54 6f 46 69 72 73  * GotoLastToFirs
1af0: 74 28 29 3b 0d 0a 09 73 65 6c 65 63 74 5f 69 74  t();...select_it
1b00: 65 72 61 74 6f 72 2a 20 47 6f 74 6f 4d 61 78 54  erator* GotoMaxT
1b10: 6f 46 69 72 73 74 28 29 3b 0d 0a 09 73 65 6c 65  oFirst();...sele
1b20: 63 74 5f 69 74 65 72 61 74 6f 72 2a 20 47 6f 74  ct_iterator* Got
1b30: 6f 4c 61 73 74 54 6f 4d 69 6e 28 29 3b 0d 0a 09  oLastToMin();...
1b40: 73 65 6c 65 63 74 5f 69 74 65 72 61 74 6f 72 2a  select_iterator*
1b50: 20 47 6f 74 6f 4d 61 78 54 6f 4d 69 6e 28 29 3b   GotoMaxToMin();
1b60: 0d 0a 09 73 65 6c 65 63 74 5f 69 74 65 72 61 74  ...select_iterat
1b70: 6f 72 2a 20 47 6f 74 6f 54 6f 52 6f 77 28 29 3b  or* GotoToRow();
1b80: 0d 0a 0d 0a 09 43 53 74 72 69 6e 67 20 6d 5f 63  .....CString m_c
1b90: 72 6e 74 45 71 75 61 6c 54 65 78 74 3b 0d 0a 09  rntEqualText;...
1ba0: 43 53 74 72 69 6e 67 20 6d 5f 63 72 6e 74 4d 69  CString m_crntMi
1bb0: 6e 69 6d 75 6d 54 65 78 74 3b 0d 0a 09 43 53 74  nimumText;...CSt
1bc0: 72 69 6e 67 20 6d 5f 63 72 6e 74 4d 61 78 69 6d  ring m_crntMaxim
1bd0: 75 6d 54 65 78 74 3b 0d 0a 0d 0a 09 64 6f 75 62  umText;.....doub
1be0: 6c 65 20 6d 5f 63 72 6e 74 45 71 75 61 6c 4e 75  le m_crntEqualNu
1bf0: 6d 3b 0d 0a 09 64 6f 75 62 6c 65 20 6d 5f 63 72  m;...double m_cr
1c00: 6e 74 4d 69 6e 69 6d 75 6d 4e 75 6d 3b 0d 0a 09  ntMinimumNum;...
1c10: 64 6f 75 62 6c 65 20 6d 5f 63 72 6e 74 4d 61 78  double m_crntMax
1c20: 69 6d 75 6d 4e 75 6d 3b 0d 0a 0d 0a 09 5f 5f 69  imumNum;.....__i
1c30: 6e 74 36 34 20 6d 5f 63 72 6e 74 45 71 75 61 6c  nt64 m_crntEqual
1c40: 4c 6f 6e 67 3b 0d 0a 09 5f 5f 69 6e 74 36 34 20  Long;...__int64 
1c50: 6d 5f 63 72 6e 74 4d 69 6e 69 6d 75 6d 4c 6f 6e  m_crntMinimumLon
1c60: 67 3b 0d 0a 09 5f 5f 69 6e 74 36 34 20 6d 5f 63  g;...__int64 m_c
1c70: 72 6e 74 4d 61 78 69 6d 75 6d 4c 6f 6e 67 3b 0d  rntMaximumLong;.
1c80: 0a 0d 0a 09 6c 6f 6e 67 20 6d 5f 72 65 63 4e 6f  ....long m_recNo
1c90: 3b 0d 0a 09 0d 0a 09 43 53 74 72 69 6e 67 20 6d  ;......CString m
1ca0: 5f 66 75 6c 6c 4b 65 79 4d 69 6e 3b 0d 0a 09 43  _fullKeyMin;...C
1cb0: 53 74 72 69 6e 67 20 6d 5f 66 75 6c 6c 4b 65 79  String m_fullKey
1cc0: 45 71 3b 0d 0a 09 43 53 74 72 69 6e 67 20 6d 5f  Eq;...CString m_
1cd0: 66 75 6c 6c 4b 65 79 4d 61 78 3b 0d 0a 09 43 53  fullKeyMax;...CS
1ce0: 74 72 69 6e 67 20 6d 5f 70 61 72 74 4b 65 79 4d  tring m_partKeyM
1cf0: 69 6e 3b 0d 0a 09 43 53 74 72 69 6e 67 20 6d 5f  in;...CString m_
1d00: 70 61 72 74 4b 65 79 45 71 3b 0d 0a 09 43 53 74  partKeyEq;...CSt
1d10: 72 69 6e 67 20 6d 5f 70 61 72 74 4b 65 79 4d 61  ring m_partKeyMa
1d20: 78 3b 0d 0a 09 0d 0a 09 74 65 73 74 43 6f 6e 73  x;......testCons
1d30: 74 72 61 69 6e 74 2a 20 6d 5f 70 50 4b 45 71 43  traint* m_pPKEqC
1d40: 6f 6e 73 74 72 3b 0d 0a 09 74 65 73 74 43 6f 6e  onstr;...testCon
1d50: 73 74 72 61 69 6e 74 2a 20 6d 5f 70 50 4b 4d 69  straint* m_pPKMi
1d60: 6e 43 6f 6e 73 74 72 3b 0d 0a 09 74 65 73 74 43  nConstr;...testC
1d70: 6f 6e 73 74 72 61 69 6e 74 2a 20 6d 5f 70 50 4b  onstraint* m_pPK
1d80: 4d 61 78 43 6f 6e 73 74 72 3b 0d 0a 09 74 65 73  MaxConstr;...tes
1d90: 74 43 6f 6e 73 74 72 61 69 6e 74 2a 20 6d 5f 70  tConstraint* m_p
1da0: 41 64 64 69 74 69 6f 6e 61 6c 54 65 73 74 73 3b  AdditionalTests;
1db0: 0d 0a 0d 0a 09 63 6f 6e 73 74 20 43 56 74 61 62  .....const CVtab
1dc0: 49 6e 66 6f 26 20 6d 5f 74 61 62 6c 65 3b 0d 0a  Info& m_table;..
1dd0: 09 63 75 72 73 6f 72 5f 64 61 74 61 26 20 6d 5f  .cursor_data& m_
1de0: 63 75 72 73 6f 72 3b 0d 0a 0d 0a 09 44 57 4f 52  cursor;.....DWOR
1df0: 44 20 6d 5f 68 61 72 64 43 75 72 4d 69 6e 3a 20  D m_hardCurMin: 
1e00: 31 3b 0d 0a 09 44 57 4f 52 44 20 6d 5f 68 61 72  1;...DWORD m_har
1e10: 64 43 75 72 4d 61 78 3a 20 31 3b 0d 0a 09 44 57  dCurMax: 1;...DW
1e20: 4f 52 44 20 6d 5f 68 61 72 64 46 4b 4d 69 6e 20  ORD m_hardFKMin 
1e30: 3a 20 31 3b 0d 0a 09 44 57 4f 52 44 20 6d 5f 68  : 1;...DWORD m_h
1e40: 61 72 64 46 4b 4d 61 78 20 3a 20 31 3b 0d 0a 09  ardFKMax : 1;...
1e50: 44 57 4f 52 44 20 6d 5f 68 61 72 64 50 4b 4d 69  DWORD m_hardPKMi
1e60: 6e 20 3a 20 31 3b 0d 0a 09 44 57 4f 52 44 20 6d  n : 1;...DWORD m
1e70: 5f 68 61 72 64 50 4b 4d 61 78 20 3a 20 31 3b 0d  _hardPKMax : 1;.
1e80: 0a 09 44 57 4f 52 44 20 6d 5f 68 61 72 64 54 53  ..DWORD m_hardTS
1e90: 4d 69 6e 20 3a 20 31 3b 0d 0a 09 44 57 4f 52 44  Min : 1;...DWORD
1ea0: 20 6d 5f 68 61 72 64 54 53 4d 61 78 20 3a 20 31   m_hardTSMax : 1
1eb0: 3b 0d 0a 09 44 57 4f 52 44 20 6d 5f 6d 69 6e 4b  ;...DWORD m_minK
1ec0: 54 79 70 65 20 20 3a 20 32 3b 0d 0a 09 44 57 4f  Type  : 2;...DWO
1ed0: 52 44 20 6d 5f 6d 61 78 4b 54 79 70 65 20 20 3a  RD m_maxKType  :
1ee0: 20 32 3b 0d 0a 0d 0a 09 63 6f 6e 73 74 20 73 74   2;.....const st
1ef0: 72 75 63 74 20 69 6e 64 65 78 5f 69 6e 66 6f 2a  ruct index_info*
1f00: 20 6d 5f 70 49 6e 64 65 78 49 6e 66 6f 3b 0d 0a   m_pIndexInfo;..
1f10: 09 63 6f 6e 73 74 20 73 74 72 75 63 74 20 69 64  .const struct id
1f20: 78 5f 66 69 65 6c 64 5f 69 6e 66 6f 2a 20 6d 5f  x_field_info* m_
1f30: 70 46 69 65 6c 64 73 3b 0d 0a 09 44 57 4f 52 44  pFields;...DWORD
1f40: 20 6d 5f 64 77 43 75 72 49 64 78 3b 0d 0a 7d 3b   m_dwCurIdx;..};
1f50: 0d 0a                                            ..