System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 3ef8d0a354533fef59e4cdb30abe8b5e9fb49428:


0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 20 2a 20 41 44  *********.. * AD
0040: 4f 2e 4e 45 54 20 32 2e 30 20 44 61 74 61 20 50  O.NET 2.0 Data P
0050: 72 6f 76 69 64 65 72 20 66 6f 72 20 53 51 4c 69  rovider for SQLi
0060: 74 65 20 56 65 72 73 69 6f 6e 20 33 2e 58 0d 0a  te Version 3.X..
0070: 20 2a 20 57 72 69 74 74 65 6e 20 62 79 20 4a 6f   * Written by Jo
0080: 65 20 4d 69 73 74 61 63 68 6b 69 6e 20 28 6a 6f  e Mistachkin (jo
0090: 65 40 6d 69 73 74 61 63 68 6b 69 6e 2e 63 6f 6d  e@mistachkin.com
00a0: 29 0d 0a 20 2a 0d 0a 20 2a 20 52 65 6c 65 61 73  ).. *.. * Releas
00b0: 65 64 20 74 6f 20 74 68 65 20 70 75 62 6c 69 63  ed to the public
00c0: 20 64 6f 6d 61 69 6e 2c 20 75 73 65 20 61 74 20   domain, use at 
00d0: 79 6f 75 72 20 6f 77 6e 20 72 69 73 6b 21 0d 0a  your own risk!..
00e0: 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a   ***************
00f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0100: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0110: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0d 0a 0d 0a 75 73  *********/....us
0120: 69 6e 67 20 53 79 73 74 65 6d 2e 43 6f 6c 6c 65  ing System.Colle
0130: 63 74 69 6f 6e 73 3b 0d 0a 75 73 69 6e 67 20 53  ctions;..using S
0140: 79 73 74 65 6d 2e 43 6f 6c 6c 65 63 74 69 6f 6e  ystem.Collection
0150: 73 2e 47 65 6e 65 72 69 63 3b 0d 0a 0d 0a 23 69  s.Generic;....#i
0160: 66 20 44 45 42 55 47 0d 0a 75 73 69 6e 67 20 53  f DEBUG..using S
0170: 79 73 74 65 6d 2e 44 69 61 67 6e 6f 73 74 69 63  ystem.Diagnostic
0180: 73 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 75 73  s;..#endif....us
0190: 69 6e 67 20 53 79 73 74 65 6d 2e 49 4f 3b 0d 0a  ing System.IO;..
01a0: 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 47 6c 6f  using System.Glo
01b0: 62 61 6c 69 7a 61 74 69 6f 6e 3b 0d 0a 75 73 69  balization;..usi
01c0: 6e 67 20 53 79 73 74 65 6d 2e 52 75 6e 74 69 6d  ng System.Runtim
01d0: 65 2e 49 6e 74 65 72 6f 70 53 65 72 76 69 63 65  e.InteropService
01e0: 73 3b 0d 0a 0d 0a 6e 61 6d 65 73 70 61 63 65 20  s;....namespace 
01f0: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
0200: 74 65 0d 0a 7b 0d 0a 20 20 20 20 23 72 65 67 69  te..{..    #regi
0210: 6f 6e 20 53 65 73 73 69 6f 6e 20 45 78 74 65 6e  on Session Exten
0220: 73 69 6f 6e 20 45 6e 75 6d 65 72 61 74 69 6f 6e  sion Enumeration
0230: 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  s..    /// <summ
0240: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
0250: 69 73 20 65 6e 75 6d 65 72 61 74 65 64 20 74 79  is enumerated ty
0260: 70 65 20 72 65 70 72 65 73 65 6e 74 73 20 61 20  pe represents a 
0270: 74 79 70 65 20 6f 66 20 63 6f 6e 66 6c 69 63 74  type of conflict
0280: 20 73 65 65 6e 20 77 68 65 6e 20 61 70 70 6c 79   seen when apply
0290: 0d 0a 20 20 20 20 2f 2f 2f 20 63 68 61 6e 67 65  ..    /// change
02a0: 73 20 66 72 6f 6d 20 61 20 63 68 61 6e 67 65 20  s from a change 
02b0: 73 65 74 20 6f 72 20 70 61 74 63 68 20 73 65 74  set or patch set
02c0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
02d0: 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69  mary>..    publi
02e0: 63 20 65 6e 75 6d 20 53 51 4c 69 74 65 43 68 61  c enum SQLiteCha
02f0: 6e 67 65 53 65 74 43 6f 6e 66 6c 69 63 74 54 79  ngeSetConflictTy
0300: 70 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  pe..    {..     
0310: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
0320: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
0330: 69 73 20 76 61 6c 75 65 20 69 73 20 73 65 65 6e  is value is seen
0340: 20 77 68 65 6e 20 70 72 6f 63 65 73 73 69 6e 67   when processing
0350: 20 61 20 44 45 4c 45 54 45 20 6f 72 20 55 50 44   a DELETE or UPD
0360: 41 54 45 20 63 68 61 6e 67 65 20 69 66 20 61 0d  ATE change if a.
0370: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 72 6f 77  .        /// row
0380: 20 77 69 74 68 20 74 68 65 20 72 65 71 75 69 72   with the requir
0390: 65 64 20 50 52 49 4d 41 52 59 20 4b 45 59 20 66  ed PRIMARY KEY f
03a0: 69 65 6c 64 73 20 69 73 20 70 72 65 73 65 6e 74  ields is present
03b0: 20 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20   in the..       
03c0: 20 2f 2f 2f 20 64 61 74 61 62 61 73 65 2c 20 62   /// database, b
03d0: 75 74 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 6f  ut one or more o
03e0: 74 68 65 72 20 28 6e 6f 6e 20 70 72 69 6d 61 72  ther (non primar
03f0: 79 2d 6b 65 79 29 20 66 69 65 6c 64 73 20 6d 6f  y-key) fields mo
0400: 64 69 66 69 65 64 0d 0a 20 20 20 20 20 20 20 20  dified..        
0410: 2f 2f 2f 20 62 79 20 74 68 65 20 75 70 64 61 74  /// by the updat
0420: 65 20 64 6f 20 6e 6f 74 20 63 6f 6e 74 61 69 6e  e do not contain
0430: 20 74 68 65 20 65 78 70 65 63 74 65 64 20 22 62   the expected "b
0440: 65 66 6f 72 65 22 20 76 61 6c 75 65 73 2e 0d 0a  efore" values...
0450: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
0460: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
0470: 44 61 74 61 20 3d 20 31 2c 0d 0a 0d 0a 20 20 20  Data = 1,....   
0480: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
0490: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
04a0: 54 68 69 73 20 76 61 6c 75 65 20 69 73 20 73 65  This value is se
04b0: 65 6e 20 77 68 65 6e 20 70 72 6f 63 65 73 73 69  en when processi
04c0: 6e 67 20 61 20 44 45 4c 45 54 45 20 6f 72 20 55  ng a DELETE or U
04d0: 50 44 41 54 45 20 63 68 61 6e 67 65 20 69 66 20  PDATE change if 
04e0: 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 72  a..        /// r
04f0: 6f 77 20 77 69 74 68 20 74 68 65 20 72 65 71 75  ow with the requ
0500: 69 72 65 64 20 50 52 49 4d 41 52 59 20 4b 45 59  ired PRIMARY KEY
0510: 20 66 69 65 6c 64 73 20 69 73 20 6e 6f 74 20 70   fields is not p
0520: 72 65 73 65 6e 74 20 69 6e 20 74 68 65 0d 0a 20  resent in the.. 
0530: 20 20 20 20 20 20 20 2f 2f 2f 20 64 61 74 61 62         /// datab
0540: 61 73 65 2e 20 20 54 68 65 72 65 20 69 73 20 6e  ase.  There is n
0550: 6f 20 63 6f 6e 66 6c 69 63 74 69 6e 67 20 72 6f  o conflicting ro
0560: 77 20 69 6e 20 74 68 69 73 20 63 61 73 65 2e 0d  w in this case..
0570: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20  .        ///..  
0580: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 72 65        /// The re
0590: 73 75 6c 74 73 20 6f 66 20 69 6e 76 6f 6b 69 6e  sults of invokin
05a0: 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  g the..        /
05b0: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
05c0: 51 4c 69 74 65 43 68 61 6e 67 65 53 65 74 4d 65  QLiteChangeSetMe
05d0: 74 61 64 61 74 61 49 74 65 6d 2e 47 65 74 43 6f  tadataItem.GetCo
05e0: 6e 66 6c 69 63 74 56 61 6c 75 65 22 20 2f 3e 0d  nflictValue" />.
05f0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74  .        /// met
0600: 68 6f 64 20 61 72 65 20 75 6e 64 65 66 69 6e 65  hod are undefine
0610: 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
0620: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
0630: 20 20 20 20 4e 6f 74 46 6f 75 6e 64 20 3d 20 32      NotFound = 2
0640: 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ,....        ///
0650: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
0660: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c      /// This val
0670: 75 65 20 69 73 20 73 65 65 6e 20 77 68 65 6e 20  ue is seen when 
0680: 70 72 6f 63 65 73 73 69 6e 67 20 61 6e 20 49 4e  processing an IN
0690: 53 45 52 54 20 63 68 61 6e 67 65 20 69 66 20 74  SERT change if t
06a0: 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
06b0: 6f 70 65 72 61 74 69 6f 6e 20 77 6f 75 6c 64 20  operation would 
06c0: 72 65 73 75 6c 74 20 69 6e 20 64 75 70 6c 69 63  result in duplic
06d0: 61 74 65 20 70 72 69 6d 61 72 79 20 6b 65 79 20  ate primary key 
06e0: 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20 20 20 20  values...       
06f0: 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 66 6c 69 63   /// The conflic
0700: 74 69 6e 67 20 72 6f 77 20 69 6e 20 74 68 69 73  ting row in this
0710: 20 63 61 73 65 20 69 73 20 74 68 65 20 64 61 74   case is the dat
0720: 61 62 61 73 65 20 72 6f 77 20 77 69 74 68 20 74  abase row with t
0730: 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
0740: 6d 61 74 63 68 69 6e 67 20 70 72 69 6d 61 72 79  matching primary
0750: 20 6b 65 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f   key...        /
0760: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
0770: 20 20 20 20 20 20 20 43 6f 6e 66 6c 69 63 74 20         Conflict 
0780: 3d 20 33 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20  = 3,....        
0790: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
07a0: 20 20 20 20 20 20 20 2f 2f 2f 20 49 66 20 61 20         /// If a 
07b0: 6e 6f 6e 2d 66 6f 72 65 69 67 6e 20 6b 65 79 20  non-foreign key 
07c0: 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61  constraint viola
07d0: 74 69 6f 6e 20 6f 63 63 75 72 73 20 77 68 69 6c  tion occurs whil
07e0: 65 20 61 70 70 6c 79 69 6e 67 20 61 0d 0a 20 20  e applying a..  
07f0: 20 20 20 20 20 20 2f 2f 2f 20 63 68 61 6e 67 65        /// change
0800: 20 28 69 2e 65 2e 20 61 20 55 4e 49 51 55 45 2c   (i.e. a UNIQUE,
0810: 20 43 48 45 43 4b 20 6f 72 20 4e 4f 54 20 4e 55   CHECK or NOT NU
0820: 4c 4c 20 63 6f 6e 73 74 72 61 69 6e 74 29 2c 20  LL constraint), 
0830: 74 68 65 20 63 6f 6e 66 6c 69 63 74 0d 0a 20 20  the conflict..  
0840: 20 20 20 20 20 20 2f 2f 2f 20 63 61 6c 6c 62 61        /// callba
0850: 63 6b 20 77 69 6c 6c 20 73 65 65 20 74 68 69 73  ck will see this
0860: 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20   value...       
0870: 20 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f   ///..        //
0880: 2f 20 54 68 65 72 65 20 69 73 20 6e 6f 20 63 6f  / There is no co
0890: 6e 66 6c 69 63 74 69 6e 67 20 72 6f 77 20 69 6e  nflicting row in
08a0: 20 74 68 69 73 20 63 61 73 65 2e 20 54 68 65 20   this case. The 
08b0: 72 65 73 75 6c 74 73 20 6f 66 20 69 6e 76 6f 6b  results of invok
08c0: 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ing..        ///
08d0: 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
08e0: 49 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65 74  ISQLiteChangeSet
08f0: 4d 65 74 61 64 61 74 61 49 74 65 6d 2e 47 65 74  MetadataItem.Get
0900: 43 6f 6e 66 6c 69 63 74 56 61 6c 75 65 22 20 2f  ConflictValue" /
0910: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  >..        /// m
0920: 65 74 68 6f 64 20 61 72 65 20 75 6e 64 65 66 69  ethod are undefi
0930: 6e 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ned...        //
0940: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
0950: 20 20 20 20 20 20 43 6f 6e 73 74 72 61 69 6e 74        Constraint
0960: 20 3d 20 34 2c 0d 0a 0d 0a 20 20 20 20 20 20 20   = 4,....       
0970: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
0980: 20 20 20 20 20 20 20 20 2f 2f 2f 20 49 66 20 66          /// If f
0990: 6f 72 65 69 67 6e 20 6b 65 79 20 68 61 6e 64 6c  oreign key handl
09a0: 69 6e 67 20 69 73 20 65 6e 61 62 6c 65 64 2c 20  ing is enabled, 
09b0: 61 6e 64 20 61 70 70 6c 79 69 6e 67 20 61 20 63  and applying a c
09c0: 68 61 6e 67 65 73 20 6c 65 61 76 65 73 0d 0a 20  hanges leaves.. 
09d0: 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 64         /// the d
09e0: 61 74 61 62 61 73 65 20 69 6e 20 61 20 73 74 61  atabase in a sta
09f0: 74 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 66 6f  te containing fo
0a00: 72 65 69 67 6e 20 6b 65 79 20 76 69 6f 6c 61 74  reign key violat
0a10: 69 6f 6e 73 2c 20 74 68 69 73 0d 0a 20 20 20 20  ions, this..    
0a20: 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 20 77 69      /// value wi
0a30: 6c 6c 20 62 65 20 73 65 65 6e 20 65 78 61 63 74  ll be seen exact
0a40: 6c 79 20 6f 6e 63 65 20 62 65 66 6f 72 65 20 74  ly once before t
0a50: 68 65 20 63 68 61 6e 67 65 73 20 61 72 65 20 63  he changes are c
0a60: 6f 6d 6d 69 74 74 65 64 2e 0d 0a 20 20 20 20 20  ommitted...     
0a70: 20 20 20 2f 2f 2f 20 49 66 20 74 68 65 20 63 6f     /// If the co
0a80: 6e 66 6c 69 63 74 20 68 61 6e 64 6c 65 72 0d 0a  nflict handler..
0a90: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
0aa0: 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 68 61   cref="SQLiteCha
0ab0: 6e 67 65 53 65 74 43 6f 6e 66 6c 69 63 74 52 65  ngeSetConflictRe
0ac0: 73 75 6c 74 2e 4f 6d 69 74 22 20 2f 3e 2c 20 74  sult.Omit" />, t
0ad0: 68 65 20 63 68 61 6e 67 65 73 2c 0d 0a 20 20 20  he changes,..   
0ae0: 20 20 20 20 20 2f 2f 2f 20 69 6e 63 6c 75 64 69       /// includi
0af0: 6e 67 20 74 68 6f 73 65 20 74 68 61 74 20 63 61  ng those that ca
0b00: 75 73 65 64 20 74 68 65 20 66 6f 72 65 69 67 6e  used the foreign
0b10: 20 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e 74 20   key constraint 
0b20: 76 69 6f 6c 61 74 69 6f 6e 2c 0d 0a 20 20 20 20  violation,..    
0b30: 20 20 20 20 2f 2f 2f 20 61 72 65 20 63 6f 6d 6d      /// are comm
0b40: 69 74 74 65 64 2e 20 4f 72 2c 20 69 66 20 69 74  itted. Or, if it
0b50: 20 72 65 74 75 72 6e 73 0d 0a 20 20 20 20 20 20   returns..      
0b60: 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
0b70: 22 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65 74  "SQLiteChangeSet
0b80: 43 6f 6e 66 6c 69 63 74 52 65 73 75 6c 74 2e 41  ConflictResult.A
0b90: 62 6f 72 74 22 20 2f 3e 2c 20 74 68 65 20 63 68  bort" />, the ch
0ba0: 61 6e 67 65 73 20 61 72 65 0d 0a 20 20 20 20 20  anges are..     
0bb0: 20 20 20 2f 2f 2f 20 72 6f 6c 6c 65 64 20 62 61     /// rolled ba
0bc0: 63 6b 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ck...        ///
0bd0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  ..        /// No
0be0: 20 63 75 72 72 65 6e 74 20 6f 72 20 63 6f 6e 66   current or conf
0bf0: 6c 69 63 74 69 6e 67 20 72 6f 77 20 69 6e 66 6f  licting row info
0c00: 72 6d 61 74 69 6f 6e 20 69 73 20 70 72 6f 76 69  rmation is provi
0c10: 64 65 64 2e 20 54 68 65 20 6f 6e 6c 79 0d 0a 20  ded. The only.. 
0c20: 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f         /// metho
0c30: 64 20 69 74 20 69 73 20 70 6f 73 73 69 62 6c 65  d it is possible
0c40: 20 74 6f 20 63 61 6c 6c 20 6f 6e 20 74 68 65 20   to call on the 
0c50: 73 75 70 70 6c 69 65 64 0d 0a 20 20 20 20 20 20  supplied..      
0c60: 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
0c70: 22 49 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65  "ISQLiteChangeSe
0c80: 74 4d 65 74 61 64 61 74 61 49 74 65 6d 22 20 2f  tMetadataItem" /
0c90: 3e 20 6f 62 6a 65 63 74 20 69 73 0d 0a 20 20 20  > object is..   
0ca0: 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
0cb0: 65 66 3d 22 49 53 51 4c 69 74 65 43 68 61 6e 67  ef="ISQLiteChang
0cc0: 65 53 65 74 4d 65 74 61 64 61 74 61 49 74 65 6d  eSetMetadataItem
0cd0: 2e 4e 75 6d 62 65 72 4f 66 46 6f 72 65 69 67 6e  .NumberOfForeign
0ce0: 4b 65 79 43 6f 6e 66 6c 69 63 74 73 22 20 2f 3e  KeyConflicts" />
0cf0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
0d00: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
0d10: 20 20 20 46 6f 72 65 69 67 6e 4b 65 79 20 3d 20     ForeignKey = 
0d20: 35 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  5..    }....    
0d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
0d80: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
0d90: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 65  ..    /// This e
0da0: 6e 75 6d 65 72 61 74 65 64 20 74 79 70 65 20 72  numerated type r
0db0: 65 70 72 65 73 65 6e 74 73 20 74 68 65 20 72 65  epresents the re
0dc0: 73 75 6c 74 20 6f 66 20 61 20 75 73 65 72 2d 64  sult of a user-d
0dd0: 65 66 69 6e 65 64 20 63 6f 6e 66 6c 69 63 74 0d  efined conflict.
0de0: 0a 20 20 20 20 2f 2f 2f 20 72 65 73 6f 6c 75 74  .    /// resolut
0df0: 69 6f 6e 20 63 61 6c 6c 62 61 63 6b 2e 0d 0a 20  ion callback... 
0e00: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
0e10: 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 65 6e  >..    public en
0e20: 75 6d 20 53 51 4c 69 74 65 43 68 61 6e 67 65 53  um SQLiteChangeS
0e30: 65 74 43 6f 6e 66 6c 69 63 74 52 65 73 75 6c 74  etConflictResult
0e40: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
0e50: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
0e60: 20 20 20 20 20 20 20 20 2f 2f 2f 20 49 66 20 61          /// If a
0e70: 20 63 6f 6e 66 6c 69 63 74 20 63 61 6c 6c 62 61   conflict callba
0e80: 63 6b 20 72 65 74 75 72 6e 73 20 74 68 69 73 20  ck returns this 
0e90: 76 61 6c 75 65 20 6e 6f 20 73 70 65 63 69 61 6c  value no special
0ea0: 20 61 63 74 69 6f 6e 20 69 73 0d 0a 20 20 20 20   action is..    
0eb0: 20 20 20 20 2f 2f 2f 20 74 61 6b 65 6e 2e 20 54      /// taken. T
0ec0: 68 65 20 63 68 61 6e 67 65 20 74 68 61 74 20 63  he change that c
0ed0: 61 75 73 65 64 20 74 68 65 20 63 6f 6e 66 6c 69  aused the confli
0ee0: 63 74 20 69 73 20 6e 6f 74 20 61 70 70 6c 69 65  ct is not applie
0ef0: 64 2e 20 54 68 65 0d 0a 20 20 20 20 20 20 20 20  d. The..        
0f00: 2f 2f 2f 20 61 70 70 6c 69 63 61 74 69 6f 6e 20  /// application 
0f10: 6f 66 20 63 68 61 6e 67 65 73 20 63 6f 6e 74 69  of changes conti
0f20: 6e 75 65 73 20 77 69 74 68 20 74 68 65 20 6e 65  nues with the ne
0f30: 78 74 20 63 68 61 6e 67 65 2e 0d 0a 20 20 20 20  xt change...    
0f40: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
0f50: 79 3e 0d 0a 20 20 20 20 20 20 20 20 4f 6d 69 74  y>..        Omit
0f60: 20 3d 20 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 20   = 0,....       
0f70: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
0f80: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
0f90: 20 76 61 6c 75 65 20 6d 61 79 20 6f 6e 6c 79 20   value may only 
0fa0: 62 65 20 72 65 74 75 72 6e 65 64 20 66 72 6f 6d  be returned from
0fb0: 20 61 20 63 6f 6e 66 6c 69 63 74 20 63 61 6c 6c   a conflict call
0fc0: 62 61 63 6b 20 69 66 20 74 68 65 0d 0a 20 20 20  back if the..   
0fd0: 20 20 20 20 20 2f 2f 2f 20 74 79 70 65 20 6f 66       /// type of
0fe0: 20 63 6f 6e 66 6c 69 63 74 20 77 61 73 20 3c 73   conflict was <s
0ff0: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43  ee cref="SQLiteC
1000: 68 61 6e 67 65 53 65 74 43 6f 6e 66 6c 69 63 74  hangeSetConflict
1010: 54 79 70 65 2e 44 61 74 61 22 20 2f 3e 0d 0a 20  Type.Data" />.. 
1020: 20 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20 3c 73         /// or <s
1030: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43  ee cref="SQLiteC
1040: 68 61 6e 67 65 53 65 74 43 6f 6e 66 6c 69 63 74  hangeSetConflict
1050: 54 79 70 65 2e 43 6f 6e 66 6c 69 63 74 22 20 2f  Type.Conflict" /
1060: 3e 2e 20 49 66 20 74 68 69 73 20 69 73 0d 0a 20  >. If this is.. 
1070: 20 20 20 20 20 20 20 2f 2f 2f 20 6e 6f 74 20 74         /// not t
1080: 68 65 20 63 61 73 65 2c 20 61 6e 79 20 63 68 61  he case, any cha
1090: 6e 67 65 73 20 61 70 70 6c 69 65 64 20 73 6f 20  nges applied so 
10a0: 66 61 72 20 61 72 65 20 72 6f 6c 6c 65 64 20 62  far are rolled b
10b0: 61 63 6b 20 61 6e 64 20 74 68 65 0d 0a 20 20 20  ack and the..   
10c0: 20 20 20 20 20 2f 2f 2f 20 63 61 6c 6c 20 74 6f       /// call to
10d0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
10e0: 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
10f0: 43 68 61 6e 67 65 53 65 74 2e 41 70 70 6c 79 28  ChangeSet.Apply(
1100: 53 65 73 73 69 6f 6e 43 6f 6e 66 6c 69 63 74 43  SessionConflictC
1110: 61 6c 6c 62 61 63 6b 2c 53 65 73 73 69 6f 6e 54  allback,SessionT
1120: 61 62 6c 65 46 69 6c 74 65 72 43 61 6c 6c 62 61  ableFilterCallba
1130: 63 6b 2c 6f 62 6a 65 63 74 29 22 20 2f 3e 0d 0a  ck,object)" />..
1140: 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 6c 6c          /// will
1150: 20 72 61 69 73 65 20 61 20 3c 73 65 65 20 63 72   raise a <see cr
1160: 65 66 3d 22 53 51 4c 69 74 65 45 78 63 65 70 74  ef="SQLiteExcept
1170: 69 6f 6e 22 20 2f 3e 20 77 69 74 68 20 61 6e 20  ion" /> with an 
1180: 65 72 72 6f 72 20 63 6f 64 65 20 6f 66 0d 0a 20  error code of.. 
1190: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
11a0: 63 72 65 66 3d 22 53 51 4c 69 74 65 45 72 72 6f  cref="SQLiteErro
11b0: 72 43 6f 64 65 2e 4d 69 73 75 73 65 22 20 2f 3e  rCode.Misuse" />
11c0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 0d 0a  ...        ///..
11d0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 49 66 20 74          /// If t
11e0: 68 69 73 20 76 61 6c 75 65 20 69 73 20 72 65 74  his value is ret
11f0: 75 72 6e 65 64 20 66 6f 72 20 61 0d 0a 20 20 20  urned for a..   
1200: 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
1210: 65 66 3d 22 53 51 4c 69 74 65 43 68 61 6e 67 65  ef="SQLiteChange
1220: 53 65 74 43 6f 6e 66 6c 69 63 74 54 79 70 65 2e  SetConflictType.
1230: 44 61 74 61 22 20 2f 3e 20 63 6f 6e 66 6c 69 63  Data" /> conflic
1240: 74 2c 20 74 68 65 6e 20 74 68 65 0d 0a 20 20 20  t, then the..   
1250: 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 66 6c 69 63       /// conflic
1260: 74 69 6e 67 20 72 6f 77 20 69 73 20 65 69 74 68  ting row is eith
1270: 65 72 20 75 70 64 61 74 65 64 20 6f 72 20 64 65  er updated or de
1280: 6c 65 74 65 64 2c 20 64 65 70 65 6e 64 69 6e 67  leted, depending
1290: 20 6f 6e 20 74 68 65 20 74 79 70 65 0d 0a 20 20   on the type..  
12a0: 20 20 20 20 20 20 2f 2f 2f 20 6f 66 20 63 68 61        /// of cha
12b0: 6e 67 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nge...        //
12c0: 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 49  /..        /// I
12d0: 66 20 74 68 69 73 20 76 61 6c 75 65 20 69 73 20  f this value is 
12e0: 72 65 74 75 72 6e 65 64 20 66 6f 72 20 61 0d 0a  returned for a..
12f0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
1300: 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 68 61   cref="SQLiteCha
1310: 6e 67 65 53 65 74 43 6f 6e 66 6c 69 63 74 54 79  ngeSetConflictTy
1320: 70 65 2e 43 6f 6e 66 6c 69 63 74 22 20 2f 3e 20  pe.Conflict" /> 
1330: 63 6f 6e 66 6c 69 63 74 2c 20 74 68 65 6e 0d 0a  conflict, then..
1340: 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20          /// the 
1350: 63 6f 6e 66 6c 69 63 74 69 6e 67 20 72 6f 77 20  conflicting row 
1360: 69 73 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20  is removed from 
1370: 74 68 65 20 64 61 74 61 62 61 73 65 20 61 6e 64  the database and
1380: 20 61 20 73 65 63 6f 6e 64 0d 0a 20 20 20 20 20   a second..     
1390: 20 20 20 2f 2f 2f 20 61 74 74 65 6d 70 74 20 74     /// attempt t
13a0: 6f 20 61 70 70 6c 79 20 74 68 65 20 63 68 61 6e  o apply the chan
13b0: 67 65 20 69 73 20 6d 61 64 65 2e 20 49 66 20 74  ge is made. If t
13c0: 68 69 73 20 73 65 63 6f 6e 64 20 61 74 74 65 6d  his second attem
13d0: 70 74 20 66 61 69 6c 73 2c 0d 0a 20 20 20 20 20  pt fails,..     
13e0: 20 20 20 2f 2f 2f 20 74 68 65 20 6f 72 69 67 69     /// the origi
13f0: 6e 61 6c 20 72 6f 77 20 69 73 20 72 65 73 74 6f  nal row is resto
1400: 72 65 64 20 74 6f 20 74 68 65 20 64 61 74 61 62  red to the datab
1410: 61 73 65 20 62 65 66 6f 72 65 20 63 6f 6e 74 69  ase before conti
1420: 6e 75 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  nuing...        
1430: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1440: 20 20 20 20 20 20 20 20 52 65 70 6c 61 63 65 20          Replace 
1450: 3d 20 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20  = 1,....        
1460: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1470: 20 20 20 20 20 20 20 2f 2f 2f 20 49 66 20 74 68         /// If th
1480: 69 73 20 76 61 6c 75 65 20 69 73 20 72 65 74 75  is value is retu
1490: 72 6e 65 64 2c 20 61 6e 79 20 63 68 61 6e 67 65  rned, any change
14a0: 73 20 61 70 70 6c 69 65 64 20 73 6f 20 66 61 72  s applied so far
14b0: 20 61 72 65 20 72 6f 6c 6c 65 64 0d 0a 20 20 20   are rolled..   
14c0: 20 20 20 20 20 2f 2f 2f 20 62 61 63 6b 20 61 6e       /// back an
14d0: 64 20 74 68 65 20 63 61 6c 6c 20 74 6f 0d 0a 20  d the call to.. 
14e0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
14f0: 63 72 65 66 3d 22 49 53 51 4c 69 74 65 43 68 61  cref="ISQLiteCha
1500: 6e 67 65 53 65 74 2e 41 70 70 6c 79 28 53 65 73  ngeSet.Apply(Ses
1510: 73 69 6f 6e 43 6f 6e 66 6c 69 63 74 43 61 6c 6c  sionConflictCall
1520: 62 61 63 6b 2c 53 65 73 73 69 6f 6e 54 61 62 6c  back,SessionTabl
1530: 65 46 69 6c 74 65 72 43 61 6c 6c 62 61 63 6b 2c  eFilterCallback,
1540: 6f 62 6a 65 63 74 29 22 20 2f 3e 0d 0a 20 20 20  object)" />..   
1550: 20 20 20 20 20 2f 2f 2f 20 77 69 6c 6c 20 72 61       /// will ra
1560: 69 73 65 20 61 20 3c 73 65 65 20 63 72 65 66 3d  ise a <see cref=
1570: 22 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e  "SQLiteException
1580: 22 20 2f 3e 20 77 69 74 68 20 61 6e 20 65 72 72  " /> with an err
1590: 6f 72 20 63 6f 64 65 20 6f 66 0d 0a 20 20 20 20  or code of..    
15a0: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
15b0: 66 3d 22 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  f="SQLiteErrorCo
15c0: 64 65 2e 41 62 6f 72 74 22 20 2f 3e 2e 0d 0a 20  de.Abort" />... 
15d0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
15e0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 41  mary>..        A
15f0: 62 6f 72 74 20 3d 20 32 0d 0a 20 20 20 20 7d 0d  bort = 2..    }.
1600: 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
1610: 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
1620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1660: 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
1670: 6e 20 53 65 73 73 69 6f 6e 20 45 78 74 65 6e 73  n Session Extens
1680: 69 6f 6e 20 44 65 6c 65 67 61 74 65 73 0d 0a 20  ion Delegates.. 
1690: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
16a0: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63  ..    /// This c
16b0: 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b  allback is invok
16c0: 65 64 20 77 68 65 6e 20 61 20 64 65 74 65 72 6d  ed when a determ
16d0: 69 6e 61 74 69 6f 6e 20 6d 75 73 74 20 62 65 20  ination must be 
16e0: 6d 61 64 65 20 61 62 6f 75 74 0d 0a 20 20 20 20  made about..    
16f0: 2f 2f 2f 20 77 68 65 74 68 65 72 20 63 68 61 6e  /// whether chan
1700: 67 65 73 20 74 6f 20 61 20 73 70 65 63 69 66 69  ges to a specifi
1710: 63 20 74 61 62 6c 65 20 73 68 6f 75 6c 64 20 62  c table should b
1720: 65 20 74 72 61 63 6b 65 64 20 2d 4f 52 2d 20 61  e tracked -OR- a
1730: 70 70 6c 69 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f  pplied...    ///
1740: 20 49 74 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20   It will not be 
1750: 63 61 6c 6c 65 64 20 66 6f 72 20 74 61 62 6c 65  called for table
1760: 73 20 74 68 61 74 20 61 72 65 20 61 6c 72 65 61  s that are alrea
1770: 64 79 20 61 74 74 61 63 68 65 64 20 74 6f 20 61  dy attached to a
1780: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63  ..    /// <see c
1790: 72 65 66 3d 22 49 53 51 4c 69 74 65 53 65 73 73  ref="ISQLiteSess
17a0: 69 6f 6e 22 20 2f 3e 2e 0d 0a 20 20 20 20 2f 2f  ion" />...    //
17b0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
17c0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
17d0: 65 3d 22 63 6c 69 65 6e 74 44 61 74 61 22 3e 0d  e="clientData">.
17e0: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 70 74  .    /// The opt
17f0: 69 6f 6e 61 6c 20 61 70 70 6c 69 63 61 74 69 6f  ional applicatio
1800: 6e 2d 64 65 66 69 6e 65 64 20 63 6f 6e 74 65 78  n-defined contex
1810: 74 20 64 61 74 61 20 74 68 61 74 20 77 61 73 20  t data that was 
1820: 6f 72 69 67 69 6e 61 6c 6c 79 0d 0a 20 20 20 20  originally..    
1830: 2f 2f 2f 20 70 61 73 73 65 64 20 74 6f 20 74 68  /// passed to th
1840: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
1850: 4c 69 74 65 53 65 73 73 69 6f 6e 2e 53 65 74 54  LiteSession.SetT
1860: 61 62 6c 65 46 69 6c 74 65 72 22 20 2f 3e 20 6f  ableFilter" /> o
1870: 72 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  r..    /// <see 
1880: 63 72 65 66 3d 22 49 53 51 4c 69 74 65 43 68 61  cref="ISQLiteCha
1890: 6e 67 65 53 65 74 2e 41 70 70 6c 79 28 53 65 73  ngeSet.Apply(Ses
18a0: 73 69 6f 6e 43 6f 6e 66 6c 69 63 74 43 61 6c 6c  sionConflictCall
18b0: 62 61 63 6b 2c 53 65 73 73 69 6f 6e 54 61 62 6c  back,SessionTabl
18c0: 65 46 69 6c 74 65 72 43 61 6c 6c 62 61 63 6b 2c  eFilterCallback,
18d0: 6f 62 6a 65 63 74 29 22 20 2f 3e 0d 0a 20 20 20  object)" />..   
18e0: 20 2f 2f 2f 20 6d 65 74 68 6f 64 73 2e 20 20 54   /// methods.  T
18f0: 68 69 73 20 76 61 6c 75 65 20 6d 61 79 20 62 65  his value may be
1900: 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 2f 2f 2f 20   null...    /// 
1910: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
1920: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e  / <param name="n
1930: 61 6d 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  ame">..    /// T
1940: 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 74  he name of the t
1950: 61 62 6c 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  able...    /// <
1960: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
1970: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
1980: 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
1990: 63 68 61 6e 67 65 73 20 74 6f 20 74 68 65 20 74  changes to the t
19a0: 61 62 6c 65 20 73 68 6f 75 6c 64 20 62 65 20 63  able should be c
19b0: 6f 6e 73 69 64 65 72 65 64 3b 20 6f 74 68 65 72  onsidered; other
19c0: 77 69 73 65 2c 0d 0a 20 20 20 20 2f 2f 2f 20 7a  wise,..    /// z
19d0: 65 72 6f 2e 20 20 54 68 72 6f 77 69 6e 67 20 61  ero.  Throwing a
19e0: 6e 20 65 78 63 65 70 74 69 6f 6e 20 66 72 6f 6d  n exception from
19f0: 20 74 68 69 73 20 63 61 6c 6c 62 61 63 6b 20 77   this callback w
1a00: 69 6c 6c 20 72 65 73 75 6c 74 20 69 6e 0d 0a 20  ill result in.. 
1a10: 20 20 20 2f 2f 2f 20 75 6e 64 65 66 69 6e 65 64     /// undefined
1a20: 20 62 65 68 61 76 69 6f 72 2e 0d 0a 20 20 20 20   behavior...    
1a30: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
1a40: 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
1a50: 61 74 65 20 62 6f 6f 6c 20 53 65 73 73 69 6f 6e  ate bool Session
1a60: 54 61 62 6c 65 46 69 6c 74 65 72 43 61 6c 6c 62  TableFilterCallb
1a70: 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 6f 62  ack(..        ob
1a80: 6a 65 63 74 20 63 6c 69 65 6e 74 44 61 74 61 2c  ject clientData,
1a90: 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e 67  ..        string
1aa0: 20 6e 61 6d 65 0d 0a 20 20 20 20 29 3b 0d 0a 0d   name..    );...
1ab0: 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
1ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b00: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
1b10: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  mary>..    /// T
1b20: 68 69 73 20 63 61 6c 6c 62 61 63 6b 20 69 73 20  his callback is 
1b30: 69 6e 76 6f 6b 65 64 20 77 68 65 6e 20 74 68 65  invoked when the
1b40: 72 65 20 69 73 20 61 20 63 6f 6e 66 6c 69 63 74  re is a conflict
1b50: 20 77 68 69 6c 65 20 61 70 70 6c 79 20 63 68 61   while apply cha
1b60: 6e 67 65 73 0d 0a 20 20 20 20 2f 2f 2f 20 74 6f  nges..    /// to
1b70: 20 61 20 64 61 74 61 62 61 73 65 2e 0d 0a 20 20   a database...  
1b80: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1b90: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
1ba0: 20 6e 61 6d 65 3d 22 63 6c 69 65 6e 74 44 61 74   name="clientDat
1bb0: 61 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  a">..    /// The
1bc0: 20 6f 70 74 69 6f 6e 61 6c 20 61 70 70 6c 69 63   optional applic
1bd0: 61 74 69 6f 6e 2d 64 65 66 69 6e 65 64 20 63 6f  ation-defined co
1be0: 6e 74 65 78 74 20 64 61 74 61 20 74 68 61 74 20  ntext data that 
1bf0: 77 61 73 20 6f 72 69 67 69 6e 61 6c 6c 79 0d 0a  was originally..
1c00: 20 20 20 20 2f 2f 2f 20 70 61 73 73 65 64 20 74      /// passed t
1c10: 6f 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c  o the..    /// <
1c20: 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
1c30: 65 43 68 61 6e 67 65 53 65 74 2e 41 70 70 6c 79  eChangeSet.Apply
1c40: 28 53 65 73 73 69 6f 6e 43 6f 6e 66 6c 69 63 74  (SessionConflict
1c50: 43 61 6c 6c 62 61 63 6b 2c 53 65 73 73 69 6f 6e  Callback,Session
1c60: 54 61 62 6c 65 46 69 6c 74 65 72 43 61 6c 6c 62  TableFilterCallb
1c70: 61 63 6b 2c 6f 62 6a 65 63 74 29 22 20 2f 3e 0d  ack,object)" />.
1c80: 0a 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 2e  .    /// method.
1c90: 20 20 54 68 69 73 20 76 61 6c 75 65 20 6d 61 79    This value may
1ca0: 20 62 65 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 2f   be null...    /
1cb0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1cc0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1cd0: 3d 22 74 79 70 65 22 3e 0d 0a 20 20 20 20 2f 2f  ="type">..    //
1ce0: 2f 20 54 68 65 20 74 79 70 65 20 6f 66 20 74 68  / The type of th
1cf0: 69 73 20 63 6f 6e 66 6c 69 63 74 2e 0d 0a 20 20  is conflict...  
1d00: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1d10: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1d20: 61 6d 65 3d 22 69 74 65 6d 22 3e 0d 0a 20 20 20  ame="item">..   
1d30: 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
1d40: 65 66 3d 22 49 53 51 4c 69 74 65 43 68 61 6e 67  ef="ISQLiteChang
1d50: 65 53 65 74 4d 65 74 61 64 61 74 61 49 74 65 6d  eSetMetadataItem
1d60: 22 20 2f 3e 20 6f 62 6a 65 63 74 20 61 73 73 6f  " /> object asso
1d70: 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20 20 20  ciated with..   
1d80: 20 2f 2f 2f 20 74 68 69 73 20 63 6f 6e 66 6c 69   /// this confli
1d90: 63 74 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20  ct.  This value 
1da0: 6d 61 79 20 6e 6f 74 20 62 65 20 6e 75 6c 6c 3b  may not be null;
1db0: 20 68 6f 77 65 76 65 72 2c 20 6f 6e 6c 79 20 70   however, only p
1dc0: 72 6f 70 65 72 74 69 65 73 0d 0a 20 20 20 20 2f  roperties..    /
1dd0: 2f 2f 20 74 68 61 74 20 61 72 65 20 61 70 70 6c  // that are appl
1de0: 69 63 61 62 6c 65 20 74 6f 20 74 68 65 20 63 6f  icable to the co
1df0: 6e 66 6c 69 63 74 20 74 79 70 65 20 77 69 6c 6c  nflict type will
1e00: 20 62 65 20 61 76 61 69 6c 61 62 6c 65 2e 20 20   be available.  
1e10: 46 75 72 74 68 65 72 0d 0a 20 20 20 20 2f 2f 2f  Further..    ///
1e20: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 6f 6e 20   information on 
1e30: 74 68 69 73 20 69 73 20 61 76 61 69 6c 61 62 6c  this is availabl
1e40: 65 20 77 69 74 68 69 6e 20 74 68 65 20 64 65 73  e within the des
1e50: 63 72 69 70 74 69 6f 6e 73 20 6f 66 20 74 68 65  criptions of the
1e60: 0d 0a 20 20 20 20 2f 2f 2f 20 61 76 61 69 6c 61  ..    /// availa
1e70: 62 6c 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  ble <see cref="S
1e80: 51 4c 69 74 65 43 68 61 6e 67 65 53 65 74 43 6f  QLiteChangeSetCo
1e90: 6e 66 6c 69 63 74 54 79 70 65 22 20 2f 3e 20 76  nflictType" /> v
1ea0: 61 6c 75 65 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20  alues...    /// 
1eb0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
1ec0: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
1ed0: 20 2f 2f 2f 20 41 20 3c 73 65 65 20 63 72 65 66   /// A <see cref
1ee0: 3d 22 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65  ="SQLiteChangeSe
1ef0: 74 43 6f 6e 66 6c 69 63 74 52 65 73 75 6c 74 22  tConflictResult"
1f00: 20 2f 3e 20 76 61 6c 75 65 20 74 68 61 74 20 69   /> value that i
1f10: 6e 64 69 63 61 74 65 73 20 74 68 65 0d 0a 20 20  ndicates the..  
1f20: 20 20 2f 2f 2f 20 61 63 74 69 6f 6e 20 74 6f 20    /// action to 
1f30: 62 65 20 74 61 6b 65 6e 20 69 6e 20 6f 72 64 65  be taken in orde
1f40: 72 20 74 6f 20 72 65 73 6f 6c 76 65 20 74 68 65  r to resolve the
1f50: 20 63 6f 6e 66 6c 69 63 74 2e 20 20 54 68 72 6f   conflict.  Thro
1f60: 77 69 6e 67 20 61 6e 0d 0a 20 20 20 20 2f 2f 2f  wing an..    ///
1f70: 20 65 78 63 65 70 74 69 6f 6e 20 66 72 6f 6d 20   exception from 
1f80: 74 68 69 73 20 63 61 6c 6c 62 61 63 6b 20 77 69  this callback wi
1f90: 6c 6c 20 72 65 73 75 6c 74 20 69 6e 20 75 6e 64  ll result in und
1fa0: 65 66 69 6e 65 64 20 62 65 68 61 76 69 6f 72 2e  efined behavior.
1fb0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75  ..    /// </retu
1fc0: 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63  rns>..    public
1fd0: 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
1fe0: 43 68 61 6e 67 65 53 65 74 43 6f 6e 66 6c 69 63  ChangeSetConflic
1ff0: 74 52 65 73 75 6c 74 20 53 65 73 73 69 6f 6e 43  tResult SessionC
2000: 6f 6e 66 6c 69 63 74 43 61 6c 6c 62 61 63 6b 28  onflictCallback(
2010: 0d 0a 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74  ..        object
2020: 20 63 6c 69 65 6e 74 44 61 74 61 2c 0d 0a 20 20   clientData,..  
2030: 20 20 20 20 20 20 53 51 4c 69 74 65 43 68 61 6e        SQLiteChan
2040: 67 65 53 65 74 43 6f 6e 66 6c 69 63 74 54 79 70  geSetConflictTyp
2050: 65 20 74 79 70 65 2c 0d 0a 20 20 20 20 20 20 20  e type,..       
2060: 20 49 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65   ISQLiteChangeSe
2070: 74 4d 65 74 61 64 61 74 61 49 74 65 6d 20 69 74  tMetadataItem it
2080: 65 6d 0d 0a 20 20 20 20 29 3b 0d 0a 20 20 20 20  em..    );..    
2090: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
20a0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
20b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
20f0: 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 49 53 51  .    #region ISQ
2100: 4c 69 74 65 43 68 61 6e 67 65 53 65 74 20 49 6e  LiteChangeSet In
2110: 74 65 72 66 61 63 65 0d 0a 20 20 20 20 2f 2f 2f  terface..    ///
2120: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2130: 2f 2f 2f 20 54 68 69 73 20 69 6e 74 65 72 66 61  /// This interfa
2140: 63 65 20 63 6f 6e 74 61 69 6e 73 20 6d 65 74 68  ce contains meth
2150: 6f 64 73 20 75 73 65 64 20 74 6f 20 6d 61 6e 69  ods used to mani
2160: 70 75 6c 61 74 65 20 61 20 73 65 74 20 6f 66 20  pulate a set of 
2170: 63 68 61 6e 67 65 73 20 66 6f 72 0d 0a 20 20 20  changes for..   
2180: 20 2f 2f 2f 20 61 20 64 61 74 61 62 61 73 65 2e   /// a database.
2190: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
21a0: 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63  ary>..    public
21b0: 20 69 6e 74 65 72 66 61 63 65 20 49 53 51 4c 69   interface ISQLi
21c0: 74 65 43 68 61 6e 67 65 53 65 74 20 3a 0d 0a 20  teChangeSet :.. 
21d0: 20 20 20 20 20 20 20 49 45 6e 75 6d 65 72 61 62         IEnumerab
21e0: 6c 65 3c 49 53 51 4c 69 74 65 43 68 61 6e 67 65  le<ISQLiteChange
21f0: 53 65 74 4d 65 74 61 64 61 74 61 49 74 65 6d 3e  SetMetadataItem>
2200: 2c 20 49 44 69 73 70 6f 73 61 62 6c 65 0d 0a 20  , IDisposable.. 
2210: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f     {..        //
2220: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2230: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65       /// This me
2240: 74 68 6f 64 20 22 69 6e 76 65 72 74 73 22 20 74  thod "inverts" t
2250: 68 65 20 73 65 74 20 6f 66 20 63 68 61 6e 67 65  he set of change
2260: 73 20 77 69 74 68 69 6e 20 74 68 69 73 20 69 6e  s within this in
2270: 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20  stance...       
2280: 20 2f 2f 2f 20 41 70 70 6c 79 69 6e 67 20 61 6e   /// Applying an
2290: 20 69 6e 76 65 72 74 65 64 20 73 65 74 20 6f 66   inverted set of
22a0: 20 63 68 61 6e 67 65 73 20 74 6f 20 61 20 64 61   changes to a da
22b0: 74 61 62 61 73 65 20 72 65 76 65 72 73 65 73 20  tabase reverses 
22c0: 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
22d0: 20 65 66 66 65 63 74 73 20 6f 66 20 61 70 70 6c   effects of appl
22e0: 79 69 6e 67 20 74 68 65 20 75 6e 69 6e 76 65 72  ying the uninver
22f0: 74 65 64 20 63 68 61 6e 67 65 73 2e 20 20 53 70  ted changes.  Sp
2300: 65 63 69 66 69 63 61 6c 6c 79 3a 0d 0a 20 20 20  ecifically:..   
2310: 20 20 20 20 20 2f 2f 2f 20 3c 21 5b 43 44 41 54       /// <![CDAT
2320: 41 5b 3c 75 6c 3e 5d 5d 3e 3c 21 5b 43 44 41 54  A[<ul>]]><![CDAT
2330: 41 5b 3c 6c 69 3e 5d 5d 3e 0d 0a 20 20 20 20 20  A[<li>]]>..     
2340: 20 20 20 2f 2f 2f 20 45 61 63 68 20 44 45 4c 45     /// Each DELE
2350: 54 45 20 63 68 61 6e 67 65 20 69 73 20 63 68 61  TE change is cha
2360: 6e 67 65 64 20 74 6f 20 61 6e 20 49 4e 53 45 52  nged to an INSER
2370: 54 2c 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20  T, and..        
2380: 2f 2f 2f 20 3c 21 5b 43 44 41 54 41 5b 3c 2f 6c  /// <![CDATA[</l
2390: 69 3e 5d 5d 3e 3c 21 5b 43 44 41 54 41 5b 3c 6c  i>]]><![CDATA[<l
23a0: 69 3e 5d 5d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  i>]]>..        /
23b0: 2f 2f 20 45 61 63 68 20 49 4e 53 45 52 54 20 63  // Each INSERT c
23c0: 68 61 6e 67 65 20 69 73 20 63 68 61 6e 67 65 64  hange is changed
23d0: 20 74 6f 20 61 20 44 45 4c 45 54 45 2c 20 61 6e   to a DELETE, an
23e0: 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  d..        /// <
23f0: 21 5b 43 44 41 54 41 5b 3c 2f 6c 69 3e 5d 5d 3e  ![CDATA[</li>]]>
2400: 3c 21 5b 43 44 41 54 41 5b 3c 6c 69 3e 5d 5d 3e  <![CDATA[<li>]]>
2410: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 46 6f  ..        /// Fo
2420: 72 20 65 61 63 68 20 55 50 44 41 54 45 20 63 68  r each UPDATE ch
2430: 61 6e 67 65 2c 20 74 68 65 20 6f 6c 64 2e 2a 20  ange, the old.* 
2440: 61 6e 64 20 6e 65 77 2e 2a 20 76 61 6c 75 65 73  and new.* values
2450: 20 61 72 65 20 65 78 63 68 61 6e 67 65 64 2e 0d   are exchanged..
2460: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 21 5b  .        /// <![
2470: 43 44 41 54 41 5b 3c 2f 6c 69 3e 5d 5d 3e 3c 21  CDATA[</li>]]><!
2480: 5b 43 44 41 54 41 5b 3c 2f 75 6c 3e 5d 5d 3e 0d  [CDATA[</ul>]]>.
2490: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
24a0: 73 20 6d 65 74 68 6f 64 20 64 6f 65 73 20 6e 6f  s method does no
24b0: 74 20 63 68 61 6e 67 65 20 74 68 65 20 6f 72 64  t change the ord
24c0: 65 72 20 69 6e 20 77 68 69 63 68 20 63 68 61 6e  er in which chan
24d0: 67 65 73 20 61 70 70 65 61 72 0d 0a 20 20 20 20  ges appear..    
24e0: 20 20 20 20 2f 2f 2f 20 77 69 74 68 69 6e 20 74      /// within t
24f0: 68 65 20 73 65 74 20 6f 66 20 63 68 61 6e 67 65  he set of change
2500: 73 2e 20 49 74 20 6d 65 72 65 6c 79 20 72 65 76  s. It merely rev
2510: 65 72 73 65 73 20 74 68 65 20 73 65 6e 73 65 20  erses the sense 
2520: 6f 66 20 65 61 63 68 0d 0a 20 20 20 20 20 20 20  of each..       
2530: 20 2f 2f 2f 20 69 6e 64 69 76 69 64 75 61 6c 20   /// individual 
2540: 63 68 61 6e 67 65 2e 0d 0a 20 20 20 20 20 20 20  change...       
2550: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2560: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
2570: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
2580: 2f 2f 2f 20 54 68 65 20 6e 65 77 20 3c 73 65 65  /// The new <see
2590: 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 43 68   cref="ISQLiteCh
25a0: 61 6e 67 65 53 65 74 22 20 2f 3e 20 69 6e 73 74  angeSet" /> inst
25b0: 61 6e 63 65 20 74 68 61 74 20 72 65 70 72 65 73  ance that repres
25c0: 65 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ents..        //
25d0: 2f 20 74 68 65 20 72 65 73 75 6c 74 69 6e 67 20  / the resulting 
25e0: 73 65 74 20 6f 66 20 63 68 61 6e 67 65 73 20 2d  set of changes -
25f0: 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 20 69  OR- null if it i
2600: 73 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 2e  s not available.
2610: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
2620: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
2630: 20 20 49 53 51 4c 69 74 65 43 68 61 6e 67 65 53    ISQLiteChangeS
2640: 65 74 20 49 6e 76 65 72 74 28 29 3b 0d 0a 0d 0a  et Invert();....
2650: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
2660: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
2670: 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 63  // This method c
2680: 6f 6d 62 69 6e 65 73 20 74 68 65 20 73 70 65 63  ombines the spec
2690: 69 66 69 65 64 20 73 65 74 20 6f 66 20 63 68 61  ified set of cha
26a0: 6e 67 65 73 20 77 69 74 68 20 74 68 65 20 6f 6e  nges with the on
26b0: 65 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  es..        /// 
26c0: 63 6f 6e 74 61 69 6e 65 64 20 69 6e 20 74 68 69  contained in thi
26d0: 73 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  s instance...   
26e0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
26f0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
2700: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 68   <param name="ch
2710: 61 6e 67 65 53 65 74 22 3e 0d 0a 20 20 20 20 20  angeSet">..     
2720: 20 20 20 2f 2f 2f 20 54 68 65 20 63 68 61 6e 67     /// The chang
2730: 65 73 20 74 6f 20 62 65 20 63 6f 6d 62 69 6e 65  es to be combine
2740: 64 20 77 69 74 68 20 74 68 6f 73 65 20 69 6e 20  d with those in 
2750: 74 68 69 73 20 69 6e 73 74 61 6e 63 65 2e 0d 0a  this instance...
2760: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2770: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
2780: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
2790: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77       /// The new
27a0: 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
27b0: 69 74 65 43 68 61 6e 67 65 53 65 74 22 20 2f 3e  iteChangeSet" />
27c0: 20 69 6e 73 74 61 6e 63 65 20 74 68 61 74 20 72   instance that r
27d0: 65 70 72 65 73 65 6e 74 73 0d 0a 20 20 20 20 20  epresents..     
27e0: 20 20 20 2f 2f 2f 20 74 68 65 20 72 65 73 75 6c     /// the resul
27f0: 74 69 6e 67 20 73 65 74 20 6f 66 20 63 68 61 6e  ting set of chan
2800: 67 65 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66  ges -OR- null if
2810: 20 69 74 20 69 73 20 6e 6f 74 20 61 76 61 69 6c   it is not avail
2820: 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  able...        /
2830: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
2840: 20 20 20 20 20 20 20 49 53 51 4c 69 74 65 43 68         ISQLiteCh
2850: 61 6e 67 65 53 65 74 20 43 6f 6d 62 69 6e 65 57  angeSet CombineW
2860: 69 74 68 28 49 53 51 4c 69 74 65 43 68 61 6e 67  ith(ISQLiteChang
2870: 65 53 65 74 20 63 68 61 6e 67 65 53 65 74 29 3b  eSet changeSet);
2880: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
2890: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
28a0: 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20     /// Attempts 
28b0: 74 6f 20 61 70 70 6c 79 20 74 68 65 20 73 65 74  to apply the set
28c0: 20 6f 66 20 63 68 61 6e 67 65 73 20 69 6e 20 74   of changes in t
28d0: 68 69 73 20 69 6e 73 74 61 6e 63 65 20 74 6f 20  his instance to 
28e0: 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
28f0: 20 61 73 73 6f 63 69 61 74 65 64 20 64 61 74 61   associated data
2900: 62 61 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  base...        /
2910: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2920: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2930: 6d 20 6e 61 6d 65 3d 22 63 6f 6e 66 6c 69 63 74  m name="conflict
2940: 43 61 6c 6c 62 61 63 6b 22 3e 0d 0a 20 20 20 20  Callback">..    
2950: 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
2960: 20 63 72 65 66 3d 22 53 65 73 73 69 6f 6e 43 6f   cref="SessionCo
2970: 6e 66 6c 69 63 74 43 61 6c 6c 62 61 63 6b 22 20  nflictCallback" 
2980: 2f 3e 20 64 65 6c 65 67 61 74 65 20 74 68 61 74  /> delegate that
2990: 20 77 69 6c 6c 20 6e 65 65 64 0d 0a 20 20 20 20   will need..    
29a0: 20 20 20 20 2f 2f 2f 20 74 6f 20 68 61 6e 64 6c      /// to handl
29b0: 65 20 61 6e 79 20 63 6f 6e 66 6c 69 63 74 69 6e  e any conflictin
29c0: 67 20 63 68 61 6e 67 65 73 20 74 68 61 74 20 6d  g changes that m
29d0: 61 79 20 61 72 69 73 65 2e 0d 0a 20 20 20 20 20  ay arise...     
29e0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
29f0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
2a00: 72 61 6d 20 6e 61 6d 65 3d 22 63 6c 69 65 6e 74  ram name="client
2a10: 44 61 74 61 22 3e 0d 0a 20 20 20 20 20 20 20 20  Data">..        
2a20: 2f 2f 2f 20 54 68 65 20 6f 70 74 69 6f 6e 61 6c  /// The optional
2a30: 20 61 70 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66   application-def
2a40: 69 6e 65 64 20 63 6f 6e 74 65 78 74 20 64 61 74  ined context dat
2a50: 61 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20 6d  a.  This value m
2a60: 61 79 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f  ay be..        /
2a70: 2f 2f 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20  // null...      
2a80: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2a90: 20 20 20 20 20 20 20 20 76 6f 69 64 20 41 70 70          void App
2aa0: 6c 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ly(..           
2ab0: 20 53 65 73 73 69 6f 6e 43 6f 6e 66 6c 69 63 74   SessionConflict
2ac0: 43 61 6c 6c 62 61 63 6b 20 63 6f 6e 66 6c 69 63  Callback conflic
2ad0: 74 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20  tCallback,..    
2ae0: 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 63          object c
2af0: 6c 69 65 6e 74 44 61 74 61 0d 0a 20 20 20 20 20  lientData..     
2b00: 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20     );....       
2b10: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2b20: 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65          /// Atte
2b30: 6d 70 74 73 20 74 6f 20 61 70 70 6c 79 20 74 68  mpts to apply th
2b40: 65 20 73 65 74 20 6f 66 20 63 68 61 6e 67 65 73  e set of changes
2b50: 20 69 6e 20 74 68 69 73 20 69 6e 73 74 61 6e 63   in this instanc
2b60: 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  e to the..      
2b70: 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64    /// associated
2b80: 20 64 61 74 61 62 61 73 65 2e 0d 0a 20 20 20 20   database...    
2b90: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2ba0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
2bb0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e  <param name="con
2bc0: 66 6c 69 63 74 43 61 6c 6c 62 61 63 6b 22 3e 0d  flictCallback">.
2bd0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
2be0: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 65 73 73   <see cref="Sess
2bf0: 69 6f 6e 43 6f 6e 66 6c 69 63 74 43 61 6c 6c 62  ionConflictCallb
2c00: 61 63 6b 22 20 2f 3e 20 64 65 6c 65 67 61 74 65  ack" /> delegate
2c10: 20 74 68 61 74 20 77 69 6c 6c 20 6e 65 65 64 0d   that will need.
2c20: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20  .        /// to 
2c30: 68 61 6e 64 6c 65 20 61 6e 79 20 63 6f 6e 66 6c  handle any confl
2c40: 69 63 74 69 6e 67 20 63 68 61 6e 67 65 73 20 74  icting changes t
2c50: 68 61 74 20 6d 61 79 20 61 72 69 73 65 2e 0d 0a  hat may arise...
2c60: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2c70: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
2c80: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74  / <param name="t
2c90: 61 62 6c 65 46 69 6c 74 65 72 43 61 6c 6c 62 61  ableFilterCallba
2ca0: 63 6b 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ck">..        //
2cb0: 2f 20 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 3c  / The optional <
2cc0: 73 65 65 20 63 72 65 66 3d 22 53 65 73 73 69 6f  see cref="Sessio
2cd0: 6e 54 61 62 6c 65 46 69 6c 74 65 72 43 61 6c 6c  nTableFilterCall
2ce0: 62 61 63 6b 22 20 2f 3e 20 64 65 6c 65 67 61 74  back" /> delegat
2cf0: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  e..        /// t
2d00: 68 61 74 20 63 61 6e 20 62 65 20 75 73 65 64 20  hat can be used 
2d10: 74 6f 20 66 69 6c 74 65 72 20 74 68 65 20 6c 69  to filter the li
2d20: 73 74 20 6f 66 20 74 61 62 6c 65 73 20 69 6d 70  st of tables imp
2d30: 61 63 74 65 64 20 62 79 20 74 68 65 20 73 65 74  acted by the set
2d40: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 66  ..        /// of
2d50: 20 63 68 61 6e 67 65 73 2e 0d 0a 20 20 20 20 20   changes...     
2d60: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2d70: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
2d80: 72 61 6d 20 6e 61 6d 65 3d 22 63 6c 69 65 6e 74  ram name="client
2d90: 44 61 74 61 22 3e 0d 0a 20 20 20 20 20 20 20 20  Data">..        
2da0: 2f 2f 2f 20 54 68 65 20 6f 70 74 69 6f 6e 61 6c  /// The optional
2db0: 20 61 70 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66   application-def
2dc0: 69 6e 65 64 20 63 6f 6e 74 65 78 74 20 64 61 74  ined context dat
2dd0: 61 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20 6d  a.  This value m
2de0: 61 79 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f  ay be..        /
2df0: 2f 2f 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20  // null...      
2e00: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2e10: 20 20 20 20 20 20 20 20 76 6f 69 64 20 41 70 70          void App
2e20: 6c 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ly(..           
2e30: 20 53 65 73 73 69 6f 6e 43 6f 6e 66 6c 69 63 74   SessionConflict
2e40: 43 61 6c 6c 62 61 63 6b 20 63 6f 6e 66 6c 69 63  Callback conflic
2e50: 74 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20  tCallback,..    
2e60: 20 20 20 20 20 20 20 20 53 65 73 73 69 6f 6e 54          SessionT
2e70: 61 62 6c 65 46 69 6c 74 65 72 43 61 6c 6c 62 61  ableFilterCallba
2e80: 63 6b 20 74 61 62 6c 65 46 69 6c 74 65 72 43 61  ck tableFilterCa
2e90: 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20  llback,..       
2ea0: 20 20 20 20 20 6f 62 6a 65 63 74 20 63 6c 69 65       object clie
2eb0: 6e 74 44 61 74 61 0d 0a 20 20 20 20 20 20 20 20  ntData..        
2ec0: 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  );..    }..    #
2ed0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
2ee0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2f30: 20 20 20 20 23 72 65 67 69 6f 6e 20 49 53 51 4c      #region ISQL
2f40: 69 74 65 43 68 61 6e 67 65 47 72 6f 75 70 20 49  iteChangeGroup I
2f50: 6e 74 65 72 66 61 63 65 0d 0a 20 20 20 20 2f 2f  nterface..    //
2f60: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2f70: 20 2f 2f 2f 20 54 68 69 73 20 69 6e 74 65 72 66   /// This interf
2f80: 61 63 65 20 63 6f 6e 74 61 69 6e 73 20 6d 65 74  ace contains met
2f90: 68 6f 64 73 20 75 73 65 64 20 74 6f 20 6d 61 6e  hods used to man
2fa0: 69 70 75 6c 61 74 65 20 6d 75 6c 74 69 70 6c 65  ipulate multiple
2fb0: 20 73 65 74 73 20 6f 66 0d 0a 20 20 20 20 2f 2f   sets of..    //
2fc0: 2f 20 63 68 61 6e 67 65 73 20 66 6f 72 20 61 20  / changes for a 
2fd0: 64 61 74 61 62 61 73 65 2e 0d 0a 20 20 20 20 2f  database...    /
2fe0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2ff0: 20 20 20 70 75 62 6c 69 63 20 69 6e 74 65 72 66     public interf
3000: 61 63 65 20 49 53 51 4c 69 74 65 43 68 61 6e 67  ace ISQLiteChang
3010: 65 47 72 6f 75 70 20 3a 20 49 44 69 73 70 6f 73  eGroup : IDispos
3020: 61 62 6c 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  able..    {..   
3030: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
3040: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
3050: 41 74 74 65 6d 70 74 73 20 74 6f 20 61 64 64 20  Attempts to add 
3060: 61 20 63 68 61 6e 67 65 20 73 65 74 20 28 6f 72  a change set (or
3070: 20 70 61 74 63 68 20 73 65 74 29 20 74 6f 20 74   patch set) to t
3080: 68 69 73 20 63 68 61 6e 67 65 20 67 72 6f 75 70  his change group
3090: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e  ..        /// in
30a0: 73 74 61 6e 63 65 2e 20 20 54 68 65 20 75 6e 64  stance.  The und
30b0: 65 72 6c 79 69 6e 67 20 64 61 74 61 20 6d 75 73  erlying data mus
30c0: 74 20 62 65 20 63 6f 6e 74 61 69 6e 65 64 20 65  t be contained e
30d0: 6e 74 69 72 65 6c 79 20 77 69 74 68 69 6e 0d 0a  ntirely within..
30e0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20          /// the 
30f0: 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22  <paramref name="
3100: 72 61 77 44 61 74 61 22 20 2f 3e 20 62 79 74 65  rawData" /> byte
3110: 20 61 72 72 61 79 2e 0d 0a 20 20 20 20 20 20 20   array...       
3120: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
3130: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
3140: 72 61 6d 20 6e 61 6d 65 3d 22 72 61 77 44 61 74  ram name="rawDat
3150: 61 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  a">..        ///
3160: 20 54 68 65 20 72 61 77 20 62 79 74 65 20 64 61   The raw byte da
3170: 74 61 20 66 6f 72 20 74 68 65 20 73 70 65 63 69  ta for the speci
3180: 66 69 65 64 20 63 68 61 6e 67 65 20 73 65 74 20  fied change set 
3190: 28 6f 72 20 70 61 74 63 68 20 73 65 74 29 2e 0d  (or patch set)..
31a0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
31b0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 76  aram>..        v
31c0: 6f 69 64 20 41 64 64 43 68 61 6e 67 65 53 65 74  oid AddChangeSet
31d0: 28 62 79 74 65 5b 5d 20 72 61 77 44 61 74 61 29  (byte[] rawData)
31e0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
31f0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
3200: 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73      /// Attempts
3210: 20 74 6f 20 61 64 64 20 61 20 63 68 61 6e 67 65   to add a change
3220: 20 73 65 74 20 28 6f 72 20 70 61 74 63 68 20 73   set (or patch s
3230: 65 74 29 20 74 6f 20 74 68 69 73 20 63 68 61 6e  et) to this chan
3240: 67 65 20 67 72 6f 75 70 0d 0a 20 20 20 20 20 20  ge group..      
3250: 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 2e 20    /// instance. 
3260: 20 54 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20   The underlying 
3270: 64 61 74 61 20 77 69 6c 6c 20 62 65 20 72 65 61  data will be rea
3280: 64 20 66 72 6f 6d 20 74 68 65 20 73 70 65 63 69  d from the speci
3290: 66 69 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  fied..        //
32a0: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 74 72  / <see cref="Str
32b0: 65 61 6d 22 20 2f 3e 2e 0d 0a 20 20 20 20 20 20  eam" />...      
32c0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
32d0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
32e0: 61 72 61 6d 20 6e 61 6d 65 3d 22 73 74 72 65 61  aram name="strea
32f0: 6d 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  m">..        ///
3300: 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
3310: 53 74 72 65 61 6d 22 20 2f 3e 20 69 6e 73 74 61  Stream" /> insta
3320: 6e 63 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74  nce containing t
3330: 68 65 20 72 61 77 20 63 68 61 6e 67 65 20 73 65  he raw change se
3340: 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 28  t..        /// (
3350: 6f 72 20 70 61 74 63 68 20 73 65 74 29 20 64 61  or patch set) da
3360: 74 61 20 74 6f 20 72 65 61 64 2e 0d 0a 20 20 20  ta to read...   
3370: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
3380: 3e 0d 0a 20 20 20 20 20 20 20 20 76 6f 69 64 20  >..        void 
3390: 41 64 64 43 68 61 6e 67 65 53 65 74 28 53 74 72  AddChangeSet(Str
33a0: 65 61 6d 20 73 74 72 65 61 6d 29 3b 0d 0a 0d 0a  eam stream);....
33b0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
33c0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
33d0: 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20 63  // Attempts to c
33e0: 72 65 61 74 65 20 61 6e 64 20 72 65 74 75 72 6e  reate and return
33f0: 2c 20 76 69 61 20 3c 70 61 72 61 6d 72 65 66 20  , via <paramref 
3400: 6e 61 6d 65 3d 22 72 61 77 44 61 74 61 22 20 2f  name="rawData" /
3410: 3e 2c 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  >, the..        
3420: 2f 2f 2f 20 63 6f 6d 62 69 6e 65 64 20 73 65 74  /// combined set
3430: 20 6f 66 20 63 68 61 6e 67 65 73 20 72 65 70 72   of changes repr
3440: 65 73 65 6e 74 65 64 20 62 79 20 74 68 69 73 20  esented by this 
3450: 63 68 61 6e 67 65 20 67 72 6f 75 70 20 69 6e 73  change group ins
3460: 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20  tance...        
3470: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
3480: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
3490: 61 6d 20 6e 61 6d 65 3d 22 72 61 77 44 61 74 61  am name="rawData
34a0: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
34b0: 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68  Upon success, th
34c0: 69 73 20 77 69 6c 6c 20 63 6f 6e 74 61 69 6e 20  is will contain 
34d0: 74 68 65 20 72 61 77 20 62 79 74 65 20 64 61 74  the raw byte dat
34e0: 61 20 66 6f 72 20 61 6c 6c 20 74 68 65 0d 0a 20  a for all the.. 
34f0: 20 20 20 20 20 20 20 2f 2f 2f 20 63 68 61 6e 67         /// chang
3500: 65 73 20 69 6e 20 74 68 69 73 20 63 68 61 6e 67  es in this chang
3510: 65 20 67 72 6f 75 70 20 69 6e 73 74 61 6e 63 65  e group instance
3520: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
3530: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
3540: 20 76 6f 69 64 20 43 72 65 61 74 65 43 68 61 6e   void CreateChan
3550: 67 65 53 65 74 28 72 65 66 20 62 79 74 65 5b 5d  geSet(ref byte[]
3560: 20 72 61 77 44 61 74 61 29 3b 0d 0a 0d 0a 20 20   rawData);....  
3570: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
3580: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
3590: 20 41 74 74 65 6d 70 74 73 20 74 6f 20 63 72 65   Attempts to cre
35a0: 61 74 65 20 61 6e 64 20 77 72 69 74 65 2c 20 76  ate and write, v
35b0: 69 61 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d  ia <paramref nam
35c0: 65 3d 22 73 74 72 65 61 6d 22 20 2f 3e 2c 20 74  e="stream" />, t
35d0: 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
35e0: 63 6f 6d 62 69 6e 65 64 20 73 65 74 20 6f 66 20  combined set of 
35f0: 63 68 61 6e 67 65 73 20 72 65 70 72 65 73 65 6e  changes represen
3600: 74 65 64 20 62 79 20 74 68 69 73 20 63 68 61 6e  ted by this chan
3610: 67 65 20 67 72 6f 75 70 20 69 6e 73 74 61 6e 63  ge group instanc
3620: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
3630: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
3640: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
3650: 61 6d 65 3d 22 73 74 72 65 61 6d 22 3e 0d 0a 20  ame="stream">.. 
3660: 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20         /// Upon 
3670: 73 75 63 63 65 73 73 2c 20 74 68 65 20 72 61 77  success, the raw
3680: 20 62 79 74 65 20 64 61 74 61 20 66 6f 72 20 61   byte data for a
3690: 6c 6c 20 74 68 65 20 63 68 61 6e 67 65 73 20 69  ll the changes i
36a0: 6e 20 74 68 69 73 20 63 68 61 6e 67 65 0d 0a 20  n this change.. 
36b0: 20 20 20 20 20 20 20 2f 2f 2f 20 67 72 6f 75 70         /// group
36c0: 20 69 6e 73 74 61 6e 63 65 20 77 69 6c 6c 20 62   instance will b
36d0: 65 20 77 72 69 74 74 65 6e 20 74 6f 20 74 68 69  e written to thi
36e0: 73 20 3c 73 65 65 20 63 72 65 66 3d 22 53 74 72  s <see cref="Str
36f0: 65 61 6d 22 20 2f 3e 2e 0d 0a 20 20 20 20 20 20  eam" />...      
3700: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
3710: 20 20 20 20 20 20 20 20 76 6f 69 64 20 43 72 65          void Cre
3720: 61 74 65 43 68 61 6e 67 65 53 65 74 28 53 74 72  ateChangeSet(Str
3730: 65 61 6d 20 73 74 72 65 61 6d 29 3b 0d 0a 20 20  eam stream);..  
3740: 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
3750: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
3760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37a0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
37b0: 65 67 69 6f 6e 20 49 53 51 4c 69 74 65 43 68 61  egion ISQLiteCha
37c0: 6e 67 65 53 65 74 4d 65 74 61 64 61 74 61 49 74  ngeSetMetadataIt
37d0: 65 6d 20 49 6e 74 65 72 66 61 63 65 0d 0a 20 20  em Interface..  
37e0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
37f0: 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 6e  .    /// This in
3800: 74 65 72 66 61 63 65 20 63 6f 6e 74 61 69 6e 73  terface contains
3810: 20 70 72 6f 70 65 72 74 69 65 73 20 61 6e 64 20   properties and 
3820: 6d 65 74 68 6f 64 73 20 75 73 65 64 20 74 6f 20  methods used to 
3830: 66 65 74 63 68 20 6d 65 74 61 64 61 74 61 0d 0a  fetch metadata..
3840: 20 20 20 20 2f 2f 2f 20 61 62 6f 75 74 20 6f 6e      /// about on
3850: 65 20 63 68 61 6e 67 65 20 77 69 74 68 69 6e 20  e change within 
3860: 61 20 73 65 74 20 6f 66 20 63 68 61 6e 67 65 73  a set of changes
3870: 20 66 6f 72 20 61 20 64 61 74 61 62 61 73 65 2e   for a database.
3880: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
3890: 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63  ary>..    public
38a0: 20 69 6e 74 65 72 66 61 63 65 20 49 53 51 4c 69   interface ISQLi
38b0: 74 65 43 68 61 6e 67 65 53 65 74 4d 65 74 61 64  teChangeSetMetad
38c0: 61 74 61 49 74 65 6d 20 3a 20 49 44 69 73 70 6f  ataItem : IDispo
38d0: 73 61 62 6c 65 0d 0a 20 20 20 20 7b 0d 0a 20 20  sable..    {..  
38e0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
38f0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
3900: 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   The name of the
3910: 20 74 61 62 6c 65 20 74 68 65 20 63 68 61 6e 67   table the chang
3920: 65 20 77 61 73 20 6d 61 64 65 20 74 6f 2e 0d 0a  e was made to...
3930: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
3940: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
3950: 73 74 72 69 6e 67 20 54 61 62 6c 65 4e 61 6d 65  string TableName
3960: 20 7b 20 67 65 74 3b 20 7d 0d 0a 0d 0a 20 20 20   { get; }....   
3970: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
3980: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
3990: 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f  The number of co
39a0: 6c 75 6d 6e 73 20 69 6d 70 61 63 74 65 64 20 62  lumns impacted b
39b0: 79 20 74 68 69 73 20 63 68 61 6e 67 65 2e 20 20  y this change.  
39c0: 54 68 69 73 20 76 61 6c 75 65 20 63 61 6e 20 62  This value can b
39d0: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75  e..        /// u
39e0: 73 65 64 20 74 6f 20 64 65 74 65 72 6d 69 6e 65  sed to determine
39f0: 20 74 68 65 20 68 69 67 68 65 73 74 20 76 61 6c   the highest val
3a00: 69 64 20 63 6f 6c 75 6d 6e 20 69 6e 64 65 78 20  id column index 
3a10: 74 68 61 74 20 6d 61 79 20 62 65 20 75 73 65 64  that may be used
3a20: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69  ..        /// wi
3a30: 74 68 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  th the <see cref
3a40: 3d 22 47 65 74 4f 6c 64 56 61 6c 75 65 22 20 2f  ="GetOldValue" /
3a50: 3e 2c 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65  >, <see cref="Ge
3a60: 74 4e 65 77 56 61 6c 75 65 22 20 2f 3e 2c 0d 0a  tNewValue" />,..
3a70: 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6e 64 20          /// and 
3a80: 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74 43 6f  <see cref="GetCo
3a90: 6e 66 6c 69 63 74 56 61 6c 75 65 22 20 2f 3e 20  nflictValue" /> 
3aa0: 6d 65 74 68 6f 64 73 20 6f 66 20 74 68 69 73 20  methods of this 
3ab0: 69 6e 74 65 72 66 61 63 65 2e 20 20 49 74 0d 0a  interface.  It..
3ac0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 6c 6c          /// will
3ad0: 20 62 65 20 74 68 69 73 20 76 61 6c 75 65 20 6d   be this value m
3ae0: 69 6e 75 73 20 6f 6e 65 2e 0d 0a 20 20 20 20 20  inus one...     
3af0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
3b00: 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 4e  >..        int N
3b10: 75 6d 62 65 72 4f 66 43 6f 6c 75 6d 6e 73 20 7b  umberOfColumns {
3b20: 20 67 65 74 3b 20 7d 0d 0a 0d 0a 20 20 20 20 20   get; }....     
3b30: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
3b40: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
3b50: 69 73 20 77 69 6c 6c 20 63 6f 6e 74 61 69 6e 20  is will contain 
3b60: 74 68 65 20 76 61 6c 75 65 0d 0a 20 20 20 20 20  the value..     
3b70: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
3b80: 3d 22 53 51 4c 69 74 65 41 75 74 68 6f 72 69 7a  ="SQLiteAuthoriz
3b90: 65 72 41 63 74 69 6f 6e 43 6f 64 65 2e 49 6e 73  erActionCode.Ins
3ba0: 65 72 74 22 20 2f 3e 2c 0d 0a 20 20 20 20 20 20  ert" />,..      
3bb0: 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
3bc0: 22 53 51 4c 69 74 65 41 75 74 68 6f 72 69 7a 65  "SQLiteAuthorize
3bd0: 72 41 63 74 69 6f 6e 43 6f 64 65 2e 55 70 64 61  rActionCode.Upda
3be0: 74 65 22 20 2f 3e 2c 20 6f 72 0d 0a 20 20 20 20  te" />, or..    
3bf0: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
3c00: 66 3d 22 53 51 4c 69 74 65 41 75 74 68 6f 72 69  f="SQLiteAuthori
3c10: 7a 65 72 41 63 74 69 6f 6e 43 6f 64 65 2e 44 65  zerActionCode.De
3c20: 6c 65 74 65 22 20 2f 3e 2c 20 63 6f 72 72 65 73  lete" />, corres
3c30: 70 6f 6e 64 69 6e 67 20 74 6f 0d 0a 20 20 20 20  ponding to..    
3c40: 20 20 20 20 2f 2f 2f 20 74 68 65 20 6f 76 65 72      /// the over
3c50: 61 6c 6c 20 74 79 70 65 20 6f 66 20 63 68 61 6e  all type of chan
3c60: 67 65 20 74 68 69 73 20 69 74 65 6d 20 72 65 70  ge this item rep
3c70: 72 65 73 65 6e 74 73 2e 0d 0a 20 20 20 20 20 20  resents...      
3c80: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
3c90: 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
3ca0: 41 75 74 68 6f 72 69 7a 65 72 41 63 74 69 6f 6e  AuthorizerAction
3cb0: 43 6f 64 65 20 4f 70 65 72 61 74 69 6f 6e 43 6f  Code OperationCo
3cc0: 64 65 20 7b 20 67 65 74 3b 20 7d 0d 0a 0d 0a 20  de { get; }.... 
3cd0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
3ce0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
3cf0: 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68  / Non-zero if th
3d00: 69 73 20 63 68 61 6e 67 65 20 69 73 20 63 6f 6e  is change is con
3d10: 73 69 64 65 72 65 64 20 74 6f 20 62 65 20 69 6e  sidered to be in
3d20: 64 69 72 65 63 74 20 28 69 2e 65 2e 20 61 73 0d  direct (i.e. as.
3d30: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 6f  .        /// tho
3d40: 75 67 68 20 74 68 65 79 20 77 65 72 65 20 6d 61  ugh they were ma
3d50: 64 65 20 76 69 61 20 61 20 74 72 69 67 67 65 72  de via a trigger
3d60: 20 6f 72 20 66 6f 72 65 69 67 6e 20 6b 65 79 20   or foreign key 
3d70: 61 63 74 69 6f 6e 29 2e 0d 0a 20 20 20 20 20 20  action)...      
3d80: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
3d90: 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 49  ..        bool I
3da0: 6e 64 69 72 65 63 74 20 7b 20 67 65 74 3b 20 7d  ndirect { get; }
3db0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
3dc0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
3dd0: 20 20 20 2f 2f 2f 20 54 68 69 73 20 61 72 72 61     /// This arra
3de0: 79 20 63 6f 6e 74 61 69 6e 73 20 61 20 3c 73 65  y contains a <se
3df0: 65 20 63 72 65 66 3d 22 42 6f 6f 6c 65 61 6e 22  e cref="Boolean"
3e00: 20 2f 3e 20 66 6f 72 20 65 61 63 68 20 63 6f 6c   /> for each col
3e10: 75 6d 6e 20 69 6e 0d 0a 20 20 20 20 20 20 20 20  umn in..        
3e20: 2f 2f 2f 20 74 68 65 20 74 61 62 6c 65 20 61 73  /// the table as
3e30: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
3e40: 69 73 20 63 68 61 6e 67 65 2e 20 20 54 68 65 20  is change.  The 
3e50: 65 6c 65 6d 65 6e 74 20 77 69 6c 6c 20 62 65 20  element will be 
3e60: 7a 65 72 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  zero..        //
3e70: 2f 20 69 66 20 74 68 65 20 63 6f 6c 75 6d 6e 20  / if the column 
3e80: 69 73 20 6e 6f 74 20 70 61 72 74 20 6f 66 20 74  is not part of t
3e90: 68 65 20 70 72 69 6d 61 72 79 20 6b 65 79 3b 20  he primary key; 
3ea0: 6f 74 68 65 72 77 69 73 65 2c 20 69 74 20 77 69  otherwise, it wi
3eb0: 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ll..        /// 
3ec0: 62 65 20 6e 6f 6e 2d 7a 65 72 6f 2e 0d 0a 20 20  be non-zero...  
3ed0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
3ee0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 62 6f  ary>..        bo
3ef0: 6f 6c 5b 5d 20 50 72 69 6d 61 72 79 4b 65 79 43  ol[] PrimaryKeyC
3f00: 6f 6c 75 6d 6e 73 20 7b 20 67 65 74 3b 20 7d 0d  olumns { get; }.
3f10: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
3f20: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
3f30: 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
3f40: 64 20 6d 61 79 20 6f 6e 6c 79 20 62 65 20 63 61  d may only be ca
3f50: 6c 6c 65 64 20 66 72 6f 6d 20 77 69 74 68 69 6e  lled from within
3f60: 20 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20   a..        /// 
3f70: 3c 73 65 65 20 63 72 65 66 3d 22 53 65 73 73 69  <see cref="Sessi
3f80: 6f 6e 43 6f 6e 66 6c 69 63 74 43 61 6c 6c 62 61  onConflictCallba
3f90: 63 6b 22 20 2f 3e 20 64 65 6c 65 67 61 74 65 20  ck" /> delegate 
3fa0: 77 68 65 6e 20 74 68 65 20 63 6f 6e 66 6c 69 63  when the conflic
3fb0: 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  t..        /// t
3fc0: 79 70 65 20 69 73 20 3c 73 65 65 20 63 72 65 66  ype is <see cref
3fd0: 3d 22 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65  ="SQLiteChangeSe
3fe0: 74 43 6f 6e 66 6c 69 63 74 54 79 70 65 2e 46 6f  tConflictType.Fo
3ff0: 72 65 69 67 6e 4b 65 79 22 20 2f 3e 2e 20 20 49  reignKey" />.  I
4000: 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 72  t..        /// r
4010: 65 74 75 72 6e 73 20 74 68 65 20 74 6f 74 61 6c  eturns the total
4020: 20 6e 75 6d 62 65 72 20 6f 66 20 6b 6e 6f 77 6e   number of known
4030: 20 66 6f 72 65 69 67 6e 20 6b 65 79 20 76 69 6f   foreign key vio
4040: 6c 61 74 69 6f 6e 73 20 69 6e 20 74 68 65 0d 0a  lations in the..
4050: 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 65 73 74          /// dest
4060: 69 6e 61 74 69 6f 6e 20 64 61 74 61 62 61 73 65  ination database
4070: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
4080: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
4090: 20 20 20 69 6e 74 20 4e 75 6d 62 65 72 4f 66 46     int NumberOfF
40a0: 6f 72 65 69 67 6e 4b 65 79 43 6f 6e 66 6c 69 63  oreignKeyConflic
40b0: 74 73 20 7b 20 67 65 74 3b 20 7d 0d 0a 0d 0a 20  ts { get; }.... 
40c0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
40d0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
40e0: 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20 72 65  / Queries and re
40f0: 74 75 72 6e 73 20 74 68 65 20 6f 72 69 67 69 6e  turns the origin
4100: 61 6c 20 76 61 6c 75 65 20 6f 66 20 61 20 67 69  al value of a gi
4110: 76 65 6e 20 63 6f 6c 75 6d 6e 20 66 6f 72 20 74  ven column for t
4120: 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  his..        ///
4130: 20 63 68 61 6e 67 65 2e 20 20 54 68 69 73 20 6d   change.  This m
4140: 65 74 68 6f 64 20 6d 61 79 20 6f 6e 6c 79 20 62  ethod may only b
4150: 65 20 63 61 6c 6c 65 64 20 77 68 65 6e 20 74 68  e called when th
4160: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
4170: 73 65 65 20 63 72 65 66 3d 22 4f 70 65 72 61 74  see cref="Operat
4180: 69 6f 6e 43 6f 64 65 22 20 2f 3e 20 68 61 73 20  ionCode" /> has 
4190: 61 20 76 61 6c 75 65 20 6f 66 0d 0a 20 20 20 20  a value of..    
41a0: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
41b0: 66 3d 22 53 51 4c 69 74 65 41 75 74 68 6f 72 69  f="SQLiteAuthori
41c0: 7a 65 72 41 63 74 69 6f 6e 43 6f 64 65 2e 55 70  zerActionCode.Up
41d0: 64 61 74 65 22 20 2f 3e 20 6f 72 0d 0a 20 20 20  date" /> or..   
41e0: 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
41f0: 65 66 3d 22 53 51 4c 69 74 65 41 75 74 68 6f 72  ef="SQLiteAuthor
4200: 69 7a 65 72 41 63 74 69 6f 6e 43 6f 64 65 2e 44  izerActionCode.D
4210: 65 6c 65 74 65 22 20 2f 3e 2e 0d 0a 20 20 20 20  elete" />...    
4220: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
4230: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
4240: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6c  <param name="col
4250: 75 6d 6e 49 6e 64 65 78 22 3e 0d 0a 20 20 20 20  umnIndex">..    
4260: 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 64 65      /// The inde
4270: 78 20 66 6f 72 20 74 68 65 20 63 6f 6c 75 6d 6e  x for the column
4280: 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20 6d 75  .  This value mu
4290: 73 74 20 62 65 20 62 65 74 77 65 65 6e 20 7a 65  st be between ze
42a0: 72 6f 20 61 6e 64 20 6f 6e 65 0d 0a 20 20 20 20  ro and one..    
42b0: 20 20 20 20 2f 2f 2f 20 6c 65 73 73 20 74 68 61      /// less tha
42c0: 6e 20 74 68 65 20 74 6f 74 61 6c 20 6e 75 6d 62  n the total numb
42d0: 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 66 6f  er of columns fo
42e0: 72 20 74 68 69 73 20 74 61 62 6c 65 2e 0d 0a 20  r this table... 
42f0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
4300: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
4310: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
4320: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 72 69 67      /// The orig
4330: 69 6e 61 6c 20 76 61 6c 75 65 20 6f 66 20 61 20  inal value of a 
4340: 67 69 76 65 6e 20 63 6f 6c 75 6d 6e 20 66 6f 72  given column for
4350: 20 74 68 69 73 20 63 68 61 6e 67 65 2e 0d 0a 20   this change... 
4360: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
4370: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
4380: 51 4c 69 74 65 56 61 6c 75 65 20 47 65 74 4f 6c  QLiteValue GetOl
4390: 64 56 61 6c 75 65 28 69 6e 74 20 63 6f 6c 75 6d  dValue(int colum
43a0: 6e 49 6e 64 65 78 29 3b 0d 0a 0d 0a 20 20 20 20  nIndex);....    
43b0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
43c0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 51  >..        /// Q
43d0: 75 65 72 69 65 73 20 61 6e 64 20 72 65 74 75 72  ueries and retur
43e0: 6e 73 20 74 68 65 20 75 70 64 61 74 65 64 20 76  ns the updated v
43f0: 61 6c 75 65 20 6f 66 20 61 20 67 69 76 65 6e 20  alue of a given 
4400: 63 6f 6c 75 6d 6e 20 66 6f 72 20 74 68 69 73 0d  column for this.
4410: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 68 61  .        /// cha
4420: 6e 67 65 2e 20 20 54 68 69 73 20 6d 65 74 68 6f  nge.  This metho
4430: 64 20 6d 61 79 20 6f 6e 6c 79 20 62 65 20 63 61  d may only be ca
4440: 6c 6c 65 64 20 77 68 65 6e 20 74 68 65 0d 0a 20  lled when the.. 
4450: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
4460: 63 72 65 66 3d 22 4f 70 65 72 61 74 69 6f 6e 43  cref="OperationC
4470: 6f 64 65 22 20 2f 3e 20 68 61 73 20 61 20 76 61  ode" /> has a va
4480: 6c 75 65 20 6f 66 0d 0a 20 20 20 20 20 20 20 20  lue of..        
4490: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53  /// <see cref="S
44a0: 51 4c 69 74 65 41 75 74 68 6f 72 69 7a 65 72 41  QLiteAuthorizerA
44b0: 63 74 69 6f 6e 43 6f 64 65 2e 49 6e 73 65 72 74  ctionCode.Insert
44c0: 22 20 2f 3e 20 6f 72 0d 0a 20 20 20 20 20 20 20  " /> or..       
44d0: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
44e0: 53 51 4c 69 74 65 41 75 74 68 6f 72 69 7a 65 72  SQLiteAuthorizer
44f0: 41 63 74 69 6f 6e 43 6f 64 65 2e 55 70 64 61 74  ActionCode.Updat
4500: 65 22 20 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20  e" />...        
4510: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
4520: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
4530: 61 6d 20 6e 61 6d 65 3d 22 63 6f 6c 75 6d 6e 49  am name="columnI
4540: 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20 20  ndex">..        
4550: 2f 2f 2f 20 54 68 65 20 69 6e 64 65 78 20 66 6f  /// The index fo
4560: 72 20 74 68 65 20 63 6f 6c 75 6d 6e 2e 20 20 54  r the column.  T
4570: 68 69 73 20 76 61 6c 75 65 20 6d 75 73 74 20 62  his value must b
4580: 65 20 62 65 74 77 65 65 6e 20 7a 65 72 6f 20 61  e between zero a
4590: 6e 64 20 6f 6e 65 0d 0a 20 20 20 20 20 20 20 20  nd one..        
45a0: 2f 2f 2f 20 6c 65 73 73 20 74 68 61 6e 20 74 68  /// less than th
45b0: 65 20 74 6f 74 61 6c 20 6e 75 6d 62 65 72 20 6f  e total number o
45c0: 66 20 63 6f 6c 75 6d 6e 73 20 66 6f 72 20 74 68  f columns for th
45d0: 69 73 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20  is table...     
45e0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
45f0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
4600: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
4610: 2f 2f 2f 20 54 68 65 20 75 70 64 61 74 65 64 20  /// The updated 
4620: 76 61 6c 75 65 20 6f 66 20 61 20 67 69 76 65 6e  value of a given
4630: 20 63 6f 6c 75 6d 6e 20 66 6f 72 20 74 68 69 73   column for this
4640: 20 63 68 61 6e 67 65 2e 0d 0a 20 20 20 20 20 20   change...      
4650: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
4660: 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
4670: 56 61 6c 75 65 20 47 65 74 4e 65 77 56 61 6c 75  Value GetNewValu
4680: 65 28 69 6e 74 20 63 6f 6c 75 6d 6e 49 6e 64 65  e(int columnInde
4690: 78 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  x);....        /
46a0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
46b0: 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65        /// Querie
46c0: 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
46d0: 65 20 63 6f 6e 66 6c 69 63 74 69 6e 67 20 76 61  e conflicting va
46e0: 6c 75 65 20 6f 66 20 61 20 67 69 76 65 6e 20 63  lue of a given c
46f0: 6f 6c 75 6d 6e 20 66 6f 72 0d 0a 20 20 20 20 20  olumn for..     
4700: 20 20 20 2f 2f 2f 20 74 68 69 73 20 63 68 61 6e     /// this chan
4710: 67 65 2e 20 20 54 68 69 73 20 6d 65 74 68 6f 64  ge.  This method
4720: 20 6d 61 79 20 6f 6e 6c 79 20 62 65 20 63 61 6c   may only be cal
4730: 6c 65 64 20 66 72 6f 6d 20 77 69 74 68 69 6e 20  led from within 
4740: 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  a..        /// <
4750: 73 65 65 20 63 72 65 66 3d 22 53 65 73 73 69 6f  see cref="Sessio
4760: 6e 43 6f 6e 66 6c 69 63 74 43 61 6c 6c 62 61 63  nConflictCallbac
4770: 6b 22 20 2f 3e 20 64 65 6c 65 67 61 74 65 20 77  k" /> delegate w
4780: 68 65 6e 20 74 68 65 20 63 6f 6e 66 6c 69 63 74  hen the conflict
4790: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 79  ..        /// ty
47a0: 70 65 20 69 73 20 3c 73 65 65 20 63 72 65 66 3d  pe is <see cref=
47b0: 22 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65 74  "SQLiteChangeSet
47c0: 43 6f 6e 66 6c 69 63 74 54 79 70 65 2e 44 61 74  ConflictType.Dat
47d0: 61 22 20 2f 3e 20 6f 72 0d 0a 20 20 20 20 20 20  a" /> or..      
47e0: 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
47f0: 22 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65 74  "SQLiteChangeSet
4800: 43 6f 6e 66 6c 69 63 74 54 79 70 65 2e 43 6f 6e  ConflictType.Con
4810: 66 6c 69 63 74 22 20 2f 3e 2e 0d 0a 20 20 20 20  flict" />...    
4820: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
4830: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
4840: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6c  <param name="col
4850: 75 6d 6e 49 6e 64 65 78 22 3e 0d 0a 20 20 20 20  umnIndex">..    
4860: 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 64 65      /// The inde
4870: 78 20 66 6f 72 20 74 68 65 20 63 6f 6c 75 6d 6e  x for the column
4880: 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20 6d 75  .  This value mu
4890: 73 74 20 62 65 20 62 65 74 77 65 65 6e 20 7a 65  st be between ze
48a0: 72 6f 20 61 6e 64 20 6f 6e 65 0d 0a 20 20 20 20  ro and one..    
48b0: 20 20 20 20 2f 2f 2f 20 6c 65 73 73 20 74 68 61      /// less tha
48c0: 6e 20 74 68 65 20 74 6f 74 61 6c 20 6e 75 6d 62  n the total numb
48d0: 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 66 6f  er of columns fo
48e0: 72 20 74 68 69 73 20 74 61 62 6c 65 2e 0d 0a 20  r this table... 
48f0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
4900: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
4910: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
4920: 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 66      /// The conf
4930: 6c 69 63 74 69 6e 67 20 76 61 6c 75 65 20 6f 66  licting value of
4940: 20 61 20 67 69 76 65 6e 20 63 6f 6c 75 6d 6e 20   a given column 
4950: 66 6f 72 20 74 68 69 73 20 63 68 61 6e 67 65 2e  for this change.
4960: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
4970: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
4980: 20 20 53 51 4c 69 74 65 56 61 6c 75 65 20 47 65    SQLiteValue Ge
4990: 74 43 6f 6e 66 6c 69 63 74 56 61 6c 75 65 28 69  tConflictValue(i
49a0: 6e 74 20 63 6f 6c 75 6d 6e 49 6e 64 65 78 29 3b  nt columnIndex);
49b0: 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
49c0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
49d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
49e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
49f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4a00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4a10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
4a20: 20 20 23 72 65 67 69 6f 6e 20 49 53 51 4c 69 74    #region ISQLit
4a30: 65 53 65 73 73 69 6f 6e 20 49 6e 74 65 72 66 61  eSession Interfa
4a40: 63 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ce..    /// <sum
4a50: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  mary>..    /// T
4a60: 68 69 73 20 69 6e 74 65 72 66 61 63 65 20 63 6f  his interface co
4a70: 6e 74 61 69 6e 73 20 6d 65 74 68 6f 64 73 20 74  ntains methods t
4a80: 6f 20 71 75 65 72 79 20 61 6e 64 20 6d 61 6e 69  o query and mani
4a90: 70 75 6c 61 74 65 20 74 68 65 20 73 74 61 74 65  pulate the state
4aa0: 20 6f 66 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 63   of a..    /// c
4ab0: 68 61 6e 67 65 20 74 72 61 63 6b 69 6e 67 20 73  hange tracking s
4ac0: 65 73 73 69 6f 6e 20 66 6f 72 20 61 20 64 61 74  ession for a dat
4ad0: 61 62 61 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  abase...    /// 
4ae0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
4af0: 70 75 62 6c 69 63 20 69 6e 74 65 72 66 61 63 65  public interface
4b00: 20 49 53 51 4c 69 74 65 53 65 73 73 69 6f 6e 20   ISQLiteSession 
4b10: 3a 20 49 44 69 73 70 6f 73 61 62 6c 65 0d 0a 20  : IDisposable.. 
4b20: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f     {..        //
4b30: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
4b40: 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69       /// Determi
4b50: 6e 65 73 20 69 66 20 74 68 69 73 20 73 65 73 73  nes if this sess
4b60: 69 6f 6e 20 69 73 20 63 75 72 72 65 6e 74 6c 79  ion is currently
4b70: 20 74 72 61 63 6b 69 6e 67 20 63 68 61 6e 67 65   tracking change
4b80: 73 20 74 6f 20 69 74 73 0d 0a 20 20 20 20 20 20  s to its..      
4b90: 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64    /// associated
4ba0: 20 64 61 74 61 62 61 73 65 2e 0d 0a 20 20 20 20   database...    
4bb0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
4bc0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
4bd0: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
4be0: 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
4bf0: 69 66 20 63 68 61 6e 67 65 73 20 74 6f 20 74 68  if changes to th
4c00: 65 20 61 73 73 6f 63 69 61 74 65 64 20 64 61 74  e associated dat
4c10: 61 62 61 73 65 20 61 72 65 20 62 65 69 6e 67 20  abase are being 
4c20: 74 72 61 6b 63 65 64 3b 0d 0a 20 20 20 20 20 20  trakced;..      
4c30: 20 20 2f 2f 2f 20 6f 74 68 65 72 77 69 73 65 2c    /// otherwise,
4c40: 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 20 20   zero...        
4c50: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
4c60: 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 49 73 45          bool IsE
4c70: 6e 61 62 6c 65 64 28 29 3b 0d 0a 0d 0a 20 20 20  nabled();....   
4c80: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
4c90: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
4ca0: 45 6e 61 62 6c 65 73 20 74 72 61 63 6b 69 6e 67  Enables tracking
4cb0: 20 6f 66 20 63 68 61 6e 67 65 73 20 74 6f 20 74   of changes to t
4cc0: 68 65 20 61 73 73 6f 63 69 61 74 65 64 20 64 61  he associated da
4cd0: 74 61 62 61 73 65 2e 0d 0a 20 20 20 20 20 20 20  tabase...       
4ce0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
4cf0: 0a 20 20 20 20 20 20 20 20 76 6f 69 64 20 53 65  .        void Se
4d00: 74 54 6f 45 6e 61 62 6c 65 64 28 29 3b 0d 0a 0d  tToEnabled();...
4d10: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
4d20: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
4d30: 2f 2f 2f 20 44 69 73 61 62 6c 65 73 20 74 72 61  /// Disables tra
4d40: 63 6b 69 6e 67 20 6f 66 20 63 68 61 6e 67 65 73  cking of changes
4d50: 20 74 6f 20 74 68 65 20 61 73 73 6f 63 69 61 74   to the associat
4d60: 65 64 20 64 61 74 61 62 61 73 65 2e 0d 0a 20 20  ed database...  
4d70: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
4d80: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 76 6f  ary>..        vo
4d90: 69 64 20 53 65 74 54 6f 44 69 73 61 62 6c 65 64  id SetToDisabled
4da0: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ();....        /
4db0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
4dc0: 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d        /// Determ
4dd0: 69 6e 65 73 20 69 66 20 74 68 69 73 20 73 65 73  ines if this ses
4de0: 73 69 6f 6e 20 69 73 20 63 75 72 72 65 6e 74 6c  sion is currentl
4df0: 79 20 73 65 74 20 74 6f 20 6d 61 72 6b 20 63 68  y set to mark ch
4e00: 61 6e 67 65 73 20 61 73 0d 0a 20 20 20 20 20 20  anges as..      
4e10: 20 20 2f 2f 2f 20 69 6e 64 69 72 65 63 74 20 28    /// indirect (
4e20: 69 2e 65 2e 20 61 73 20 74 68 6f 75 67 68 20 74  i.e. as though t
4e30: 68 65 79 20 77 65 72 65 20 6d 61 64 65 20 76 69  hey were made vi
4e40: 61 20 61 20 74 72 69 67 67 65 72 20 6f 72 20 66  a a trigger or f
4e50: 6f 72 65 69 67 6e 0d 0a 20 20 20 20 20 20 20 20  oreign..        
4e60: 2f 2f 2f 20 6b 65 79 20 61 63 74 69 6f 6e 29 2e  /// key action).
4e70: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
4e80: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
4e90: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
4ea0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  .        /// Non
4eb0: 2d 7a 65 72 6f 20 69 66 20 63 68 61 6e 67 65 73  -zero if changes
4ec0: 20 74 6f 20 74 68 65 20 61 73 73 6f 63 69 61 74   to the associat
4ed0: 65 64 20 64 61 74 61 62 61 73 65 20 61 72 65 20  ed database are 
4ee0: 62 65 69 6e 67 20 6d 61 72 6b 65 64 20 61 73 0d  being marked as.
4ef0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 64  .        /// ind
4f00: 69 72 65 63 74 3b 20 6f 74 68 65 72 77 69 73 65  irect; otherwise
4f10: 2c 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 20  , zero...       
4f20: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
4f30: 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 49 73  .        bool Is
4f40: 49 6e 64 69 72 65 63 74 28 29 3b 0d 0a 0d 0a 20  Indirect();.... 
4f50: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
4f60: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
4f70: 2f 20 53 65 74 73 20 74 68 65 20 69 6e 64 69 72  / Sets the indir
4f80: 65 63 74 20 66 6c 61 67 20 66 6f 72 20 74 68 69  ect flag for thi
4f90: 73 20 73 65 73 73 69 6f 6e 2e 20 20 53 75 62 73  s session.  Subs
4fa0: 65 71 75 65 6e 74 20 63 68 61 6e 67 65 73 20 77  equent changes w
4fb0: 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ill..        ///
4fc0: 20 62 65 20 6d 61 72 6b 65 64 20 61 73 20 69 6e   be marked as in
4fd0: 64 69 72 65 63 74 20 75 6e 74 69 6c 20 74 68 69  direct until thi
4fe0: 73 20 66 6c 61 67 20 69 73 20 63 68 61 6e 67 65  s flag is change
4ff0: 64 20 61 67 61 69 6e 2e 0d 0a 20 20 20 20 20 20  d again...      
5000: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
5010: 0d 0a 20 20 20 20 20 20 20 20 76 6f 69 64 20 53  ..        void S
5020: 65 74 54 6f 49 6e 64 69 72 65 63 74 28 29 3b 0d  etToIndirect();.
5030: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
5040: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
5050: 20 20 2f 2f 2f 20 43 6c 65 61 72 73 20 74 68 65    /// Clears the
5060: 20 69 6e 64 69 72 65 63 74 20 66 6c 61 67 20 66   indirect flag f
5070: 6f 72 20 74 68 69 73 20 73 65 73 73 69 6f 6e 2e  or this session.
5080: 20 20 53 75 62 73 65 71 75 65 6e 74 20 63 68 61    Subsequent cha
5090: 6e 67 65 73 20 77 69 6c 6c 0d 0a 20 20 20 20 20  nges will..     
50a0: 20 20 20 2f 2f 2f 20 62 65 20 6d 61 72 6b 65 64     /// be marked
50b0: 20 61 73 20 64 69 72 65 63 74 20 75 6e 74 69 6c   as direct until
50c0: 20 74 68 69 73 20 66 6c 61 67 20 69 73 20 63 68   this flag is ch
50d0: 61 6e 67 65 64 20 61 67 61 69 6e 2e 0d 0a 20 20  anged again...  
50e0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
50f0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 76 6f  ary>..        vo
5100: 69 64 20 53 65 74 54 6f 44 69 72 65 63 74 28 29  id SetToDirect()
5110: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
5120: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
5130: 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e      /// Determin
5140: 65 73 20 69 66 20 74 68 65 72 65 20 61 72 65 20  es if there are 
5150: 61 6e 79 20 74 72 61 63 6b 65 64 20 63 68 61 6e  any tracked chan
5160: 67 65 73 20 63 75 72 72 65 6e 74 6c 79 20 77 69  ges currently wi
5170: 74 68 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20  thin the..      
5180: 20 20 2f 2f 2f 20 64 61 74 61 20 66 6f 72 20 74    /// data for t
5190: 68 69 73 20 73 65 73 73 69 6f 6e 2e 0d 0a 20 20  his session...  
51a0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
51b0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
51c0: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
51d0: 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
51e0: 6f 20 69 66 20 74 68 65 72 65 20 61 72 65 20 6e  o if there are n
51f0: 6f 20 63 68 61 6e 67 65 73 20 77 69 74 68 69 6e  o changes within
5200: 20 74 68 65 20 64 61 74 61 20 66 6f 72 20 74 68   the data for th
5210: 69 73 20 73 65 73 73 69 6f 6e 3b 0d 0a 20 20 20  is session;..   
5220: 20 20 20 20 20 2f 2f 2f 20 6f 74 68 65 72 77 69       /// otherwi
5230: 73 65 2c 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20  se, zero...     
5240: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
5250: 3e 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20  >..        bool 
5260: 49 73 45 6d 70 74 79 28 29 3b 0d 0a 0d 0a 20 20  IsEmpty();....  
5270: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
5280: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
5290: 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 63   Upon success, c
52a0: 61 75 73 65 73 20 63 68 61 6e 67 65 73 20 74 6f  auses changes to
52b0: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 74   the specified t
52c0: 61 62 6c 65 28 73 29 20 74 6f 20 73 74 61 72 74  able(s) to start
52d0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 65  ..        /// be
52e0: 69 6e 67 20 74 72 61 63 6b 65 64 2e 20 20 41 6e  ing tracked.  An
52f0: 79 20 74 61 62 6c 65 73 20 69 6d 70 61 63 74 65  y tables impacte
5300: 64 20 62 79 20 63 61 6c 6c 73 20 74 6f 20 74 68  d by calls to th
5310: 69 73 20 6d 65 74 68 6f 64 20 77 69 6c 6c 0d 0a  is method will..
5320: 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 6f 74 20          /// not 
5330: 63 61 75 73 65 20 74 68 65 20 3c 73 65 65 20 63  cause the <see c
5340: 72 65 66 3d 22 53 65 73 73 69 6f 6e 54 61 62 6c  ref="SessionTabl
5350: 65 46 69 6c 74 65 72 43 61 6c 6c 62 61 63 6b 22  eFilterCallback"
5360: 20 2f 3e 20 63 61 6c 6c 62 61 63 6b 0d 0a 20 20   /> callback..  
5370: 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20 62 65 20        /// to be 
5380: 69 6e 76 6f 6b 65 64 2e 0d 0a 20 20 20 20 20 20  invoked...      
5390: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
53a0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
53b0: 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22  aram name="name"
53c0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
53d0: 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 74  he name of the t
53e0: 61 62 6c 65 20 74 6f 20 62 65 20 74 72 61 63 6b  able to be track
53f0: 65 64 20 2d 4f 52 2d 20 6e 75 6c 6c 20 74 6f 20  ed -OR- null to 
5400: 74 72 61 63 6b 20 61 6c 6c 0d 0a 20 20 20 20 20  track all..     
5410: 20 20 20 2f 2f 2f 20 61 70 70 6c 69 63 61 62 6c     /// applicabl
5420: 65 20 74 61 62 6c 65 73 20 77 69 74 68 69 6e 20  e tables within 
5430: 74 68 69 73 20 64 61 74 61 62 61 73 65 2e 0d 0a  this database...
5440: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
5450: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 76 6f  ram>..        vo
5460: 69 64 20 41 74 74 61 63 68 54 61 62 6c 65 28 73  id AttachTable(s
5470: 74 72 69 6e 67 20 6e 61 6d 65 29 3b 0d 0a 0d 0a  tring name);....
5480: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
5490: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
54a0: 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69  // This method i
54b0: 73 20 75 73 65 64 20 74 6f 20 73 65 74 20 74 68  s used to set th
54c0: 65 20 74 61 62 6c 65 20 66 69 6c 74 65 72 20 66  e table filter f
54d0: 6f 72 20 74 68 69 73 20 69 6e 73 74 61 6e 63 65  or this instance
54e0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
54f0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
5500: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
5510: 6d 65 3d 22 63 61 6c 6c 62 61 63 6b 22 3e 0d 0a  me="callback">..
5520: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
5530: 74 61 62 6c 65 20 66 69 6c 74 65 72 20 63 61 6c  table filter cal
5540: 6c 62 61 63 6b 20 2d 4f 52 2d 20 6e 75 6c 6c 20  lback -OR- null 
5550: 74 6f 20 63 6c 65 61 72 20 61 6e 79 20 65 78 69  to clear any exi
5560: 73 74 69 6e 67 20 74 61 62 6c 65 0d 0a 20 20 20  sting table..   
5570: 20 20 20 20 20 2f 2f 2f 20 66 69 6c 74 65 72 20       /// filter 
5580: 63 61 6c 6c 62 61 63 6b 2e 0d 0a 20 20 20 20 20  callback...     
5590: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
55a0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
55b0: 72 61 6d 20 6e 61 6d 65 3d 22 63 6c 69 65 6e 74  ram name="client
55c0: 44 61 74 61 22 3e 0d 0a 20 20 20 20 20 20 20 20  Data">..        
55d0: 2f 2f 2f 20 54 68 65 20 6f 70 74 69 6f 6e 61 6c  /// The optional
55e0: 20 61 70 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66   application-def
55f0: 69 6e 65 64 20 63 6f 6e 74 65 78 74 20 64 61 74  ined context dat
5600: 61 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20 6d  a.  This value m
5610: 61 79 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f  ay be..        /
5620: 2f 2f 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20  // null...      
5630: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
5640: 20 20 20 20 20 20 20 20 76 6f 69 64 20 53 65 74          void Set
5650: 54 61 62 6c 65 46 69 6c 74 65 72 28 0d 0a 20 20  TableFilter(..  
5660: 20 20 20 20 20 20 20 20 20 20 53 65 73 73 69 6f            Sessio
5670: 6e 54 61 62 6c 65 46 69 6c 74 65 72 43 61 6c 6c  nTableFilterCall
5680: 62 61 63 6b 20 63 61 6c 6c 62 61 63 6b 2c 0d 0a  back callback,..
5690: 20 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65              obje
56a0: 63 74 20 63 6c 69 65 6e 74 44 61 74 61 0d 0a 20  ct clientData.. 
56b0: 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20         );....   
56c0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
56d0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
56e0: 41 74 74 65 6d 70 74 73 20 74 6f 20 63 72 65 61  Attempts to crea
56f0: 74 65 20 61 6e 64 20 72 65 74 75 72 6e 2c 20 76  te and return, v
5700: 69 61 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d  ia <paramref nam
5710: 65 3d 22 72 61 77 44 61 74 61 22 20 2f 3e 2c 20  e="rawData" />, 
5720: 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
5730: 20 63 6f 6d 62 69 6e 65 64 20 73 65 74 20 6f 66   combined set of
5740: 20 63 68 61 6e 67 65 73 20 72 65 70 72 65 73 65   changes represe
5750: 6e 74 65 64 20 62 79 20 74 68 69 73 20 73 65 73  nted by this ses
5760: 73 69 6f 6e 20 69 6e 73 74 61 6e 63 65 2e 0d 0a  sion instance...
5770: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
5780: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
5790: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
57a0: 22 72 61 77 44 61 74 61 22 3e 0d 0a 20 20 20 20  "rawData">..    
57b0: 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63      /// Upon suc
57c0: 63 65 73 73 2c 20 74 68 69 73 20 77 69 6c 6c 20  cess, this will 
57d0: 63 6f 6e 74 61 69 6e 20 74 68 65 20 72 61 77 20  contain the raw 
57e0: 62 79 74 65 20 64 61 74 61 20 66 6f 72 20 61 6c  byte data for al
57f0: 6c 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  l the..        /
5800: 2f 2f 20 63 68 61 6e 67 65 73 20 69 6e 20 74 68  // changes in th
5810: 69 73 20 73 65 73 73 69 6f 6e 20 69 6e 73 74 61  is session insta
5820: 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nce...        //
5830: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
5840: 20 20 20 20 76 6f 69 64 20 43 72 65 61 74 65 43      void CreateC
5850: 68 61 6e 67 65 53 65 74 28 72 65 66 20 62 79 74  hangeSet(ref byt
5860: 65 5b 5d 20 72 61 77 44 61 74 61 29 3b 0d 0a 0d  e[] rawData);...
5870: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
5880: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
5890: 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20  /// Attempts to 
58a0: 63 72 65 61 74 65 20 61 6e 64 20 77 72 69 74 65  create and write
58b0: 2c 20 76 69 61 20 3c 70 61 72 61 6d 72 65 66 20  , via <paramref 
58c0: 6e 61 6d 65 3d 22 73 74 72 65 61 6d 22 20 2f 3e  name="stream" />
58d0: 2c 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  , the..        /
58e0: 2f 2f 20 63 6f 6d 62 69 6e 65 64 20 73 65 74 20  // combined set 
58f0: 6f 66 20 63 68 61 6e 67 65 73 20 72 65 70 72 65  of changes repre
5900: 73 65 6e 74 65 64 20 62 79 20 74 68 69 73 20 73  sented by this s
5910: 65 73 73 69 6f 6e 20 69 6e 73 74 61 6e 63 65 2e  ession instance.
5920: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
5930: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
5940: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
5950: 65 3d 22 73 74 72 65 61 6d 22 3e 0d 0a 20 20 20  e="stream">..   
5960: 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75       /// Upon su
5970: 63 63 65 73 73 2c 20 74 68 65 20 72 61 77 20 62  ccess, the raw b
5980: 79 74 65 20 64 61 74 61 20 66 6f 72 20 61 6c 6c  yte data for all
5990: 20 74 68 65 20 63 68 61 6e 67 65 73 20 69 6e 20   the changes in 
59a0: 74 68 69 73 20 73 65 73 73 69 6f 6e 0d 0a 20 20  this session..  
59b0: 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e        /// instan
59c0: 63 65 20 77 69 6c 6c 20 62 65 20 77 72 69 74 74  ce will be writt
59d0: 65 6e 20 74 6f 20 74 68 69 73 20 3c 73 65 65 20  en to this <see 
59e0: 63 72 65 66 3d 22 53 74 72 65 61 6d 22 20 2f 3e  cref="Stream" />
59f0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
5a00: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
5a10: 20 76 6f 69 64 20 43 72 65 61 74 65 43 68 61 6e   void CreateChan
5a20: 67 65 53 65 74 28 53 74 72 65 61 6d 20 73 74 72  geSet(Stream str
5a30: 65 61 6d 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  eam);....       
5a40: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
5a50: 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65          /// Atte
5a60: 6d 70 74 73 20 74 6f 20 63 72 65 61 74 65 20 61  mpts to create a
5a70: 6e 64 20 72 65 74 75 72 6e 2c 20 76 69 61 20 3c  nd return, via <
5a80: 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 72  paramref name="r
5a90: 61 77 44 61 74 61 22 20 2f 3e 2c 20 74 68 65 0d  awData" />, the.
5aa0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6d  .        /// com
5ab0: 62 69 6e 65 64 20 73 65 74 20 6f 66 20 63 68 61  bined set of cha
5ac0: 6e 67 65 73 20 72 65 70 72 65 73 65 6e 74 65 64  nges represented
5ad0: 20 62 79 20 74 68 69 73 20 73 65 73 73 69 6f 6e   by this session
5ae0: 20 69 6e 73 74 61 6e 63 65 20 61 73 20 61 0d 0a   instance as a..
5af0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 61 74 63          /// patc
5b00: 68 20 73 65 74 2e 0d 0a 20 20 20 20 20 20 20 20  h set...        
5b10: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
5b20: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
5b30: 61 6d 20 6e 61 6d 65 3d 22 72 61 77 44 61 74 61  am name="rawData
5b40: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
5b50: 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68  Upon success, th
5b60: 69 73 20 77 69 6c 6c 20 63 6f 6e 74 61 69 6e 20  is will contain 
5b70: 74 68 65 20 72 61 77 20 62 79 74 65 20 64 61 74  the raw byte dat
5b80: 61 20 66 6f 72 20 61 6c 6c 20 74 68 65 0d 0a 20  a for all the.. 
5b90: 20 20 20 20 20 20 20 2f 2f 2f 20 63 68 61 6e 67         /// chang
5ba0: 65 73 20 69 6e 20 74 68 69 73 20 73 65 73 73 69  es in this sessi
5bb0: 6f 6e 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  on instance...  
5bc0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
5bd0: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 76 6f 69 64  m>..        void
5be0: 20 43 72 65 61 74 65 50 61 74 63 68 53 65 74 28   CreatePatchSet(
5bf0: 72 65 66 20 62 79 74 65 5b 5d 20 72 61 77 44 61  ref byte[] rawDa
5c00: 74 61 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ta);....        
5c10: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
5c20: 20 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d         /// Attem
5c30: 70 74 73 20 74 6f 20 63 72 65 61 74 65 20 61 6e  pts to create an
5c40: 64 20 77 72 69 74 65 2c 20 76 69 61 20 3c 70 61  d write, via <pa
5c50: 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 73 74 72  ramref name="str
5c60: 65 61 6d 22 20 2f 3e 2c 20 74 68 65 0d 0a 20 20  eam" />, the..  
5c70: 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6d 62 69 6e        /// combin
5c80: 65 64 20 73 65 74 20 6f 66 20 63 68 61 6e 67 65  ed set of change
5c90: 73 20 72 65 70 72 65 73 65 6e 74 65 64 20 62 79  s represented by
5ca0: 20 74 68 69 73 20 73 65 73 73 69 6f 6e 20 69 6e   this session in
5cb0: 73 74 61 6e 63 65 20 61 73 20 61 0d 0a 20 20 20  stance as a..   
5cc0: 20 20 20 20 20 2f 2f 2f 20 70 61 74 63 68 20 73       /// patch s
5cd0: 65 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  et...        ///
5ce0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
5cf0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
5d00: 6e 61 6d 65 3d 22 73 74 72 65 61 6d 22 3e 0d 0a  name="stream">..
5d10: 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e          /// Upon
5d20: 20 73 75 63 63 65 73 73 2c 20 74 68 65 20 72 61   success, the ra
5d30: 77 20 62 79 74 65 20 64 61 74 61 20 66 6f 72 20  w byte data for 
5d40: 61 6c 6c 20 74 68 65 20 63 68 61 6e 67 65 73 20  all the changes 
5d50: 69 6e 20 74 68 69 73 20 73 65 73 73 69 6f 6e 0d  in this session.
5d60: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73  .        /// ins
5d70: 74 61 6e 63 65 20 77 69 6c 6c 20 62 65 20 77 72  tance will be wr
5d80: 69 74 74 65 6e 20 74 6f 20 74 68 69 73 20 3c 73  itten to this <s
5d90: 65 65 20 63 72 65 66 3d 22 53 74 72 65 61 6d 22  ee cref="Stream"
5da0: 20 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f   />...        //
5db0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
5dc0: 20 20 20 20 76 6f 69 64 20 43 72 65 61 74 65 50      void CreateP
5dd0: 61 74 63 68 53 65 74 28 53 74 72 65 61 6d 20 73  atchSet(Stream s
5de0: 74 72 65 61 6d 29 3b 0d 0a 0d 0a 20 20 20 20 20  tream);....     
5df0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
5e00: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
5e10: 69 73 20 6d 65 74 68 6f 64 20 6c 6f 61 64 73 20  is method loads 
5e20: 74 68 65 20 64 69 66 66 65 72 65 6e 63 65 73 20  the differences 
5e30: 62 65 74 77 65 65 6e 20 74 77 6f 20 74 61 62 6c  between two tabl
5e40: 65 73 20 5b 77 69 74 68 20 74 68 65 20 73 61 6d  es [with the sam
5e50: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e  e..        /// n
5e60: 61 6d 65 2c 20 73 65 74 20 6f 66 20 63 6f 6c 75  ame, set of colu
5e70: 6d 6e 73 2c 20 61 6e 64 20 70 72 69 6d 61 72 79  mns, and primary
5e80: 20 6b 65 79 20 64 65 66 69 6e 69 74 69 6f 6e 5d   key definition]
5e90: 20 69 6e 74 6f 20 74 68 69 73 20 73 65 73 73 69   into this sessi
5ea0: 6f 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  on..        /// 
5eb0: 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
5ec0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
5ed0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
5ee0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 72 6f 6d  param name="from
5ef0: 44 61 74 61 62 61 73 65 4e 61 6d 65 22 3e 0d 0a  DatabaseName">..
5f00: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
5f10: 6e 61 6d 65 20 6f 66 20 74 68 65 20 64 61 74 61  name of the data
5f20: 62 61 73 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20  base containing 
5f30: 74 68 65 20 74 61 62 6c 65 20 77 69 74 68 20 74  the table with t
5f40: 68 65 20 6f 72 69 67 69 6e 61 6c 0d 0a 20 20 20  he original..   
5f50: 20 20 20 20 20 2f 2f 2f 20 64 61 74 61 20 28 69       /// data (i
5f60: 2e 65 2e 20 69 74 20 77 69 6c 6c 20 6e 65 65 64  .e. it will need
5f70: 20 75 70 64 61 74 69 6e 67 20 69 6e 20 6f 72 64   updating in ord
5f80: 65 72 20 74 6f 20 62 65 20 69 64 65 6e 74 69 63  er to be identic
5f90: 61 6c 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20  al to the..     
5fa0: 20 20 20 2f 2f 2f 20 6f 6e 65 20 77 69 74 68 69     /// one withi
5fb0: 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20 61  n the database a
5fc0: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
5fd0: 68 69 73 20 73 65 73 73 69 6f 6e 20 69 6e 73 74  his session inst
5fe0: 61 6e 63 65 29 2e 0d 0a 20 20 20 20 20 20 20 20  ance)...        
5ff0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
6000: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
6010: 20 6e 61 6d 65 3d 22 74 61 62 6c 65 4e 61 6d 65   name="tableName
6020: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
6030: 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  The name of the 
6040: 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  table...        
6050: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
6060: 20 20 20 20 20 20 76 6f 69 64 20 4c 6f 61 64 44        void LoadD
6070: 69 66 66 65 72 65 6e 63 65 73 46 72 6f 6d 54 61  ifferencesFromTa
6080: 62 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ble(..          
6090: 20 20 73 74 72 69 6e 67 20 66 72 6f 6d 44 61 74    string fromDat
60a0: 61 62 61 73 65 4e 61 6d 65 2c 0d 0a 20 20 20 20  abaseName,..    
60b0: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 74          string t
60c0: 61 62 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20  ableName..      
60d0: 20 20 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20    );..    }..   
60e0: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
60f0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
6100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
6140: 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51  ..    #region SQ
6150: 4c 69 74 65 53 65 73 73 69 6f 6e 48 65 6c 70 65  LiteSessionHelpe
6160: 72 73 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f  rs Class..    //
6170: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
6180: 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20   /// This class 
6190: 63 6f 6e 74 61 69 6e 73 20 73 6f 6d 65 20 73 74  contains some st
61a0: 61 74 69 63 20 68 65 6c 70 65 72 20 6d 65 74 68  atic helper meth
61b0: 6f 64 73 20 66 6f 72 20 75 73 65 20 77 69 74 68  ods for use with
61c0: 69 6e 20 74 68 69 73 0d 0a 20 20 20 20 2f 2f 2f  in this..    ///
61d0: 20 73 75 62 73 79 73 74 65 6d 2e 0d 0a 20 20 20   subsystem...   
61e0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
61f0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
6200: 61 74 69 63 20 63 6c 61 73 73 20 53 51 4c 69 74  atic class SQLit
6210: 65 53 65 73 73 69 6f 6e 48 65 6c 70 65 72 73 0d  eSessionHelpers.
6220: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
6230: 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 4d  #region Public M
6240: 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
6250: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
6260: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
6270: 6d 65 74 68 6f 64 20 63 68 65 63 6b 73 20 74 68  method checks th
6280: 65 20 62 79 74 65 20 61 72 72 61 79 20 73 70 65  e byte array spe
6290: 63 69 66 69 65 64 20 62 79 20 74 68 65 20 63 61  cified by the ca
62a0: 6c 6c 65 72 20 74 6f 20 6d 61 6b 65 0d 0a 20 20  ller to make..  
62b0: 20 20 20 20 20 20 2f 2f 2f 20 73 75 72 65 20 69        /// sure i
62c0: 74 20 77 69 6c 6c 20 62 65 20 75 73 61 62 6c 65  t will be usable
62d0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
62e0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
62f0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
6300: 6d 65 3d 22 72 61 77 44 61 74 61 22 3e 0d 0a 20  me="rawData">.. 
6310: 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 62 79 74         /// A byt
6320: 65 20 61 72 72 61 79 20 70 72 6f 76 69 64 65 64  e array provided
6330: 20 62 79 20 74 68 65 20 63 61 6c 6c 65 72 20 69   by the caller i
6340: 6e 74 6f 20 6f 6e 65 20 6f 66 20 74 68 65 20 70  nto one of the p
6350: 75 62 6c 69 63 20 6d 65 74 68 6f 64 73 0d 0a 20  ublic methods.. 
6360: 20 20 20 20 20 20 20 2f 2f 2f 20 66 6f 72 20 74         /// for t
6370: 68 65 20 63 6c 61 73 73 65 73 20 74 68 61 74 20  he classes that 
6380: 62 65 6c 6f 6e 67 20 74 6f 20 74 68 69 73 20 73  belong to this s
6390: 75 62 73 79 73 74 65 6d 2e 20 20 54 68 69 73 20  ubsystem.  This 
63a0: 76 61 6c 75 65 20 63 61 6e 6e 6f 74 0d 0a 20 20  value cannot..  
63b0: 20 20 20 20 20 20 2f 2f 2f 20 62 65 20 6e 75 6c        /// be nul
63c0: 6c 20 6f 72 20 72 65 70 72 65 73 65 6e 74 20 61  l or represent a
63d0: 6e 20 65 6d 70 74 79 20 61 72 72 61 79 3b 20 6f  n empty array; o
63e0: 74 68 65 72 77 69 73 65 2c 20 61 6e 20 61 70 70  therwise, an app
63f0: 72 6f 70 72 69 61 74 65 0d 0a 20 20 20 20 20 20  ropriate..      
6400: 20 20 2f 2f 2f 20 65 78 63 65 70 74 69 6f 6e 20    /// exception 
6410: 77 69 6c 6c 20 62 65 20 74 68 72 6f 77 6e 2e 0d  will be thrown..
6420: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
6430: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70  aram>..        p
6440: 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69  ublic static voi
6450: 64 20 43 68 65 63 6b 52 61 77 44 61 74 61 28 0d  d CheckRawData(.
6460: 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 79 74  .            byt
6470: 65 5b 5d 20 72 61 77 44 61 74 61 0d 0a 20 20 20  e[] rawData..   
6480: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
6490: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
64a0: 20 20 20 69 66 20 28 72 61 77 44 61 74 61 20 3d     if (rawData =
64b0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
64c0: 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e           throw n
64d0: 65 77 20 41 72 67 75 6d 65 6e 74 4e 75 6c 6c 45  ew ArgumentNullE
64e0: 78 63 65 70 74 69 6f 6e 28 22 72 61 77 44 61 74  xception("rawDat
64f0: 61 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  a");....        
6500: 20 20 20 20 69 66 20 28 72 61 77 44 61 74 61 2e      if (rawData.
6510: 4c 65 6e 67 74 68 20 3d 3d 20 30 29 0d 0a 20 20  Length == 0)..  
6520: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
6530: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72               thr
6540: 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74 45  ow new ArgumentE
6550: 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20 20 20  xception(..     
6560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
6570: 65 6d 70 74 79 20 63 68 61 6e 67 65 20 73 65 74  empty change set
6580: 20 64 61 74 61 22 2c 20 22 72 61 77 44 61 74 61   data", "rawData
6590: 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ");..           
65a0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20   }..        }.. 
65b0: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
65c0: 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65  n..    }..    #e
65d0: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
65e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
65f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
6630: 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74     #region SQLit
6640: 65 43 6f 6e 6e 65 63 74 69 6f 6e 4c 6f 63 6b 20  eConnectionLock 
6650: 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c  Class..    /// <
6660: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
6670: 2f 20 54 68 69 73 20 63 6c 61 73 73 20 69 73 20  / This class is 
6680: 75 73 65 64 20 74 6f 20 68 6f 6c 64 20 74 68 65  used to hold the
6690: 20 6e 61 74 69 76 65 20 63 6f 6e 6e 65 63 74 69   native connecti
66a0: 6f 6e 20 68 61 6e 64 6c 65 20 61 73 73 6f 63 69  on handle associ
66b0: 61 74 65 64 20 77 69 74 68 0d 0a 20 20 20 20 2f  ated with..    /
66c0: 2f 2f 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22  // a <see cref="
66d0: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
66e0: 22 20 2f 3e 20 6f 70 65 6e 20 75 6e 74 69 6c 20  " /> open until 
66f0: 74 68 69 73 20 73 75 62 73 79 73 74 65 6d 20 69  this subsystem i
6700: 73 20 74 6f 74 61 6c 6c 79 0d 0a 20 20 20 20 2f  s totally..    /
6710: 2f 2f 20 64 6f 6e 65 20 77 69 74 68 20 69 74 2e  // done with it.
6720: 20 20 54 68 69 73 20 63 6c 61 73 73 20 69 73 20    This class is 
6730: 66 6f 72 20 69 6e 74 65 72 6e 61 6c 20 75 73 65  for internal use
6740: 20 62 79 20 74 68 69 73 20 73 75 62 73 79 73 74   by this subsyst
6750: 65 6d 20 6f 6e 6c 79 2e 0d 0a 20 20 20 20 2f 2f  em only...    //
6760: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
6770: 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72    internal abstr
6780: 61 63 74 20 63 6c 61 73 73 20 53 51 4c 69 74 65  act class SQLite
6790: 43 6f 6e 6e 65 63 74 69 6f 6e 4c 6f 63 6b 20 3a  ConnectionLock :
67a0: 20 49 44 69 73 70 6f 73 61 62 6c 65 0d 0a 20 20   IDisposable..  
67b0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65    {..        #re
67c0: 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e  gion Private Con
67d0: 73 74 61 6e 74 73 0d 0a 20 20 20 20 20 20 20 20  stants..        
67e0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
67f0: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 53         /// The S
6800: 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 75 73 65  QL statement use
6810: 64 20 77 68 65 6e 20 63 72 65 61 74 69 6e 67 20  d when creating 
6820: 74 68 65 20 6e 61 74 69 76 65 20 73 74 61 74 65  the native state
6830: 6d 65 6e 74 20 68 61 6e 64 6c 65 2e 0d 0a 20 20  ment handle...  
6840: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 72 65 20        /// There 
6850: 61 72 65 20 6e 6f 20 73 70 65 63 69 61 6c 20 72  are no special r
6860: 65 71 75 69 72 65 6d 65 6e 74 73 20 66 6f 72 20  equirements for 
6870: 74 68 69 73 20 6f 74 68 65 72 20 74 68 61 6e 20  this other than 
6880: 63 6f 75 6e 74 69 6e 67 20 61 73 0d 0a 20 20 20  counting as..   
6890: 20 20 20 20 20 2f 2f 2f 20 61 6e 20 22 6f 70 65       /// an "ope
68a0: 6e 20 73 74 61 74 65 6d 65 6e 74 20 68 61 6e 64  n statement hand
68b0: 6c 65 22 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le"...        //
68c0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
68d0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f        private co
68e0: 6e 73 74 20 73 74 72 69 6e 67 20 4c 6f 63 6b 4e  nst string LockN
68f0: 6f 70 53 71 6c 20 3d 20 22 53 45 4c 45 43 54 20  opSql = "SELECT 
6900: 31 3b 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  1;";....        
6910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6950: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
6960: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
6970: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
6980: 65 20 66 6f 72 6d 61 74 20 6f 66 20 74 68 65 20  e format of the 
6990: 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 75 73  error message us
69a0: 65 64 20 77 68 65 6e 20 72 65 70 6f 72 74 69 6e  ed when reportin
69b0: 67 2c 20 64 75 72 69 6e 67 20 6f 62 6a 65 63 74  g, during object
69c0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 69  ..        /// di
69d0: 73 70 6f 73 61 6c 2c 20 74 68 61 74 20 74 68 65  sposal, that the
69e0: 20 73 74 61 74 65 6d 65 6e 74 20 68 61 6e 64 6c   statement handl
69f0: 65 20 69 73 20 73 74 69 6c 6c 20 6f 70 65 6e 20  e is still open 
6a00: 28 69 2e 65 2e 20 62 65 63 61 75 73 65 0d 0a 20  (i.e. because.. 
6a10: 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 69 73 20         /// this 
6a20: 73 69 74 75 61 74 69 6f 6e 20 69 73 20 63 6f 6e  situation is con
6a30: 73 69 64 65 72 65 64 20 61 20 66 61 69 72 6c 79  sidered a fairly
6a40: 20 73 65 72 69 6f 75 73 20 70 72 6f 67 72 61 6d   serious program
6a50: 6d 69 6e 67 20 65 72 72 6f 72 29 2e 0d 0a 20 20  ming error)...  
6a60: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
6a70: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  ary>..        pr
6a80: 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69  ivate const stri
6a90: 6e 67 20 53 74 61 74 65 6d 65 6e 74 4d 65 73 73  ng StatementMess
6aa0: 61 67 65 46 6f 72 6d 61 74 20 3d 0d 0a 20 20 20  ageFormat =..   
6ab0: 20 20 20 20 20 20 20 20 20 22 43 6f 6e 6e 65 63           "Connec
6ac0: 74 69 6f 6e 20 6c 6f 63 6b 20 6f 62 6a 65 63 74  tion lock object
6ad0: 20 77 61 73 20 7b 30 7d 20 77 69 74 68 20 73 74   was {0} with st
6ae0: 61 74 65 6d 65 6e 74 20 7b 31 7d 22 3b 0d 0a 20  atement {1}";.. 
6af0: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
6b00: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
6b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b50: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
6b60: 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
6b70: 44 61 74 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f  Data..        //
6b80: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
6b90: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 77 72 61       /// The wra
6ba0: 70 70 65 64 20 6e 61 74 69 76 65 20 63 6f 6e 6e  pped native conn
6bb0: 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65 20 61 73  ection handle as
6bc0: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
6bd0: 69 73 20 6c 6f 63 6b 2e 0d 0a 20 20 20 20 20 20  is lock...      
6be0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
6bf0: 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
6c00: 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  e SQLiteConnecti
6c10: 6f 6e 48 61 6e 64 6c 65 20 68 61 6e 64 6c 65 3b  onHandle handle;
6c20: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
6c30: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
6c40: 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73     /// The flags
6c50: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
6c60: 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20   the connection 
6c70: 72 65 70 72 65 73 65 6e 74 65 64 20 62 79 20 74  represented by t
6c80: 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
6c90: 3c 73 65 65 20 63 72 65 66 3d 22 68 61 6e 64 6c  <see cref="handl
6ca0: 65 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20  e" /> value...  
6cb0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
6cc0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  ary>..        pr
6cd0: 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e  ivate SQLiteConn
6ce0: 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67  ectionFlags flag
6cf0: 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  s;....        //
6d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d40: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
6d50: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
6d60: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
6d70: 6e 61 74 69 76 65 20 73 74 61 74 65 6d 65 6e 74  native statement
6d80: 20 68 61 6e 64 6c 65 20 66 6f 72 20 74 68 69 73   handle for this
6d90: 20 6c 6f 63 6b 2e 20 20 54 68 65 20 67 61 72 62   lock.  The garb
6da0: 61 67 65 20 63 6f 6c 6c 65 63 74 6f 72 0d 0a 20  age collector.. 
6db0: 20 20 20 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f         /// canno
6dc0: 74 20 63 61 75 73 65 20 74 68 69 73 20 73 74 61  t cause this sta
6dd0: 74 65 6d 65 6e 74 20 74 6f 20 62 65 20 66 69 6e  tement to be fin
6de0: 61 6c 69 7a 65 64 3b 20 74 68 65 72 65 66 6f 72  alized; therefor
6df0: 65 2c 20 69 74 20 77 69 6c 6c 0d 0a 20 20 20 20  e, it will..    
6e00: 20 20 20 20 2f 2f 2f 20 73 65 72 76 65 20 74 6f      /// serve to
6e10: 20 68 6f 6c 64 20 74 68 65 20 61 73 73 6f 63 69   hold the associ
6e20: 61 74 65 64 20 6e 61 74 69 76 65 20 63 6f 6e 6e  ated native conn
6e30: 65 63 74 69 6f 6e 20 6f 70 65 6e 20 75 6e 74 69  ection open unti
6e40: 6c 20 69 74 20 69 73 0d 0a 20 20 20 20 20 20 20  l it is..       
6e50: 20 2f 2f 2f 20 66 72 65 65 64 20 6d 61 6e 75 61   /// freed manua
6e60: 6c 6c 79 20 75 73 69 6e 67 20 74 68 65 20 3c 73  lly using the <s
6e70: 65 65 20 63 72 65 66 3d 22 55 6e 6c 6f 63 6b 22  ee cref="Unlock"
6e80: 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
6e90: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
6ea0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
6eb0: 76 61 74 65 20 49 6e 74 50 74 72 20 73 74 61 74  vate IntPtr stat
6ec0: 65 6d 65 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20  ement;..        
6ed0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
6ee0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
6ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
6f30: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
6f40: 20 50 75 62 6c 69 63 20 43 6f 6e 73 74 72 75 63   Public Construc
6f50: 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tors..        //
6f60: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
6f70: 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75       /// Constru
6f80: 63 74 73 20 61 20 6e 65 77 20 69 6e 73 74 61 6e  cts a new instan
6f90: 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73  ce of this class
6fa0: 20 75 73 69 6e 67 20 74 68 65 20 73 70 65 63 69   using the speci
6fb0: 66 69 65 64 20 77 72 61 70 70 65 64 0d 0a 20 20  fied wrapped..  
6fc0: 20 20 20 20 20 20 2f 2f 2f 20 6e 61 74 69 76 65        /// native
6fd0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64   connection hand
6fe0: 6c 65 20 61 6e 64 20 61 73 73 6f 63 69 61 74 65  le and associate
6ff0: 64 20 66 6c 61 67 73 2e 0d 0a 20 20 20 20 20 20  d flags...      
7000: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
7010: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
7020: 61 72 61 6d 20 6e 61 6d 65 3d 22 68 61 6e 64 6c  aram name="handl
7030: 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
7040: 20 54 68 65 20 77 72 61 70 70 65 64 20 6e 61 74   The wrapped nat
7050: 69 76 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68  ive connection h
7060: 61 6e 64 6c 65 20 74 6f 20 62 65 20 61 73 73 6f  andle to be asso
7070: 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73  ciated with this
7080: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f  ..        /// lo
7090: 63 6b 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ck...        ///
70a0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
70b0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
70c0: 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a 20 20 20  me="flags">..   
70d0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61       /// The fla
70e0: 67 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  gs associated wi
70f0: 74 68 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f  th the connectio
7100: 6e 20 72 65 70 72 65 73 65 6e 74 65 64 20 62 79  n represented by
7110: 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
7120: 2f 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65  / <paramref name
7130: 3d 22 68 61 6e 64 6c 65 22 20 2f 3e 20 76 61 6c  ="handle" /> val
7140: 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ue...        ///
7150: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
7160: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
7170: 6d 65 3d 22 61 75 74 6f 4c 6f 63 6b 22 3e 0d 0a  me="autoLock">..
7180: 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d          /// Non-
7190: 7a 65 72 6f 20 69 66 20 74 68 65 20 3c 73 65 65  zero if the <see
71a0: 20 63 72 65 66 3d 22 4c 6f 63 6b 22 20 2f 3e 20   cref="Lock" /> 
71b0: 6d 65 74 68 6f 64 20 73 68 6f 75 6c 64 20 62 65  method should be
71c0: 20 63 61 6c 6c 65 64 20 70 72 69 6f 72 0d 0a 20   called prior.. 
71d0: 20 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20 72 65         /// to re
71e0: 74 75 72 6e 69 6e 67 20 66 72 6f 6d 20 74 68 69  turning from thi
71f0: 73 20 63 6f 6e 73 74 72 75 63 74 6f 72 2e 0d 0a  s constructor...
7200: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
7210: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ram>..        pu
7220: 62 6c 69 63 20 53 51 4c 69 74 65 43 6f 6e 6e 65  blic SQLiteConne
7230: 63 74 69 6f 6e 4c 6f 63 6b 28 0d 0a 20 20 20 20  ctionLock(..    
7240: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f          SQLiteCo
7250: 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 68  nnectionHandle h
7260: 61 6e 64 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20  andle,..        
7270: 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63      SQLiteConnec
7280: 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 2c  tionFlags flags,
7290: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f  ..            bo
72a0: 6f 6c 20 61 75 74 6f 4c 6f 63 6b 0d 0a 20 20 20  ol autoLock..   
72b0: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
72c0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
72d0: 20 20 20 74 68 69 73 2e 68 61 6e 64 6c 65 20 3d     this.handle =
72e0: 20 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20   handle;..      
72f0: 20 20 20 20 20 20 74 68 69 73 2e 66 6c 61 67 73        this.flags
7300: 20 3d 20 66 6c 61 67 73 3b 0d 0a 0d 0a 20 20 20   = flags;....   
7310: 20 20 20 20 20 20 20 20 20 69 66 20 28 61 75 74           if (aut
7320: 6f 4c 6f 63 6b 29 0d 0a 20 20 20 20 20 20 20 20  oLock)..        
7330: 20 20 20 20 20 20 20 20 4c 6f 63 6b 28 29 3b 0d          Lock();.
7340: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
7350: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
7360: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
7370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
73a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
73b0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
73c0: 67 69 6f 6e 20 50 72 6f 74 65 63 74 65 64 20 4d  gion Protected M
73d0: 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
73e0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
73f0: 20 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69         /// Queri
7400: 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74  es and returns t
7410: 68 65 20 77 72 61 70 70 65 64 20 6e 61 74 69 76  he wrapped nativ
7420: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 6e  e connection han
7430: 64 6c 65 20 66 6f 72 20 74 68 69 73 0d 0a 20 20  dle for this..  
7440: 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e        /// instan
7450: 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ce...        ///
7460: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
7470: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
7480: 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
7490: 54 68 65 20 77 72 61 70 70 65 64 20 6e 61 74 69  The wrapped nati
74a0: 76 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61  ve connection ha
74b0: 6e 64 6c 65 20 66 6f 72 20 74 68 69 73 20 69 6e  ndle for this in
74c0: 73 74 61 6e 63 65 20 2d 4f 52 2d 20 6e 75 6c 6c  stance -OR- null
74d0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 66  ..        /// if
74e0: 20 69 74 20 69 73 20 75 6e 61 76 61 69 6c 61 62   it is unavailab
74f0: 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
7500: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
7510: 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 53       protected S
7520: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
7530: 61 6e 64 6c 65 20 47 65 74 48 61 6e 64 6c 65 28  andle GetHandle(
7540: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
7550: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
7560: 20 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20   handle;..      
7570: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
7580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
75a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
75b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
75c0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
75d0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
75e0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 51 75 65  .        /// Que
75f0: 72 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73  ries and returns
7600: 20 74 68 65 20 66 6c 61 67 73 20 61 73 73 6f 63   the flags assoc
7610: 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20 63  iated with the c
7620: 6f 6e 6e 65 63 74 69 6f 6e 20 66 6f 72 0d 0a 20  onnection for.. 
7630: 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 69 73 20         /// this 
7640: 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
7650: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
7660: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
7670: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
7680: 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
7690: 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65  ref="SQLiteConne
76a0: 63 74 69 6f 6e 46 6c 61 67 73 22 20 2f 3e 20 76  ctionFlags" /> v
76b0: 61 6c 75 65 2e 20 20 54 68 65 72 65 20 69 73 20  alue.  There is 
76c0: 6e 6f 20 72 65 74 75 72 6e 0d 0a 20 20 20 20 20  no return..     
76d0: 20 20 20 2f 2f 2f 20 76 61 6c 75 65 20 72 65 73     /// value res
76e0: 65 72 76 65 64 20 74 6f 20 69 6e 64 69 63 61 74  erved to indicat
76f0: 65 20 61 6e 20 65 72 72 6f 72 2e 0d 0a 20 20 20  e an error...   
7700: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
7710: 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  ns>..        pro
7720: 74 65 63 74 65 64 20 53 51 4c 69 74 65 43 6f 6e  tected SQLiteCon
7730: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 47 65 74  nectionFlags Get
7740: 46 6c 61 67 73 28 29 0d 0a 20 20 20 20 20 20 20  Flags()..       
7750: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
7760: 72 65 74 75 72 6e 20 66 6c 61 67 73 3b 0d 0a 20  return flags;.. 
7770: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
7780: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
7790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
77a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
77b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
77c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
77d0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
77e0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
77f0: 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20 72 65  / Queries and re
7800: 74 75 72 6e 73 20 74 68 65 20 6e 61 74 69 76 65  turns the native
7810: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64   connection hand
7820: 6c 65 20 66 6f 72 20 74 68 69 73 20 69 6e 73 74  le for this inst
7830: 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ance...        /
7840: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
7850: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
7860: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
7870: 2f 20 54 68 65 20 6e 61 74 69 76 65 20 63 6f 6e  / The native con
7880: 6e 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65 20 66  nection handle f
7890: 6f 72 20 74 68 69 73 20 69 6e 73 74 61 6e 63 65  or this instance
78a0: 2e 20 20 49 66 20 74 68 69 73 20 76 61 6c 75 65  .  If this value
78b0: 20 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   is..        ///
78c0: 20 75 6e 61 76 61 69 6c 61 62 6c 65 20 6f 72 20   unavailable or 
78d0: 69 6e 76 61 6c 69 64 20 61 6e 20 65 78 63 65 70  invalid an excep
78e0: 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 74 68 72  tion will be thr
78f0: 6f 77 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  own...        //
7900: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
7910: 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20        protected 
7920: 49 6e 74 50 74 72 20 47 65 74 49 6e 74 50 74 72  IntPtr GetIntPtr
7930: 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
7940: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 68             if (h
7950: 61 6e 64 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  andle == null)..
7960: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
7970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
7980: 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64  hrow new Invalid
7990: 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69  OperationExcepti
79a0: 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
79b0: 20 20 20 20 20 20 20 20 20 22 43 6f 6e 6e 65 63           "Connec
79c0: 74 69 6f 6e 20 6c 6f 63 6b 20 6f 62 6a 65 63 74  tion lock object
79d0: 20 68 61 73 20 61 6e 20 69 6e 76 61 6c 69 64 20   has an invalid 
79e0: 68 61 6e 64 6c 65 2e 22 29 3b 0d 0a 20 20 20 20  handle.");..    
79f0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
7a00: 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
7a10: 68 61 6e 64 6c 65 50 74 72 20 3d 20 68 61 6e 64  handlePtr = hand
7a20: 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  le;....         
7a30: 20 20 20 69 66 20 28 68 61 6e 64 6c 65 50 74 72     if (handlePtr
7a40: 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
7a50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
7a60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7a70: 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c   throw new Inval
7a80: 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70  idOperationExcep
7a90: 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  tion(..         
7aa0: 20 20 20 20 20 20 20 20 20 20 20 22 43 6f 6e 6e             "Conn
7ab0: 65 63 74 69 6f 6e 20 6c 6f 63 6b 20 6f 62 6a 65  ection lock obje
7ac0: 63 74 20 68 61 73 20 61 6e 20 69 6e 76 61 6c 69  ct has an invali
7ad0: 64 20 68 61 6e 64 6c 65 20 70 6f 69 6e 74 65 72  d handle pointer
7ae0: 2e 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  .");..          
7af0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
7b00: 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c 65     return handle
7b10: 50 74 72 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  Ptr;..        }.
7b20: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
7b30: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
7b40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7b50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7b60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7b70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7b80: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
7b90: 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63    #region Public
7ba0: 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
7bb0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
7bc0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
7bd0: 73 20 6d 65 74 68 6f 64 20 61 74 74 65 6d 70 74  s method attempt
7be0: 73 20 74 6f 20 22 6c 6f 63 6b 22 20 74 68 65 20  s to "lock" the 
7bf0: 61 73 73 6f 63 69 61 74 65 64 20 6e 61 74 69 76  associated nativ
7c00: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 0d 0a 20 20  e connection..  
7c10: 20 20 20 20 20 20 2f 2f 2f 20 68 61 6e 64 6c 65        /// handle
7c20: 20 62 79 20 70 72 65 70 61 72 69 6e 67 20 61 20   by preparing a 
7c30: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 74 68  SQL statement th
7c40: 61 74 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20 66  at will not be f
7c50: 69 6e 61 6c 69 7a 65 64 0d 0a 20 20 20 20 20 20  inalized..      
7c60: 20 20 2f 2f 2f 20 75 6e 74 69 6c 20 74 68 65 20    /// until the 
7c70: 3c 73 65 65 20 63 72 65 66 3d 22 55 6e 6c 6f 63  <see cref="Unloc
7c80: 6b 22 20 2f 3e 20 6d 65 74 68 6f 64 20 69 73 20  k" /> method is 
7c90: 63 61 6c 6c 65 64 20 28 69 2e 65 2e 20 61 6e 64  called (i.e. and
7ca0: 20 77 68 69 63 68 0d 0a 20 20 20 20 20 20 20 20   which..        
7cb0: 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64 6f  /// cannot be do
7cc0: 6e 65 20 62 79 20 74 68 65 20 67 61 72 62 61 67  ne by the garbag
7cd0: 65 20 63 6f 6c 6c 65 63 74 6f 72 29 2e 20 20 49  e collector).  I
7ce0: 66 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20  f the statement 
7cf0: 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  is..        /// 
7d00: 61 6c 72 65 61 64 79 20 70 72 65 70 61 72 65 64  already prepared
7d10: 2c 20 6e 6f 74 68 69 6e 67 20 69 73 20 64 6f 6e  , nothing is don
7d20: 65 2e 20 20 49 66 20 74 68 65 20 73 74 61 74 65  e.  If the state
7d30: 6d 65 6e 74 20 63 61 6e 6e 6f 74 20 62 65 0d 0a  ment cannot be..
7d40: 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 65 70          /// prep
7d50: 61 72 65 64 20 66 6f 72 20 61 6e 79 20 72 65 61  ared for any rea
7d60: 73 6f 6e 2c 20 61 6e 20 65 78 63 65 70 74 69 6f  son, an exceptio
7d70: 6e 20 77 69 6c 6c 20 62 65 20 74 68 72 6f 77 6e  n will be thrown
7d80: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
7d90: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
7da0: 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 4c     public void L
7db0: 6f 63 6b 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  ock()..        {
7dc0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 43 68  ..            Ch
7dd0: 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a  eckDisposed();..
7de0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
7df0: 20 28 73 74 61 74 65 6d 65 6e 74 20 21 3d 20 49   (statement != I
7e00: 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
7e10: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
7e20: 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  urn;....        
7e30: 20 20 20 20 49 6e 74 50 74 72 20 70 53 71 6c 20      IntPtr pSql 
7e40: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
7e50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72  ..            tr
7e60: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
7e70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7e80: 20 20 69 6e 74 20 6e 53 71 6c 20 3d 20 30 3b 0d    int nSql = 0;.
7e90: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
7ea0: 20 20 20 70 53 71 6c 20 3d 20 53 51 4c 69 74 65     pSql = SQLite
7eb0: 53 74 72 69 6e 67 2e 55 74 66 38 49 6e 74 50 74  String.Utf8IntPt
7ec0: 72 46 72 6f 6d 53 74 72 69 6e 67 28 4c 6f 63 6b  rFromString(Lock
7ed0: 4e 6f 70 53 71 6c 2c 20 72 65 66 20 6e 53 71 6c  NopSql, ref nSql
7ee0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
7ef0: 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 52 65        IntPtr pRe
7f00: 6d 61 69 6e 20 3d 20 49 6e 74 50 74 72 2e 5a 65  main = IntPtr.Ze
7f10: 72 6f 3b 0d 0a 0d 0a 23 69 66 20 21 53 51 4c 49  ro;....#if !SQLI
7f20: 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20  TE_STANDARD..   
7f30: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74               int
7f40: 20 6e 52 65 6d 61 69 6e 20 3d 20 30 3b 0d 0a 20   nRemain = 0;.. 
7f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
7f60: 74 72 69 6e 67 20 66 75 6e 63 74 69 6f 6e 4e 61  tring functionNa
7f70: 6d 65 20 3d 20 22 73 71 6c 69 74 65 33 5f 70 72  me = "sqlite3_pr
7f80: 65 70 61 72 65 5f 69 6e 74 65 72 6f 70 22 3b 0d  epare_interop";.
7f90: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
7fa0: 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
7fb0: 64 65 20 72 63 20 3d 20 55 6e 73 61 66 65 4e 61  de rc = UnsafeNa
7fc0: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
7fd0: 74 65 33 5f 70 72 65 70 61 72 65 5f 69 6e 74 65  te3_prepare_inte
7fe0: 72 6f 70 28 0d 0a 20 20 20 20 20 20 20 20 20 20  rop(..          
7ff0: 20 20 20 20 20 20 20 20 20 20 47 65 74 49 6e 74            GetInt
8000: 50 74 72 28 29 2c 20 70 53 71 6c 2c 20 6e 53 71  Ptr(), pSql, nSq
8010: 6c 2c 20 72 65 66 20 73 74 61 74 65 6d 65 6e 74  l, ref statement
8020: 2c 20 72 65 66 20 70 52 65 6d 61 69 6e 2c 0d 0a  , ref pRemain,..
8030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8040: 20 20 20 20 72 65 66 20 6e 52 65 6d 61 69 6e 29      ref nRemain)
8050: 3b 0d 0a 23 65 6c 73 65 0d 0a 23 69 66 20 55 53  ;..#else..#if US
8060: 45 5f 50 52 45 50 41 52 45 5f 56 32 0d 0a 20 20  E_PREPARE_V2..  
8070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
8080: 72 69 6e 67 20 66 75 6e 63 74 69 6f 6e 4e 61 6d  ring functionNam
8090: 65 20 3d 20 22 73 71 6c 69 74 65 33 5f 70 72 65  e = "sqlite3_pre
80a0: 70 61 72 65 5f 76 32 22 3b 0d 0a 0d 0a 20 20 20  pare_v2";....   
80b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
80c0: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 72 63 20  iteErrorCode rc 
80d0: 3d 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  = UnsafeNativeMe
80e0: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 70 72  thods.sqlite3_pr
80f0: 65 70 61 72 65 5f 76 32 28 0d 0a 20 20 20 20 20  epare_v2(..     
8100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47                 G
8110: 65 74 49 6e 74 50 74 72 28 29 2c 20 70 53 71 6c  etIntPtr(), pSql
8120: 2c 20 6e 53 71 6c 2c 20 72 65 66 20 73 74 61 74  , nSql, ref stat
8130: 65 6d 65 6e 74 2c 20 72 65 66 20 70 52 65 6d 61  ement, ref pRema
8140: 69 6e 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  in);..#else..   
8150: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
8160: 69 6e 67 20 66 75 6e 63 74 69 6f 6e 4e 61 6d 65  ing functionName
8170: 20 3d 20 22 73 71 6c 69 74 65 33 5f 70 72 65 70   = "sqlite3_prep
8180: 61 72 65 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  are";....       
8190: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45           SQLiteE
81a0: 72 72 6f 72 43 6f 64 65 20 72 63 20 3d 20 55 6e  rrorCode rc = Un
81b0: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
81c0: 73 2e 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72  s.sqlite3_prepar
81d0: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
81e0: 20 20 20 20 20 20 20 20 47 65 74 49 6e 74 50 74          GetIntPt
81f0: 72 28 29 2c 20 70 53 71 6c 2c 20 6e 53 71 6c 2c  r(), pSql, nSql,
8200: 20 72 65 66 20 73 74 61 74 65 6d 65 6e 74 2c 20   ref statement, 
8210: 72 65 66 20 70 52 65 6d 61 69 6e 29 3b 0d 0a 23  ref pRemain);..#
8220: 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 0d  endif..#endif...
8230: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8240: 20 69 66 20 28 72 63 20 21 3d 20 53 51 4c 69 74   if (rc != SQLit
8250: 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 29 0d 0a  eErrorCode.Ok)..
8260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8270: 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 53 51      throw new SQ
8280: 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 28 72 63  LiteException(rc
8290: 2c 20 66 75 6e 63 74 69 6f 6e 4e 61 6d 65 29 3b  , functionName);
82a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
82b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e  .            fin
82c0: 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20  ally..          
82d0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
82e0: 20 20 20 20 20 69 66 20 28 70 53 71 6c 20 21 3d       if (pSql !=
82f0: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
8300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
8310: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8320: 20 20 20 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f        SQLiteMemo
8330: 72 79 2e 46 72 65 65 28 70 53 71 6c 29 3b 0d 0a  ry.Free(pSql);..
8340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8350: 20 20 20 20 70 53 71 6c 20 3d 20 49 6e 74 50 74      pSql = IntPt
8360: 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20  r.Zero;..       
8370: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
8380: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
8390: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
83a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
83b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
83c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
83d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
83e0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
83f0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
8400: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
8410: 69 73 20 6d 65 74 68 6f 64 20 61 74 74 65 6d 70  is method attemp
8420: 74 73 20 74 6f 20 22 75 6e 6c 6f 63 6b 22 20 74  ts to "unlock" t
8430: 68 65 20 61 73 73 6f 63 69 61 74 65 64 20 6e 61  he associated na
8440: 74 69 76 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 0d  tive connection.
8450: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 68 61 6e  .        /// han
8460: 64 6c 65 20 62 79 20 66 69 6e 61 6c 69 7a 69 6e  dle by finalizin
8470: 67 20 74 68 65 20 70 72 65 76 69 6f 75 73 6c 79  g the previously
8480: 20 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d   prepared statem
8490: 65 6e 74 2e 20 20 49 66 20 74 68 65 0d 0a 20 20  ent.  If the..  
84a0: 20 20 20 20 20 20 2f 2f 2f 20 73 74 61 74 65 6d        /// statem
84b0: 65 6e 74 20 69 73 20 61 6c 72 65 61 64 79 20 66  ent is already f
84c0: 69 6e 61 6c 69 7a 65 64 2c 20 6e 6f 74 68 69 6e  inalized, nothin
84d0: 67 20 69 73 20 64 6f 6e 65 2e 20 20 49 66 20 74  g is done.  If t
84e0: 68 65 20 73 74 61 74 65 6d 65 6e 74 0d 0a 20 20  he statement..  
84f0: 20 20 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74        /// cannot
8500: 20 62 65 20 66 69 6e 61 6c 69 7a 65 64 20 66 6f   be finalized fo
8510: 72 20 61 6e 79 20 72 65 61 73 6f 6e 2c 20 61 6e  r any reason, an
8520: 20 65 78 63 65 70 74 69 6f 6e 20 77 69 6c 6c 20   exception will 
8530: 62 65 20 74 68 72 6f 77 6e 2e 0d 0a 20 20 20 20  be thrown...    
8540: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
8550: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
8560: 69 63 20 76 6f 69 64 20 55 6e 6c 6f 63 6b 28 29  ic void Unlock()
8570: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
8580: 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69           CheckDi
8590: 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20  sposed();....   
85a0: 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74 61           if (sta
85b0: 74 65 6d 65 6e 74 20 3d 3d 20 49 6e 74 50 74 72  tement == IntPtr
85c0: 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
85d0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d          return;.
85e0: 0a 0d 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53  ...#if !SQLITE_S
85f0: 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 20 20 20  TANDARD..       
8600: 20 20 20 20 20 73 74 72 69 6e 67 20 66 75 6e 63       string func
8610: 74 69 6f 6e 4e 61 6d 65 20 3d 20 22 73 71 6c 69  tionName = "sqli
8620: 74 65 33 5f 66 69 6e 61 6c 69 7a 65 5f 69 6e 74  te3_finalize_int
8630: 65 72 6f 70 22 3b 0d 0a 0d 0a 20 20 20 20 20 20  erop";....      
8640: 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f        SQLiteErro
8650: 72 43 6f 64 65 20 72 63 20 3d 20 55 6e 73 61 66  rCode rc = Unsaf
8660: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
8670: 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 5f  qlite3_finalize_
8680: 69 6e 74 65 72 6f 70 28 0d 0a 20 20 20 20 20 20  interop(..      
8690: 20 20 20 20 20 20 20 20 20 20 73 74 61 74 65 6d            statem
86a0: 65 6e 74 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  ent);..#else..  
86b0: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
86c0: 20 66 75 6e 63 74 69 6f 6e 4e 61 6d 65 20 3d 20   functionName = 
86d0: 22 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a  "sqlite3_finaliz
86e0: 65 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e";....         
86f0: 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
8700: 64 65 20 72 63 20 3d 20 55 6e 73 61 66 65 4e 61  de rc = UnsafeNa
8710: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
8720: 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28 0d 0a 20  te3_finalize(.. 
8730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
8740: 74 61 74 65 6d 65 6e 74 29 3b 0d 0a 23 65 6e 64  tatement);..#end
8750: 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  if....          
8760: 20 20 69 66 20 28 72 63 20 21 3d 20 53 51 4c 69    if (rc != SQLi
8770: 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 29 0d  teErrorCode.Ok).
8780: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8790: 20 74 68 72 6f 77 20 6e 65 77 20 53 51 4c 69 74   throw new SQLit
87a0: 65 45 78 63 65 70 74 69 6f 6e 28 72 63 2c 20 66  eException(rc, f
87b0: 75 6e 63 74 69 6f 6e 4e 61 6d 65 29 3b 0d 0a 0d  unctionName);...
87c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74 61  .            sta
87d0: 74 65 6d 65 6e 74 20 3d 20 49 6e 74 50 74 72 2e  tement = IntPtr.
87e0: 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d  Zero;..        }
87f0: 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
8800: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
8810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8850: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
8860: 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73 70     #region IDisp
8870: 6f 73 61 62 6c 65 20 4d 65 6d 62 65 72 73 0d 0a  osable Members..
8880: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
8890: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
88a0: 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20 74  // Disposes of t
88b0: 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
88c0: 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nce...        //
88d0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
88e0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69        public voi
88f0: 64 20 44 69 73 70 6f 73 65 28 29 0d 0a 20 20 20  d Dispose()..   
8900: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
8910: 20 20 20 20 44 69 73 70 6f 73 65 28 74 72 75 65      Dispose(true
8920: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
8930: 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c  GC.SuppressFinal
8940: 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20  ize(this);..    
8950: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
8960: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
8970: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
8980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
89a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
89b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
89c0: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
89d0: 49 44 69 73 70 6f 73 61 62 6c 65 20 22 50 61 74  IDisposable "Pat
89e0: 74 65 72 6e 22 20 4d 65 6d 62 65 72 73 0d 0a 20  tern" Members.. 
89f0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
8a00: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
8a10: 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68  / Non-zero if th
8a20: 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  is object instan
8a30: 63 65 20 68 61 73 20 62 65 65 6e 20 64 69 73 70  ce has been disp
8a40: 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  osed...        /
8a50: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
8a60: 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62         private b
8a70: 6f 6f 6c 20 64 69 73 70 6f 73 65 64 3b 0d 0a 0d  ool disposed;...
8a80: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
8a90: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
8aa0: 2f 2f 2f 20 54 68 72 6f 77 73 20 61 6e 20 65 78  /// Throws an ex
8ab0: 63 65 70 74 69 6f 6e 20 69 66 20 74 68 69 73 20  ception if this 
8ac0: 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
8ad0: 68 61 73 20 62 65 65 6e 20 64 69 73 70 6f 73 65  has been dispose
8ae0: 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
8af0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
8b00: 20 20 20 20 70 72 69 76 61 74 65 20 76 6f 69 64      private void
8b10: 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
8b20: 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
8b30: 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 54 48 52        {..#if THR
8b40: 4f 57 5f 4f 4e 5f 44 49 53 50 4f 53 45 44 0d 0a  OW_ON_DISPOSED..
8b50: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
8b60: 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20  disposed)..     
8b70: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
8b80: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
8b90: 6e 65 77 20 4f 62 6a 65 63 74 44 69 73 70 6f 73  new ObjectDispos
8ba0: 65 64 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20  edException(..  
8bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8bc0: 20 20 74 79 70 65 6f 66 28 53 51 4c 69 74 65 43    typeof(SQLiteC
8bd0: 6f 6e 6e 65 63 74 69 6f 6e 4c 6f 63 6b 29 2e 4e  onnectionLock).N
8be0: 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ame);..         
8bf0: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
8c00: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
8c10: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
8c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
8c60: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
8c70: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
8c80: 20 44 69 73 70 6f 73 65 73 20 6f 72 20 66 69 6e   Disposes or fin
8c90: 61 6c 69 7a 65 73 20 74 68 69 73 20 6f 62 6a 65  alizes this obje
8ca0: 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  ct instance...  
8cb0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
8cc0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
8cd0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64  / <param name="d
8ce0: 69 73 70 6f 73 69 6e 67 22 3e 0d 0a 20 20 20 20  isposing">..    
8cf0: 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
8d00: 20 69 66 20 74 68 69 73 20 6f 62 6a 65 63 74 20   if this object 
8d10: 69 73 20 62 65 69 6e 67 20 64 69 73 70 6f 73 65  is being dispose
8d20: 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 74 68  d; otherwise, th
8d30: 69 73 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20  is object..     
8d40: 20 20 20 2f 2f 2f 20 69 73 20 62 65 69 6e 67 20     /// is being 
8d50: 66 69 6e 61 6c 69 7a 65 64 2e 0d 0a 20 20 20 20  finalized...    
8d60: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
8d70: 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63  ..        protec
8d80: 74 65 64 20 76 69 72 74 75 61 6c 20 76 6f 69 64  ted virtual void
8d90: 20 44 69 73 70 6f 73 65 28 62 6f 6f 6c 20 64 69   Dispose(bool di
8da0: 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20 20  sposing)..      
8db0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
8dc0: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
8dd0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
8de0: 20 20 20 20 20 69 66 20 28 21 64 69 73 70 6f 73       if (!dispos
8df0: 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ed)..           
8e00: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
8e10: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 69 66              //if
8e20: 20 28 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20   (disposing)..  
8e30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8e40: 20 20 2f 2f 7b 0d 0a 20 20 20 20 20 20 20 20 20    //{..         
8e50: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
8e60: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
8e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e80: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20  /////..         
8e90: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
8ea0: 20 2f 2f 20 64 69 73 70 6f 73 65 20 6d 61 6e 61   // dispose mana
8eb0: 67 65 64 20 72 65 73 6f 75 72 63 65 73 20 68 65  ged resources he
8ec0: 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20  re.....         
8ed0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
8ee0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
8ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f00: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20  /////..         
8f10: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 7d 0d 0a             //}..
8f20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8f30: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
8f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
8f60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8f70: 20 20 2f 2f 20 72 65 6c 65 61 73 65 20 75 6e 6d    // release unm
8f80: 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63 65 73  anaged resources
8f90: 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20   here.....      
8fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
8fb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8fc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8fd0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
8fe0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
8ff0: 73 74 61 74 65 6d 65 6e 74 20 21 3d 20 49 6e 74  statement != Int
9000: 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
9010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
9020: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9030: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
9040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9050: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54        // NOTE: T
9060: 68 69 73 20 73 68 6f 75 6c 64 20 6e 65 76 65 72  his should never
9070: 20 68 61 70 70 65 6e 2e 20 20 54 68 69 73 20 6f   happen.  This o
9080: 62 6a 65 63 74 20 77 61 73 0d 0a 20 20 20 20 20  bject was..     
9090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
90a0: 20 20 20 2f 2f 20 20 20 20 20 20 20 64 69 73 70     //       disp
90b0: 6f 73 65 64 20 28 6f 72 20 66 69 6e 61 6c 69 7a  osed (or finaliz
90c0: 65 64 29 20 77 69 74 68 6f 75 74 20 74 68 65 20  ed) without the 
90d0: 55 6e 6c 6f 63 6b 0d 0a 20 20 20 20 20 20 20 20  Unlock..        
90e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
90f0: 2f 2f 20 20 20 20 20 20 20 6d 65 74 68 6f 64 20  //       method 
9100: 62 65 69 6e 67 20 63 61 6c 6c 65 64 20 66 69 72  being called fir
9110: 73 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  st...           
9120: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
9130: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9140: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
9150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9160: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
9170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9180: 20 20 20 20 20 69 66 20 28 48 65 6c 70 65 72 4d       if (HelperM
9190: 65 74 68 6f 64 73 2e 4c 6f 67 50 72 65 70 61 72  ethods.LogPrepar
91a0: 65 28 47 65 74 46 6c 61 67 73 28 29 29 29 0d 0a  e(GetFlags()))..
91b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
91c0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
91d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
91e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
91f0: 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
9200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9210: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
9220: 74 65 4c 6f 67 2e 4c 6f 67 4d 65 73 73 61 67 65  teLog.LogMessage
9230: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
9240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9250: 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
9260: 6f 72 43 6f 64 65 2e 4d 69 73 75 73 65 2c 0d 0a  orCode.Misuse,..
9270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9290: 20 20 20 20 48 65 6c 70 65 72 4d 65 74 68 6f 64      HelperMethod
92a0: 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
92b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
92c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
92d0: 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
92e0: 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
92f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9310: 20 20 20 20 20 20 53 74 61 74 65 6d 65 6e 74 4d        StatementM
9320: 65 73 73 61 67 65 46 6f 72 6d 61 74 2c 20 64 69  essageFormat, di
9330: 73 70 6f 73 69 6e 67 20 3f 0d 0a 20 20 20 20 20  sposing ?..     
9340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9360: 20 20 20 22 64 69 73 70 6f 73 65 64 22 20 3a 20     "disposed" : 
9370: 22 66 69 6e 61 6c 69 7a 65 64 22 2c 0d 0a 20 20  "finalized",..  
9380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
93a0: 20 20 73 74 61 74 65 6d 65 6e 74 29 29 3b 0d 0a    statement));..
93b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
93c0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
93d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
93e0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
93f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9400: 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
9410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9420: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
9430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9440: 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
9450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9460: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 23 69 66          }....#if
9470: 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
9480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9490: 44 65 62 75 67 67 65 72 2e 42 72 65 61 6b 28 29  Debugger.Break()
94a0: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
94b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
94c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
94d0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
94e0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
94f0: 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20  finally..       
9500: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
9510: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
9520: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
9530: 4f 54 45 3a 20 45 76 65 72 79 74 68 69 6e 67 20  OTE: Everything 
9540: 73 68 6f 75 6c 64 20 62 65 20 66 75 6c 6c 79 20  should be fully 
9550: 64 69 73 70 6f 73 65 64 20 61 74 20 74 68 69 73  disposed at this
9560: 20 70 6f 69 6e 74 2e 0d 0a 20 20 20 20 20 20 20   point...       
9570: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
9580: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73               dis
9590: 70 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20  posed = true;.. 
95a0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
95b0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
95c0: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
95d0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
95e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
95f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
9620: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
9630: 6e 20 44 65 73 74 72 75 63 74 6f 72 0d 0a 20 20  n Destructor..  
9640: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
9650: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
9660: 20 46 69 6e 61 6c 69 7a 65 73 20 74 68 69 73 20   Finalizes this 
9670: 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e  object instance.
9680: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
9690: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
96a0: 20 20 7e 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74    ~SQLiteConnect
96b0: 69 6f 6e 4c 6f 63 6b 28 29 0d 0a 20 20 20 20 20  ionLock()..     
96c0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
96d0: 20 20 44 69 73 70 6f 73 65 28 66 61 6c 73 65 29    Dispose(false)
96e0: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
96f0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
9700: 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
9710: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
9720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
9770: 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65    #region SQLite
9780: 43 68 61 6e 67 65 53 65 74 49 74 65 72 61 74 6f  ChangeSetIterato
9790: 72 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f  r Class..    ///
97a0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
97b0: 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 6d  /// This class m
97c0: 61 6e 61 67 65 73 20 74 68 65 20 6e 61 74 69 76  anages the nativ
97d0: 65 20 63 68 61 6e 67 65 20 73 65 74 20 69 74 65  e change set ite
97e0: 72 61 74 6f 72 2e 20 20 49 74 20 69 73 20 75 73  rator.  It is us
97f0: 65 64 20 61 73 20 74 68 65 0d 0a 20 20 20 20 2f  ed as the..    /
9800: 2f 2f 20 62 61 73 65 20 63 6c 61 73 73 20 66 6f  // base class fo
9810: 72 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  r the <see cref=
9820: 22 53 51 4c 69 74 65 4d 65 6d 6f 72 79 43 68 61  "SQLiteMemoryCha
9830: 6e 67 65 53 65 74 49 74 65 72 61 74 6f 72 22 20  ngeSetIterator" 
9840: 2f 3e 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 2f 20  /> and..    /// 
9850: 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
9860: 65 53 74 72 65 61 6d 43 68 61 6e 67 65 53 65 74  eStreamChangeSet
9870: 49 74 65 72 61 74 6f 72 22 20 2f 3e 20 63 6c 61  Iterator" /> cla
9880: 73 73 65 73 2e 20 20 49 74 20 6b 6e 6f 77 73 20  sses.  It knows 
9890: 68 6f 77 20 74 6f 0d 0a 20 20 20 20 2f 2f 2f 20  how to..    /// 
98a0: 61 64 76 61 6e 63 65 20 74 68 65 20 6e 61 74 69  advance the nati
98b0: 76 65 20 69 74 65 72 61 74 6f 72 20 68 61 6e 64  ve iterator hand
98c0: 6c 65 20 61 73 20 77 65 6c 6c 20 61 73 20 66 69  le as well as fi
98d0: 6e 61 6c 69 7a 65 20 69 74 2e 0d 0a 20 20 20 20  nalize it...    
98e0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
98f0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6c 61      internal cla
9900: 73 73 20 53 51 4c 69 74 65 43 68 61 6e 67 65 53  ss SQLiteChangeS
9910: 65 74 49 74 65 72 61 74 6f 72 20 3a 20 49 44 69  etIterator : IDi
9920: 73 70 6f 73 61 62 6c 65 0d 0a 20 20 20 20 7b 0d  sposable..    {.
9930: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
9940: 20 50 72 69 76 61 74 65 20 44 61 74 61 0d 0a 20   Private Data.. 
9950: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
9960: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
9970: 2f 20 54 68 65 20 6e 61 74 69 76 65 20 63 68 61  / The native cha
9980: 6e 67 65 20 73 65 74 20 28 61 2e 6b 2e 61 2e 20  nge set (a.k.a. 
9990: 69 74 65 72 61 74 6f 72 29 20 68 61 6e 64 6c 65  iterator) handle
99a0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
99b0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
99c0: 20 20 20 70 72 69 76 61 74 65 20 49 6e 74 50 74     private IntPt
99d0: 72 20 69 74 65 72 61 74 6f 72 3b 0d 0a 0d 0a 20  r iterator;.... 
99e0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
99f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9a00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9a10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9a20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
9a30: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
9a40: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
9a50: 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
9a60: 20 74 68 69 73 20 69 6e 73 74 61 6e 63 65 20 6f   this instance o
9a70: 77 6e 73 20 74 68 65 20 6e 61 74 69 76 65 20 69  wns the native i
9a80: 74 65 72 61 74 6f 72 20 68 61 6e 64 6c 65 20 69  terator handle i
9a90: 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  n the..        /
9aa0: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 69 74  // <see cref="it
9ab0: 65 72 61 74 6f 72 22 20 2f 3e 20 66 69 65 6c 64  erator" /> field
9ac0: 2e 20 20 49 6e 20 74 68 61 74 20 63 61 73 65 2c  .  In that case,
9ad0: 20 74 68 69 73 20 69 6e 73 74 61 6e 63 65 20 77   this instance w
9ae0: 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ill..        ///
9af0: 20 66 69 6e 61 6c 69 7a 65 20 74 68 65 20 6e 61   finalize the na
9b00: 74 69 76 65 20 69 74 65 72 61 74 6f 72 20 68 61  tive iterator ha
9b10: 6e 64 6c 65 20 75 70 6f 6e 20 62 65 69 6e 67 20  ndle upon being 
9b20: 64 69 73 70 6f 73 65 64 20 6f 72 0d 0a 20 20 20  disposed or..   
9b30: 20 20 20 20 20 2f 2f 2f 20 66 69 6e 61 6c 69 7a       /// finaliz
9b40: 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
9b50: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
9b60: 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f       private boo
9b70: 6c 20 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a 20 20  l ownHandle;..  
9b80: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
9b90: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
9ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9be0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
9bf0: 72 65 67 69 6f 6e 20 50 72 6f 74 65 63 74 65 64  region Protected
9c00: 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20   Constructors.. 
9c10: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
9c20: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
9c30: 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61 20 6e  / Constructs a n
9c40: 65 77 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74  ew instance of t
9c50: 68 69 73 20 63 6c 61 73 73 20 75 73 69 6e 67 20  his class using 
9c60: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6e 61  the specified na
9c70: 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tive..        //
9c80: 2f 20 69 74 65 72 61 74 6f 72 20 68 61 6e 64 6c  / iterator handl
9c90: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
9ca0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
9cb0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
9cc0: 61 6d 65 3d 22 69 74 65 72 61 74 6f 72 22 3e 0d  ame="iterator">.
9cd0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
9ce0: 20 6e 61 74 69 76 65 20 69 74 65 72 61 74 6f 72   native iterator
9cf0: 20 68 61 6e 64 6c 65 20 74 6f 20 75 73 65 2e 0d   handle to use..
9d00: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
9d10: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
9d20: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
9d30: 6f 77 6e 48 61 6e 64 6c 65 22 3e 0d 0a 20 20 20  ownHandle">..   
9d40: 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
9d50: 6f 20 69 66 20 74 68 69 73 20 69 6e 73 74 61 6e  o if this instan
9d60: 63 65 20 69 73 20 74 6f 20 74 61 6b 65 20 6f 77  ce is to take ow
9d70: 6e 65 72 73 68 69 70 20 6f 66 20 74 68 65 20 6e  nership of the n
9d80: 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f  ative..        /
9d90: 2f 2f 20 69 74 65 72 61 74 6f 72 20 68 61 6e 64  // iterator hand
9da0: 6c 65 20 73 70 65 63 69 66 69 65 64 20 62 79 20  le specified by 
9db0: 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22  <paramref name="
9dc0: 69 74 65 72 61 74 6f 72 22 20 2f 3e 2e 0d 0a 20  iterator" />... 
9dd0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
9de0: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  am>..        pro
9df0: 74 65 63 74 65 64 20 53 51 4c 69 74 65 43 68 61  tected SQLiteCha
9e00: 6e 67 65 53 65 74 49 74 65 72 61 74 6f 72 28 0d  ngeSetIterator(.
9e10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
9e20: 50 74 72 20 69 74 65 72 61 74 6f 72 2c 0d 0a 20  Ptr iterator,.. 
9e30: 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
9e40: 6f 77 6e 48 61 6e 64 6c 65 0d 0a 20 20 20 20 20  ownHandle..     
9e50: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
9e60: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
9e70: 20 74 68 69 73 2e 69 74 65 72 61 74 6f 72 20 3d   this.iterator =
9e80: 20 69 74 65 72 61 74 6f 72 3b 0d 0a 20 20 20 20   iterator;..    
9e90: 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 77 6e          this.own
9ea0: 48 61 6e 64 6c 65 20 3d 20 6f 77 6e 48 61 6e 64  Handle = ownHand
9eb0: 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  le;..        }..
9ec0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
9ed0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
9ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f20: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
9f30: 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
9f40: 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
9f50: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
9f60: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 72  .        /// Thr
9f70: 6f 77 73 20 61 6e 20 65 78 63 65 70 74 69 6f 6e  ows an exception
9f80: 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20 69   if the native i
9f90: 74 65 72 61 74 6f 72 20 68 61 6e 64 6c 65 20 69  terator handle i
9fa0: 73 20 69 6e 76 61 6c 69 64 2e 0d 0a 20 20 20 20  s invalid...    
9fb0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
9fc0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  y>..        inte
9fd0: 72 6e 61 6c 20 76 6f 69 64 20 43 68 65 63 6b 48  rnal void CheckH
9fe0: 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  andle()..       
9ff0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
a000: 69 66 20 28 69 74 65 72 61 74 6f 72 20 3d 3d 20  if (iterator == 
a010: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
a020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
a030: 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f  row new InvalidO
a040: 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f  perationExceptio
a050: 6e 28 22 69 74 65 72 61 74 6f 72 20 69 73 20 6e  n("iterator is n
a060: 6f 74 20 6f 70 65 6e 22 29 3b 0d 0a 20 20 20 20  ot open");..    
a070: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
a080: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
a090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a0a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a0b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a0c0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
a0d0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
a0e0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55  >..        /// U
a0f0: 73 65 64 20 74 6f 20 71 75 65 72 79 20 74 68 65  sed to query the
a100: 20 6e 61 74 69 76 65 20 69 74 65 72 61 74 6f 72   native iterator
a110: 20 68 61 6e 64 6c 65 2e 20 20 54 68 69 73 20 6d   handle.  This m
a120: 65 74 68 6f 64 20 69 73 20 6f 6e 6c 79 20 75 73  ethod is only us
a130: 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
a140: 62 79 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  by the <see cref
a150: 3d 22 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65  ="SQLiteChangeSe
a160: 74 4d 65 74 61 64 61 74 61 49 74 65 6d 22 20 2f  tMetadataItem" /
a170: 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20  > class...      
a180: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
a190: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
a1a0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
a1b0: 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
a1c0: 69 74 65 72 61 74 6f 72 20 68 61 6e 64 6c 65 20  iterator handle 
a1d0: 2d 4f 52 2d 20 3c 73 65 65 20 63 72 65 66 3d 22  -OR- <see cref="
a1e0: 49 6e 74 50 74 72 2e 5a 65 72 6f 22 20 2f 3e 20  IntPtr.Zero" /> 
a1f0: 69 66 20 69 74 0d 0a 20 20 20 20 20 20 20 20 2f  if it..        /
a200: 2f 2f 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61  // is not availa
a210: 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
a220: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
a230: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 49        internal I
a240: 6e 74 50 74 72 20 47 65 74 49 6e 74 50 74 72 28  ntPtr GetIntPtr(
a250: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
a260: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
a270: 20 69 74 65 72 61 74 6f 72 3b 0d 0a 20 20 20 20   iterator;..    
a280: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
a290: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
a2a0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
a2b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a2c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a2d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a2e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
a2f0: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
a300: 50 75 62 6c 69 63 20 4d 65 74 68 6f 64 73 0d 0a  Public Methods..
a310: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
a320: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
a330: 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20 61  // Attempts to a
a340: 64 76 61 6e 63 65 20 74 68 65 20 6e 61 74 69 76  dvance the nativ
a350: 65 20 69 74 65 72 61 74 6f 72 20 68 61 6e 64 6c  e iterator handl
a360: 65 20 74 6f 20 69 74 73 20 6e 65 78 74 20 69 74  e to its next it
a370: 65 6d 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  em...        ///
a380: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
a390: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
a3a0: 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
a3b0: 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20  Non-zero if the 
a3c0: 6e 61 74 69 76 65 20 69 74 65 72 61 74 6f 72 20  native iterator 
a3d0: 68 61 6e 64 6c 65 20 77 61 73 20 61 64 76 61 6e  handle was advan
a3e0: 63 65 64 20 61 6e 64 20 63 6f 6e 74 61 69 6e 73  ced and contains
a3f0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 6f  ..        /// mo
a400: 72 65 20 64 61 74 61 3b 20 6f 74 68 65 72 77 69  re data; otherwi
a410: 73 65 2c 20 7a 65 72 6f 2e 20 20 49 66 20 74 68  se, zero.  If th
a420: 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 6e 61 74  e underlying nat
a430: 69 76 65 20 41 50 49 20 72 65 74 75 72 6e 73 0d  ive API returns.
a440: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6e 20  .        /// an 
a450: 75 6e 65 78 70 65 63 74 65 64 20 76 61 6c 75 65  unexpected value
a460: 20 74 68 65 6e 20 61 6e 20 65 78 63 65 70 74 69   then an excepti
a470: 6f 6e 20 77 69 6c 6c 20 62 65 20 74 68 72 6f 77  on will be throw
a480: 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
a490: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
a4a0: 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20      public bool 
a4b0: 4e 65 78 74 28 29 0d 0a 20 20 20 20 20 20 20 20  Next()..        
a4c0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 43  {..            C
a4d0: 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
a4e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65  .            Che
a4f0: 63 6b 48 61 6e 64 6c 65 28 29 3b 0d 0a 0d 0a 20  ckHandle();.... 
a500: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
a510: 65 45 72 72 6f 72 43 6f 64 65 20 72 63 20 3d 20  eErrorCode rc = 
a520: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
a530: 6f 64 73 2e 73 71 6c 69 74 65 33 63 68 61 6e 67  ods.sqlite3chang
a540: 65 73 65 74 5f 6e 65 78 74 28 0d 0a 20 20 20 20  eset_next(..    
a550: 20 20 20 20 20 20 20 20 20 20 20 20 69 74 65 72              iter
a560: 61 74 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ator);....      
a570: 20 20 20 20 20 20 73 77 69 74 63 68 20 28 72 63        switch (rc
a580: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
a590: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a5a0: 20 20 63 61 73 65 20 53 51 4c 69 74 65 45 72 72    case SQLiteErr
a5b0: 6f 72 43 6f 64 65 2e 4f 6b 3a 0d 0a 20 20 20 20  orCode.Ok:..    
a5c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a5d0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
a5e0: 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
a5f0: 20 6e 65 77 20 53 51 4c 69 74 65 45 78 63 65 70   new SQLiteExcep
a600: 74 69 6f 6e 28 53 51 4c 69 74 65 45 72 72 6f 72  tion(SQLiteError
a610: 43 6f 64 65 2e 4f 6b 2c 0d 0a 20 20 20 20 20 20  Code.Ok,..      
a620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a630: 20 20 20 20 20 20 22 73 71 6c 69 74 65 33 63 68        "sqlite3ch
a640: 61 6e 67 65 73 65 74 5f 6e 65 78 74 3a 20 75 6e  angeset_next: un
a650: 65 78 70 65 63 74 65 64 20 72 65 73 75 6c 74 20  expected result 
a660: 4f 6b 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  Ok");..         
a670: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
a680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
a690: 73 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  se SQLiteErrorCo
a6a0: 64 65 2e 52 6f 77 3a 0d 0a 20 20 20 20 20 20 20  de.Row:..       
a6b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
a6c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a6d0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
a6e0: 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
a6f0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
a700: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73               cas
a710: 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
a720: 65 2e 44 6f 6e 65 3a 0d 0a 20 20 20 20 20 20 20  e.Done:..       
a730: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
a740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a750: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
a760: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
a770: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
a780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65                de
a790: 66 61 75 6c 74 3a 0d 0a 20 20 20 20 20 20 20 20  fault:..        
a7a0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
a7b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a7c0: 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
a7d0: 20 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e   SQLiteException
a7e0: 28 72 63 2c 20 22 73 71 6c 69 74 65 33 63 68 61  (rc, "sqlite3cha
a7f0: 6e 67 65 73 65 74 5f 6e 65 78 74 22 29 3b 0d 0a  ngeset_next");..
a800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a810: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
a820: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
a830: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
a840: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
a850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a890: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
a8a0: 20 20 23 72 65 67 69 6f 6e 20 53 74 61 74 69 63    #region Static
a8b0: 20 22 46 61 63 74 6f 72 79 22 20 4d 65 74 68 6f   "Factory" Metho
a8c0: 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
a8d0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
a8e0: 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20     /// Attempts 
a8f0: 74 6f 20 63 72 65 61 74 65 20 61 6e 20 69 6e 73  to create an ins
a900: 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c  tance of this cl
a910: 61 73 73 20 74 68 61 74 20 69 73 20 61 73 73 6f  ass that is asso
a920: 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20  ciated..        
a930: 2f 2f 2f 20 77 69 74 68 20 74 68 65 20 73 70 65  /// with the spe
a940: 63 69 66 69 65 64 20 6e 61 74 69 76 65 20 69 74  cified native it
a950: 65 72 61 74 6f 72 20 68 61 6e 64 6c 65 2e 20 20  erator handle.  
a960: 4f 77 6e 65 72 73 68 69 70 20 6f 66 20 74 68 65  Ownership of the
a970: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 61  ..        /// na
a980: 74 69 76 65 20 69 74 65 72 61 74 6f 72 20 68 61  tive iterator ha
a990: 6e 64 6c 65 20 69 73 20 4e 4f 54 20 74 72 61 6e  ndle is NOT tran
a9a0: 73 66 65 72 72 65 64 20 74 6f 20 74 68 65 20 6e  sferred to the n
a9b0: 65 77 20 69 6e 73 74 61 6e 63 65 20 6f 66 0d 0a  ew instance of..
a9c0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 69 73          /// this
a9d0: 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20   class...       
a9e0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
a9f0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
aa00: 72 61 6d 20 6e 61 6d 65 3d 22 69 74 65 72 61 74  ram name="iterat
aa10: 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  or">..        //
aa20: 2f 20 54 68 65 20 6e 61 74 69 76 65 20 69 74 65  / The native ite
aa30: 72 61 74 6f 72 20 68 61 6e 64 6c 65 20 74 6f 20  rator handle to 
aa40: 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  use...        //
aa50: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
aa60: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
aa70: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
aa80: 68 65 20 6e 65 77 20 69 6e 73 74 61 6e 63 65 20  he new instance 
aa90: 6f 66 20 74 68 69 73 20 63 6c 61 73 73 2e 20 20  of this class.  
aaa0: 4e 6f 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20  No return value 
aab0: 69 73 20 72 65 73 65 72 76 65 64 20 74 6f 0d 0a  is reserved to..
aac0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 64 69          /// indi
aad0: 63 61 74 65 20 61 6e 20 65 72 72 6f 72 3b 20 68  cate an error; h
aae0: 6f 77 65 76 65 72 2c 20 69 66 20 74 68 65 20 6e  owever, if the n
aaf0: 61 74 69 76 65 20 69 74 65 72 61 74 6f 72 20 68  ative iterator h
ab00: 61 6e 64 6c 65 20 69 73 20 6e 6f 74 0d 0a 20 20  andle is not..  
ab10: 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c 69 64 2c        /// valid,
ab20: 20 61 6e 79 20 73 75 62 73 65 71 75 65 6e 74 20   any subsequent 
ab30: 61 74 74 65 6d 70 74 20 74 6f 20 6d 61 6b 65 20  attempt to make 
ab40: 75 73 65 20 6f 66 20 69 74 20 76 69 61 20 74 68  use of it via th
ab50: 65 20 72 65 74 75 72 6e 65 64 0d 0a 20 20 20 20  e returned..    
ab60: 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65      /// instance
ab70: 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 20 6d   of this class m
ab80: 61 79 20 74 68 72 6f 77 20 65 78 63 65 70 74 69  ay throw excepti
ab90: 6f 6e 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ons...        //
aba0: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
abb0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
abc0: 74 69 63 20 53 51 4c 69 74 65 43 68 61 6e 67 65  tic SQLiteChange
abd0: 53 65 74 49 74 65 72 61 74 6f 72 20 41 74 74 61  SetIterator Atta
abe0: 63 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ch(..           
abf0: 20 49 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72   IntPtr iterator
ac00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
ac10: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
ac20: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
ac30: 65 77 20 53 51 4c 69 74 65 43 68 61 6e 67 65 53  ew SQLiteChangeS
ac40: 65 74 49 74 65 72 61 74 6f 72 28 69 74 65 72 61  etIterator(itera
ac50: 74 6f 72 2c 20 66 61 6c 73 65 29 3b 0d 0a 20 20  tor, false);..  
ac60: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
ac70: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
ac80: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
ac90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
acb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
acc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
acd0: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
ace0: 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20 4d 65  n IDisposable Me
acf0: 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 2f  mbers..        /
ad00: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
ad10: 20 20 20 20 20 20 2f 2f 2f 20 44 69 73 70 6f 73        /// Dispos
ad20: 65 73 20 6f 66 20 74 68 69 73 20 6f 62 6a 65 63  es of this objec
ad30: 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  t instance...   
ad40: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
ad50: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
ad60: 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f 73 65  lic void Dispose
ad70: 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
ad80: 20 20 20 20 20 20 20 20 20 20 20 44 69 73 70 6f             Dispo
ad90: 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20 20 20  se(true);..     
ada0: 20 20 20 20 20 20 20 47 43 2e 53 75 70 70 72 65         GC.Suppre
adb0: 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29  ssFinalize(this)
adc0: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
add0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
ade0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
adf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae30: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
ae40: 72 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62  region IDisposab
ae50: 6c 65 20 22 50 61 74 74 65 72 6e 22 20 4d 65 6d  le "Pattern" Mem
ae60: 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  bers..        //
ae70: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
ae80: 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
ae90: 6f 20 69 66 20 74 68 69 73 20 6f 62 6a 65 63 74  o if this object
aea0: 20 69 6e 73 74 61 6e 63 65 20 68 61 73 20 62 65   instance has be
aeb0: 65 6e 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20  en disposed...  
aec0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
aed0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  ary>..        pr
aee0: 69 76 61 74 65 20 62 6f 6f 6c 20 64 69 73 70 6f  ivate bool dispo
aef0: 73 65 64 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  sed;....        
af00: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
af10: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 72 6f 77         /// Throw
af20: 73 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 20 69  s an exception i
af30: 66 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e  f this object in
af40: 73 74 61 6e 63 65 20 68 61 73 20 62 65 65 6e 20  stance has been 
af50: 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20 20  disposed...     
af60: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
af70: 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
af80: 74 65 20 76 6f 69 64 20 43 68 65 63 6b 44 69 73  te void CheckDis
af90: 70 6f 73 65 64 28 29 20 2f 2a 20 74 68 72 6f 77  posed() /* throw
afa0: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a   */..        {..
afb0: 23 69 66 20 54 48 52 4f 57 5f 4f 4e 5f 44 49 53  #if THROW_ON_DIS
afc0: 50 4f 53 45 44 0d 0a 20 20 20 20 20 20 20 20 20  POSED..         
afd0: 20 20 20 69 66 20 28 64 69 73 70 6f 73 65 64 29     if (disposed)
afe0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
aff0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b000: 20 74 68 72 6f 77 20 6e 65 77 20 4f 62 6a 65 63   throw new Objec
b010: 74 44 69 73 70 6f 73 65 64 45 78 63 65 70 74 69  tDisposedExcepti
b020: 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
b030: 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66 28           typeof(
b040: 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65 74 49  SQLiteChangeSetI
b050: 74 65 72 61 74 6f 72 29 2e 4e 61 6d 65 29 3b 0d  terator).Name);.
b060: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
b070: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
b080: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
b090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b0a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b0b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b0c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b0d0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
b0e0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
b0f0: 20 20 20 20 20 20 20 2f 2f 2f 20 44 69 73 70 6f         /// Dispo
b100: 73 65 73 20 6f 72 20 66 69 6e 61 6c 69 7a 65 73  ses or finalizes
b110: 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73   this object ins
b120: 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20  tance...        
b130: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
b140: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
b150: 61 6d 20 6e 61 6d 65 3d 22 64 69 73 70 6f 73 69  am name="disposi
b160: 6e 67 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ng">..        //
b170: 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68  / Non-zero if th
b180: 69 73 20 6f 62 6a 65 63 74 20 69 73 20 62 65 69  is object is bei
b190: 6e 67 20 64 69 73 70 6f 73 65 64 3b 20 6f 74 68  ng disposed; oth
b1a0: 65 72 77 69 73 65 2c 20 74 68 69 73 20 6f 62 6a  erwise, this obj
b1b0: 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ect..        ///
b1c0: 20 69 73 20 62 65 69 6e 67 20 66 69 6e 61 6c 69   is being finali
b1d0: 7a 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  zed...        //
b1e0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
b1f0: 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69      protected vi
b200: 72 74 75 61 6c 20 76 6f 69 64 20 44 69 73 70 6f  rtual void Dispo
b210: 73 65 28 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e  se(bool disposin
b220: 67 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  g)..        {.. 
b230: 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
b240: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
b250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
b260: 66 20 28 21 64 69 73 70 6f 73 65 64 29 0d 0a 20  f (!disposed).. 
b270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
b280: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b290: 20 20 20 20 20 20 2f 2f 69 66 20 28 64 69 73 70        //if (disp
b2a0: 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20  osing)..        
b2b0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 7b 0d              //{.
b2c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b2d0: 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f       //    /////
b2e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b2f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
b300: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b310: 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 20 64 69       //    // di
b320: 73 70 6f 73 65 20 6d 61 6e 61 67 65 64 20 72 65  spose managed re
b330: 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d  sources here....
b340: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b350: 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f       //    /////
b360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
b380: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b390: 20 20 20 20 20 2f 2f 7d 0d 0a 0d 0a 20 20 20 20       //}....    
b3a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b3b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b3c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b3d0: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20  //////..        
b3e0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 72              // r
b3f0: 65 6c 65 61 73 65 20 75 6e 6d 61 6e 61 67 65 64  elease unmanaged
b400: 20 72 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e   resources here.
b410: 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
b420: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
b430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
b450: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b460: 20 20 20 20 20 20 69 66 20 28 69 74 65 72 61 74        if (iterat
b470: 6f 72 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  or != IntPtr.Zer
b480: 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
b490: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
b4a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b4b0: 20 20 20 69 66 20 28 6f 77 6e 48 61 6e 64 6c 65     if (ownHandle
b4c0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
b4d0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
b4e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b4f0: 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
b500: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
b510: 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 66  lite3changeset_f
b520: 69 6e 61 6c 69 7a 65 28 0d 0a 20 20 20 20 20 20  inalize(..      
b530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b540: 20 20 20 20 20 20 20 20 20 20 69 74 65 72 61 74            iterat
b550: 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  or);..          
b560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
b570: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
b580: 20 20 20 20 20 20 20 20 20 20 20 69 74 65 72 61             itera
b590: 74 6f 72 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72  tor = IntPtr.Zer
b5a0: 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o;..            
b5b0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
b5c0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
b5d0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
b5e0: 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79           finally
b5f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
b600: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b610: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
b620: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 45 76       // NOTE: Ev
b630: 65 72 79 74 68 69 6e 67 20 73 68 6f 75 6c 64 20  erything should 
b640: 62 65 20 66 75 6c 6c 79 20 64 69 73 70 6f 73 65  be fully dispose
b650: 64 20 61 74 20 74 68 69 73 20 70 6f 69 6e 74 2e  d at this point.
b660: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b670: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
b680: 20 20 20 20 20 20 64 69 73 70 6f 73 65 64 20 3d        disposed =
b690: 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
b6a0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
b6b0: 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
b6c0: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
b6d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b6e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b6f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b710: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
b720: 20 20 20 23 72 65 67 69 6f 6e 20 44 65 73 74 72     #region Destr
b730: 75 63 74 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f  uctor..        /
b740: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
b750: 20 20 20 20 20 20 2f 2f 2f 20 46 69 6e 61 6c 69        /// Finali
b760: 7a 65 73 20 74 68 69 73 20 6f 62 6a 65 63 74 20  zes this object 
b770: 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
b780: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
b790: 3e 0d 0a 20 20 20 20 20 20 20 20 7e 53 51 4c 69  >..        ~SQLi
b7a0: 74 65 43 68 61 6e 67 65 53 65 74 49 74 65 72 61  teChangeSetItera
b7b0: 74 6f 72 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  tor()..        {
b7c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 69  ..            Di
b7d0: 73 70 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20  spose(false);.. 
b7e0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
b7f0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
b800: 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
b810: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
b820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b860: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
b870: 65 67 69 6f 6e 20 53 51 4c 69 74 65 4d 65 6d 6f  egion SQLiteMemo
b880: 72 79 43 68 61 6e 67 65 53 65 74 49 74 65 72 61  ryChangeSetItera
b890: 74 6f 72 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f  tor Class..    /
b8a0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
b8b0: 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73    /// This class
b8c0: 20 6d 61 6e 61 67 65 73 20 74 68 65 20 6e 61 74   manages the nat
b8d0: 69 76 65 20 63 68 61 6e 67 65 20 73 65 74 20 69  ive change set i
b8e0: 74 65 72 61 74 6f 72 20 66 6f 72 20 61 20 73 65  terator for a se
b8f0: 74 20 6f 66 20 63 68 61 6e 67 65 73 0d 0a 20 20  t of changes..  
b900: 20 20 2f 2f 2f 20 63 6f 6e 74 61 69 6e 65 64 20    /// contained 
b910: 65 6e 74 69 72 65 6c 79 20 69 6e 20 6d 65 6d 6f  entirely in memo
b920: 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ry...    /// </s
b930: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74  ummary>..    int
b940: 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61  ernal sealed cla
b950: 73 73 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 43  ss SQLiteMemoryC
b960: 68 61 6e 67 65 53 65 74 49 74 65 72 61 74 6f 72  hangeSetIterator
b970: 20 3a 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69   :..        SQLi
b980: 74 65 43 68 61 6e 67 65 53 65 74 49 74 65 72 61  teChangeSetItera
b990: 74 6f 72 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  tor..    {..    
b9a0: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76      #region Priv
b9b0: 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20  ate Data..      
b9c0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
b9d0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
b9e0: 20 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79 20 62   native memory b
b9f0: 75 66 66 65 72 20 61 6c 6c 6f 63 61 74 65 64 20  uffer allocated 
ba00: 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65 20 73  to contain the s
ba10: 65 74 20 6f 66 20 63 68 61 6e 67 65 73 0d 0a 20  et of changes.. 
ba20: 20 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63         /// assoc
ba30: 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20  iated with this 
ba40: 69 6e 73 74 61 6e 63 65 2e 20 20 54 68 69 73 20  instance.  This 
ba50: 77 69 6c 6c 20 61 6c 77 61 79 73 20 62 65 20 66  will always be f
ba60: 72 65 65 64 20 77 68 65 6e 20 74 68 69 73 0d 0a  reed when this..
ba70: 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74          /// inst
ba80: 61 6e 63 65 20 69 73 20 64 69 73 70 6f 73 65 64  ance is disposed
ba90: 20 6f 72 20 66 69 6e 61 6c 69 7a 65 64 2e 0d 0a   or finalized...
baa0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
bab0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
bac0: 70 72 69 76 61 74 65 20 49 6e 74 50 74 72 20 70  private IntPtr p
bad0: 44 61 74 61 3b 0d 0a 20 20 20 20 20 20 20 20 23  Data;..        #
bae0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
baf0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
bb00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bb10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bb20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bb30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
bb40: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
bb50: 50 72 69 76 61 74 65 20 43 6f 6e 73 74 72 75 63  Private Construc
bb60: 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tors..        //
bb70: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
bb80: 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75       /// Constru
bb90: 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20  cts an instance 
bba0: 6f 66 20 74 68 69 73 20 63 6c 61 73 73 20 75 73  of this class us
bbb0: 69 6e 67 20 74 68 65 20 73 70 65 63 69 66 69 65  ing the specifie
bbc0: 64 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20  d native..      
bbd0: 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 62 75 66    /// memory buf
bbe0: 66 65 72 20 61 6e 64 20 6e 61 74 69 76 65 20 69  fer and native i
bbf0: 74 65 72 61 74 6f 72 20 68 61 6e 64 6c 65 2e 0d  terator handle..
bc00: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
bc10: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
bc20: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
bc30: 3d 22 70 44 61 74 61 22 3e 0d 0a 20 20 20 20 20  ="pData">..     
bc40: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
bc50: 65 20 6d 65 6d 6f 72 79 20 62 75 66 66 65 72 20  e memory buffer 
bc60: 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20 20 20  to use...       
bc70: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
bc80: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
bc90: 6d 20 6e 61 6d 65 3d 22 69 74 65 72 61 74 6f 72  m name="iterator
bca0: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
bcb0: 54 68 65 20 6e 61 74 69 76 65 20 69 74 65 72 61  The native itera
bcc0: 74 6f 72 20 68 61 6e 64 6c 65 20 74 6f 20 75 73  tor handle to us
bcd0: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
bce0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
bcf0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
bd00: 65 3d 22 6f 77 6e 48 61 6e 64 6c 65 22 3e 0d 0a  e="ownHandle">..
bd10: 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d          /// Non-
bd20: 7a 65 72 6f 20 69 66 20 74 68 69 73 20 69 6e 73  zero if this ins
bd30: 74 61 6e 63 65 20 69 73 20 74 6f 20 74 61 6b 65  tance is to take
bd40: 20 6f 77 6e 65 72 73 68 69 70 20 6f 66 20 74 68   ownership of th
bd50: 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20  e native..      
bd60: 20 20 2f 2f 2f 20 69 74 65 72 61 74 6f 72 20 68    /// iterator h
bd70: 61 6e 64 6c 65 20 73 70 65 63 69 66 69 65 64 20  andle specified 
bd80: 62 79 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d  by <paramref nam
bd90: 65 3d 22 69 74 65 72 61 74 6f 72 22 20 2f 3e 2e  e="iterator" />.
bda0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
bdb0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
bdc0: 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 4d 65  private SQLiteMe
bdd0: 6d 6f 72 79 43 68 61 6e 67 65 53 65 74 49 74 65  moryChangeSetIte
bde0: 72 61 74 6f 72 28 0d 0a 20 20 20 20 20 20 20 20  rator(..        
bdf0: 20 20 20 20 49 6e 74 50 74 72 20 70 44 61 74 61      IntPtr pData
be00: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  ,..            I
be10: 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72 2c 0d  ntPtr iterator,.
be20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f  .            boo
be30: 6c 20 6f 77 6e 48 61 6e 64 6c 65 0d 0a 20 20 20  l ownHandle..   
be40: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
be50: 20 20 20 20 20 20 20 20 3a 20 62 61 73 65 28 69          : base(i
be60: 74 65 72 61 74 6f 72 2c 20 6f 77 6e 48 61 6e 64  terator, ownHand
be70: 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  le)..        {..
be80: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
be90: 2e 70 44 61 74 61 20 3d 20 70 44 61 74 61 3b 0d  .pData = pData;.
bea0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
beb0: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
bec0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
bed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bf00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bf10: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
bf20: 67 69 6f 6e 20 53 74 61 74 69 63 20 22 46 61 63  gion Static "Fac
bf30: 74 6f 72 79 22 20 4d 65 74 68 6f 64 73 0d 0a 20  tory" Methods.. 
bf40: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
bf50: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
bf60: 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20 63 72  / Attempts to cr
bf70: 65 61 74 65 20 61 6e 20 69 6e 73 74 61 6e 63 65  eate an instance
bf80: 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 20 75   of this class u
bf90: 73 69 6e 67 20 74 68 65 20 73 70 65 63 69 66 69  sing the specifi
bfa0: 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
bfb0: 72 61 77 20 62 79 74 65 20 64 61 74 61 2e 0d 0a  raw byte data...
bfc0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
bfd0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
bfe0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
bff0: 22 72 61 77 44 61 74 61 22 3e 0d 0a 20 20 20 20  "rawData">..    
c000: 20 20 20 20 2f 2f 2f 20 54 68 65 20 72 61 77 20      /// The raw 
c010: 62 79 74 65 20 64 61 74 61 20 63 6f 6e 74 61 69  byte data contai
c020: 6e 69 6e 67 20 74 68 65 20 73 65 74 20 6f 66 20  ning the set of 
c030: 63 68 61 6e 67 65 73 20 66 6f 72 20 74 68 69 73  changes for this
c040: 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20   native..       
c050: 20 2f 2f 2f 20 69 74 65 72 61 74 6f 72 2e 0d 0a   /// iterator...
c060: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
c070: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
c080: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
c090: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77       /// The new
c0a0: 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69   instance of thi
c0b0: 73 20 63 6c 61 73 73 20 2d 4f 52 2d 20 6e 75 6c  s class -OR- nul
c0c0: 6c 20 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62  l if it cannot b
c0d0: 65 20 63 72 65 61 74 65 64 2e 0d 0a 20 20 20 20  e created...    
c0e0: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
c0f0: 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  s>..        publ
c100: 69 63 20 73 74 61 74 69 63 20 53 51 4c 69 74 65  ic static SQLite
c110: 4d 65 6d 6f 72 79 43 68 61 6e 67 65 53 65 74 49  MemoryChangeSetI
c120: 74 65 72 61 74 6f 72 20 43 72 65 61 74 65 28 0d  terator Create(.
c130: 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 79 74  .            byt
c140: 65 5b 5d 20 72 61 77 44 61 74 61 0d 0a 20 20 20  e[] rawData..   
c150: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
c160: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
c170: 20 20 20 53 51 4c 69 74 65 53 65 73 73 69 6f 6e     SQLiteSession
c180: 48 65 6c 70 65 72 73 2e 43 68 65 63 6b 52 61 77  Helpers.CheckRaw
c190: 44 61 74 61 28 72 61 77 44 61 74 61 29 3b 0d 0a  Data(rawData);..
c1a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
c1b0: 4c 69 74 65 4d 65 6d 6f 72 79 43 68 61 6e 67 65  LiteMemoryChange
c1c0: 53 65 74 49 74 65 72 61 74 6f 72 20 72 65 73 75  SetIterator resu
c1d0: 6c 74 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  lt = null;..    
c1e0: 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
c1f0: 44 61 74 61 20 3d 20 49 6e 74 50 74 72 2e 5a 65  Data = IntPtr.Ze
c200: 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro;..           
c210: 20 49 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72   IntPtr iterator
c220: 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d   = IntPtr.Zero;.
c230: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ...            t
c240: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
c250: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
c260: 20 20 20 69 6e 74 20 6e 44 61 74 61 20 3d 20 30     int nData = 0
c270: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
c280: 20 20 20 20 20 70 44 61 74 61 20 3d 20 53 51 4c       pData = SQL
c290: 69 74 65 42 79 74 65 73 2e 54 6f 49 6e 74 50 74  iteBytes.ToIntPt
c2a0: 72 28 72 61 77 44 61 74 61 2c 20 72 65 66 20 6e  r(rawData, ref n
c2b0: 44 61 74 61 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Data);....      
c2c0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 44            if (pD
c2d0: 61 74 61 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  ata == IntPtr.Ze
c2e0: 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
c2f0: 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e           throw n
c300: 65 77 20 53 51 4c 69 74 65 45 78 63 65 70 74 69  ew SQLiteExcepti
c310: 6f 6e 28 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  on(SQLiteErrorCo
c320: 64 65 2e 4e 6f 4d 65 6d 2c 20 6e 75 6c 6c 29 3b  de.NoMem, null);
c330: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
c340: 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43      SQLiteErrorC
c350: 6f 64 65 20 72 63 20 3d 20 55 6e 73 61 66 65 4e  ode rc = UnsafeN
c360: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
c370: 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 73 74  ite3changeset_st
c380: 61 72 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  art(..          
c390: 20 20 20 20 20 20 20 20 20 20 72 65 66 20 69 74            ref it
c3a0: 65 72 61 74 6f 72 2c 20 6e 44 61 74 61 2c 20 70  erator, nData, p
c3b0: 44 61 74 61 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Data);....      
c3c0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72 63            if (rc
c3d0: 20 21 3d 20 53 51 4c 69 74 65 45 72 72 6f 72 43   != SQLiteErrorC
c3e0: 6f 64 65 2e 4f 6b 29 0d 0a 20 20 20 20 20 20 20  ode.Ok)..       
c3f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72               thr
c400: 6f 77 20 6e 65 77 20 53 51 4c 69 74 65 45 78 63  ow new SQLiteExc
c410: 65 70 74 69 6f 6e 28 72 63 2c 20 22 73 71 6c 69  eption(rc, "sqli
c420: 74 65 33 63 68 61 6e 67 65 73 65 74 5f 73 74 61  te3changeset_sta
c430: 72 74 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  rt");....       
c440: 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20           result 
c450: 3d 20 6e 65 77 20 53 51 4c 69 74 65 4d 65 6d 6f  = new SQLiteMemo
c460: 72 79 43 68 61 6e 67 65 53 65 74 49 74 65 72 61  ryChangeSetItera
c470: 74 6f 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  tor(..          
c480: 20 20 20 20 20 20 20 20 20 20 70 44 61 74 61 2c            pData,
c490: 20 69 74 65 72 61 74 6f 72 2c 20 74 72 75 65 29   iterator, true)
c4a0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
c4b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69  ..            fi
c4c0: 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20  nally..         
c4d0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
c4e0: 20 20 20 20 20 20 69 66 20 28 72 65 73 75 6c 74        if (result
c4f0: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
c500: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
c510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c520: 20 20 69 66 20 28 69 74 65 72 61 74 6f 72 20 21    if (iterator !
c530: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
c540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c550: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
c560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55                 U
c570: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
c580: 64 73 2e 73 71 6c 69 74 65 33 63 68 61 6e 67 65  ds.sqlite3change
c590: 73 65 74 5f 66 69 6e 61 6c 69 7a 65 28 0d 0a 20  set_finalize(.. 
c5a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c5b0: 20 20 20 20 20 20 20 20 20 20 20 69 74 65 72 61             itera
c5c0: 74 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  tor);....       
c5d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c5e0: 20 69 74 65 72 61 74 6f 72 20 3d 20 49 6e 74 50   iterator = IntP
c5f0: 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20  tr.Zero;..      
c600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
c610: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
c620: 20 20 20 20 20 20 20 69 66 20 28 70 44 61 74 61         if (pData
c630: 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
c640: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c650: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
c660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c670: 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46 72   SQLiteMemory.Fr
c680: 65 65 28 70 44 61 74 61 29 3b 0d 0a 20 20 20 20  ee(pData);..    
c690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c6a0: 20 20 20 20 70 44 61 74 61 20 3d 20 49 6e 74 50      pData = IntP
c6b0: 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20  tr.Zero;..      
c6c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
c6d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c6e0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
c6f0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
c700: 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d   return result;.
c710: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
c720: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
c730: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
c740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c780: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
c790: 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65  gion IDisposable
c7a0: 20 22 50 61 74 74 65 72 6e 22 20 4d 65 6d 62 65   "Pattern" Membe
c7b0: 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  rs..        /// 
c7c0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
c7d0: 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
c7e0: 69 66 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69  if this object i
c7f0: 6e 73 74 61 6e 63 65 20 68 61 73 20 62 65 65 6e  nstance has been
c800: 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20   disposed...    
c810: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
c820: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
c830: 61 74 65 20 62 6f 6f 6c 20 64 69 73 70 6f 73 65  ate bool dispose
c840: 64 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  d;....        //
c850: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
c860: 20 20 20 20 20 2f 2f 2f 20 54 68 72 6f 77 73 20       /// Throws 
c870: 61 6e 20 65 78 63 65 70 74 69 6f 6e 20 69 66 20  an exception if 
c880: 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74  this object inst
c890: 61 6e 63 65 20 68 61 73 20 62 65 65 6e 20 64 69  ance has been di
c8a0: 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 20  sposed...       
c8b0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
c8c0: 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
c8d0: 20 76 6f 69 64 20 43 68 65 63 6b 44 69 73 70 6f   void CheckDispo
c8e0: 73 65 64 28 29 20 2f 2a 20 74 68 72 6f 77 20 2a  sed() /* throw *
c8f0: 2f 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  /..        {..#i
c900: 66 20 54 48 52 4f 57 5f 4f 4e 5f 44 49 53 50 4f  f THROW_ON_DISPO
c910: 53 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  SED..           
c920: 20 69 66 20 28 64 69 73 70 6f 73 65 64 29 0d 0a   if (disposed)..
c930: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
c940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
c950: 68 72 6f 77 20 6e 65 77 20 4f 62 6a 65 63 74 44  hrow new ObjectD
c960: 69 73 70 6f 73 65 64 45 78 63 65 70 74 69 6f 6e  isposedException
c970: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
c980: 20 20 20 20 20 20 20 74 79 70 65 6f 66 28 53 51         typeof(SQ
c990: 4c 69 74 65 4d 65 6d 6f 72 79 43 68 61 6e 67 65  LiteMemoryChange
c9a0: 53 65 74 49 74 65 72 61 74 6f 72 29 2e 4e 61 6d  SetIterator).Nam
c9b0: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
c9c0: 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
c9d0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
c9e0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
c9f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ca00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ca10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ca20: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
ca30: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
ca40: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 44  >..        /// D
ca50: 69 73 70 6f 73 65 73 20 6f 72 20 66 69 6e 61 6c  isposes or final
ca60: 69 7a 65 73 20 74 68 69 73 20 6f 62 6a 65 63 74  izes this object
ca70: 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20   instance...    
ca80: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
ca90: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
caa0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 69 73  <param name="dis
cab0: 70 6f 73 69 6e 67 22 3e 0d 0a 20 20 20 20 20 20  posing">..      
cac0: 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
cad0: 66 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69 73  f this object is
cae0: 20 62 65 69 6e 67 20 64 69 73 70 6f 73 65 64 3b   being disposed;
caf0: 20 6f 74 68 65 72 77 69 73 65 2c 20 74 68 69 73   otherwise, this
cb00: 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20   object..       
cb10: 20 2f 2f 2f 20 69 73 20 62 65 69 6e 67 20 66 69   /// is being fi
cb20: 6e 61 6c 69 7a 65 64 2e 0d 0a 20 20 20 20 20 20  nalized...      
cb30: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
cb40: 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65          protecte
cb50: 64 20 6f 76 65 72 72 69 64 65 20 76 6f 69 64 20  d override void 
cb60: 44 69 73 70 6f 73 65 28 62 6f 6f 6c 20 64 69 73  Dispose(bool dis
cb70: 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20  posing)..       
cb80: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
cb90: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
cba0: 2f 2f 20 4e 4f 54 45 3a 20 4d 75 73 74 20 64 69  // NOTE: Must di
cbb0: 73 70 6f 73 65 20 6f 66 20 74 68 65 20 62 61 73  spose of the bas
cbc0: 65 20 63 6c 61 73 73 20 66 69 72 73 74 20 28 6c  e class first (l
cbd0: 65 61 6b 79 20 61 62 73 74 72 61 63 74 69 6f 6e  eaky abstraction
cbe0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  )..            /
cbf0: 2f 20 20 20 20 20 20 20 62 65 63 61 75 73 65 20  /       because 
cc00: 69 74 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20  it contains the 
cc10: 69 74 65 72 61 74 6f 72 20 68 61 6e 64 6c 65 2c  iterator handle,
cc20: 20 77 68 69 63 68 20 6d 75 73 74 20 62 65 0d 0a   which must be..
cc30: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
cc40: 20 20 20 20 20 63 6c 6f 73 65 64 20 2a 70 72 69       closed *pri
cc50: 6f 72 2a 20 74 6f 20 66 72 65 65 69 6e 67 20 74  or* to freeing t
cc60: 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 6d 65  he underlying me
cc70: 6d 6f 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 20  mory...         
cc80: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
cc90: 20 20 20 62 61 73 65 2e 44 69 73 70 6f 73 65 28     base.Dispose(
cca0: 64 69 73 70 6f 73 69 6e 67 29 3b 0d 0a 0d 0a 20  disposing);.... 
ccb0: 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
ccc0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
ccd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
cce0: 66 20 28 21 64 69 73 70 6f 73 65 64 29 0d 0a 20  f (!disposed).. 
ccf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
cd00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
cd10: 20 20 20 20 20 20 2f 2f 69 66 20 28 64 69 73 70        //if (disp
cd20: 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20  osing)..        
cd30: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 7b 0d              //{.
cd40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
cd50: 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f       //    /////
cd60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cd70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
cd80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
cd90: 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 20 64 69       //    // di
cda0: 73 70 6f 73 65 20 6d 61 6e 61 67 65 64 20 72 65  spose managed re
cdb0: 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d  sources here....
cdc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
cdd0: 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f       //    /////
cde0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cdf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
ce00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ce10: 20 20 20 20 20 2f 2f 7d 0d 0a 0d 0a 20 20 20 20       //}....    
ce20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ce30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ce40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ce50: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20  //////..        
ce60: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 72              // r
ce70: 65 6c 65 61 73 65 20 75 6e 6d 61 6e 61 67 65 64  elease unmanaged
ce80: 20 72 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e   resources here.
ce90: 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
cea0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
ceb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
ced0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
cee0: 20 20 20 20 20 20 69 66 20 28 70 44 61 74 61 20        if (pData 
cef0: 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  != IntPtr.Zero).
cf00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
cf10: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
cf20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cf30: 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65  SQLiteMemory.Fre
cf40: 65 28 70 44 61 74 61 29 3b 0d 0a 20 20 20 20 20  e(pData);..     
cf50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cf60: 20 20 20 70 44 61 74 61 20 3d 20 49 6e 74 50 74     pData = IntPt
cf70: 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20  r.Zero;..       
cf80: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
cf90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cfa0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
cfb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69  ..            fi
cfc0: 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20  nally..         
cfd0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
cfe0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
cff0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
d000: 45 3a 20 45 76 65 72 79 74 68 69 6e 67 20 73 68  E: Everything sh
d010: 6f 75 6c 64 20 62 65 20 66 75 6c 6c 79 20 64 69  ould be fully di
d020: 73 70 6f 73 65 64 20 61 74 20 74 68 69 73 20 70  sposed at this p
d030: 6f 69 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 20  oint...         
d040: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
d050: 20 20 20 20 20 20 20 20 20 20 20 64 69 73 70 6f             dispo
d060: 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20  sed = true;..   
d070: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
d080: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
d090: 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d  endregion..    }
d0a0: 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
d0b0: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
d0c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d0d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d0e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d0f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d100: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
d110: 6f 6e 20 53 51 4c 69 74 65 53 74 72 65 61 6d 43  on SQLiteStreamC
d120: 68 61 6e 67 65 53 65 74 49 74 65 72 61 74 6f 72  hangeSetIterator
d130: 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20   Class..    /// 
d140: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
d150: 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 6d 61  // This class ma
d160: 6e 61 67 65 73 20 74 68 65 20 6e 61 74 69 76 65  nages the native
d170: 20 63 68 61 6e 67 65 20 73 65 74 20 69 74 65 72   change set iter
d180: 61 74 6f 72 20 66 6f 72 20 61 20 73 65 74 20 6f  ator for a set o
d190: 66 20 63 68 61 6e 67 65 73 0d 0a 20 20 20 20 2f  f changes..    /
d1a0: 2f 2f 20 62 61 63 6b 65 64 20 62 79 20 61 20 3c  // backed by a <
d1b0: 73 65 65 20 63 72 65 66 3d 22 53 74 72 65 61 6d  see cref="Stream
d1c0: 22 20 2f 3e 20 69 6e 73 74 61 6e 63 65 2e 0d 0a  " /> instance...
d1d0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
d1e0: 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  y>..    internal
d1f0: 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51   sealed class SQ
d200: 4c 69 74 65 53 74 72 65 61 6d 43 68 61 6e 67 65  LiteStreamChange
d210: 53 65 74 49 74 65 72 61 74 6f 72 20 3a 0d 0a 20  SetIterator :.. 
d220: 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 68 61         SQLiteCha
d230: 6e 67 65 53 65 74 49 74 65 72 61 74 6f 72 0d 0a  ngeSetIterator..
d240: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23      {..        #
d250: 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44  region Private D
d260: 61 74 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ata..        ///
d270: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
d280: 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
d290: 20 63 72 65 66 3d 22 53 51 4c 69 74 65 53 74 72   cref="SQLiteStr
d2a0: 65 61 6d 41 64 61 70 74 65 72 22 20 2f 3e 20 69  eamAdapter" /> i
d2b0: 6e 73 74 61 6e 63 65 20 74 68 61 74 20 69 73 20  nstance that is 
d2c0: 6d 61 6e 61 67 69 6e 67 0d 0a 20 20 20 20 20 20  managing..      
d2d0: 20 20 2f 2f 2f 20 74 68 65 20 75 6e 64 65 72 6c    /// the underl
d2e0: 79 69 6e 67 20 3c 73 65 65 20 63 72 65 66 3d 22  ying <see cref="
d2f0: 53 74 72 65 61 6d 22 20 2f 3e 20 75 73 65 64 20  Stream" /> used 
d300: 61 73 20 74 68 65 20 62 61 63 6b 69 6e 67 20 73  as the backing s
d310: 74 6f 72 65 20 66 6f 72 0d 0a 20 20 20 20 20 20  tore for..      
d320: 20 20 2f 2f 2f 20 74 68 65 20 73 65 74 20 6f 66    /// the set of
d330: 20 63 68 61 6e 67 65 73 20 61 73 73 6f 63 69 61   changes associa
d340: 74 65 64 20 77 69 74 68 20 74 68 69 73 20 6e 61  ted with this na
d350: 74 69 76 65 20 63 68 61 6e 67 65 20 73 65 74 20  tive change set 
d360: 69 74 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20  iterator...     
d370: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
d380: 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
d390: 74 65 20 53 51 4c 69 74 65 53 74 72 65 61 6d 41  te SQLiteStreamA
d3a0: 64 61 70 74 65 72 20 73 74 72 65 61 6d 41 64 61  dapter streamAda
d3b0: 70 74 65 72 3b 0d 0a 20 20 20 20 20 20 20 20 23  pter;..        #
d3c0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
d3d0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
d3e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d3f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
d420: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
d430: 50 72 69 76 61 74 65 20 43 6f 6e 73 74 72 75 63  Private Construc
d440: 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tors..        //
d450: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
d460: 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75       /// Constru
d470: 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20  cts an instance 
d480: 6f 66 20 74 68 69 73 20 63 6c 61 73 73 20 75 73  of this class us
d490: 69 6e 67 20 74 68 65 20 73 70 65 63 69 66 69 65  ing the specifie
d4a0: 64 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20  d native..      
d4b0: 20 20 2f 2f 2f 20 69 74 65 72 61 74 6f 72 20 68    /// iterator h
d4c0: 61 6e 64 6c 65 20 61 6e 64 20 3c 73 65 65 20 63  andle and <see c
d4d0: 72 65 66 3d 22 53 51 4c 69 74 65 53 74 72 65 61  ref="SQLiteStrea
d4e0: 6d 41 64 61 70 74 65 72 22 20 2f 3e 2e 0d 0a 20  mAdapter" />... 
d4f0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
d500: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
d510: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
d520: 73 74 72 65 61 6d 41 64 61 70 74 65 72 22 3e 0d  streamAdapter">.
d530: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
d540: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
d550: 74 65 53 74 72 65 61 6d 41 64 61 70 74 65 72 22  teStreamAdapter"
d560: 20 2f 3e 20 69 6e 73 74 61 6e 63 65 20 74 6f 20   /> instance to 
d570: 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  use...        //
d580: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
d590: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
d5a0: 61 6d 65 3d 22 69 74 65 72 61 74 6f 72 22 3e 0d  ame="iterator">.
d5b0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
d5c0: 20 6e 61 74 69 76 65 20 69 74 65 72 61 74 6f 72   native iterator
d5d0: 20 68 61 6e 64 6c 65 20 74 6f 20 75 73 65 2e 0d   handle to use..
d5e0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
d5f0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
d600: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
d610: 6f 77 6e 48 61 6e 64 6c 65 22 3e 0d 0a 20 20 20  ownHandle">..   
d620: 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
d630: 6f 20 69 66 20 74 68 69 73 20 69 6e 73 74 61 6e  o if this instan
d640: 63 65 20 69 73 20 74 6f 20 74 61 6b 65 20 6f 77  ce is to take ow
d650: 6e 65 72 73 68 69 70 20 6f 66 20 74 68 65 20 6e  nership of the n
d660: 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f  ative..        /
d670: 2f 2f 20 69 74 65 72 61 74 6f 72 20 68 61 6e 64  // iterator hand
d680: 6c 65 20 73 70 65 63 69 66 69 65 64 20 62 79 20  le specified by 
d690: 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22  <paramref name="
d6a0: 69 74 65 72 61 74 6f 72 22 20 2f 3e 2e 0d 0a 20  iterator" />... 
d6b0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
d6c0: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  am>..        pri
d6d0: 76 61 74 65 20 53 51 4c 69 74 65 53 74 72 65 61  vate SQLiteStrea
d6e0: 6d 43 68 61 6e 67 65 53 65 74 49 74 65 72 61 74  mChangeSetIterat
d6f0: 6f 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  or(..           
d700: 20 53 51 4c 69 74 65 53 74 72 65 61 6d 41 64 61   SQLiteStreamAda
d710: 70 74 65 72 20 73 74 72 65 61 6d 41 64 61 70 74  pter streamAdapt
d720: 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  er,..           
d730: 20 49 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72   IntPtr iterator
d740: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62  ,..            b
d750: 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 0d 0a 20  ool ownHandle.. 
d760: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
d770: 20 20 20 20 20 20 20 20 20 20 3a 20 62 61 73 65            : base
d780: 28 69 74 65 72 61 74 6f 72 2c 20 6f 77 6e 48 61  (iterator, ownHa
d790: 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 7b  ndle)..        {
d7a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
d7b0: 69 73 2e 73 74 72 65 61 6d 41 64 61 70 74 65 72  is.streamAdapter
d7c0: 20 3d 20 73 74 72 65 61 6d 41 64 61 70 74 65 72   = streamAdapter
d7d0: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
d7e0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
d7f0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
d800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d840: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
d850: 72 65 67 69 6f 6e 20 53 74 61 74 69 63 20 22 46  region Static "F
d860: 61 63 74 6f 72 79 22 20 4d 65 74 68 6f 64 73 0d  actory" Methods.
d870: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
d880: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
d890: 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20  /// Attempts to 
d8a0: 63 72 65 61 74 65 20 61 6e 20 69 6e 73 74 61 6e  create an instan
d8b0: 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73  ce of this class
d8c0: 20 75 73 69 6e 67 20 74 68 65 20 73 70 65 63 69   using the speci
d8d0: 66 69 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  fied..        //
d8e0: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 74 72  / <see cref="Str
d8f0: 65 61 6d 22 20 2f 3e 2e 0d 0a 20 20 20 20 20 20  eam" />...      
d900: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
d910: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
d920: 61 72 61 6d 20 6e 61 6d 65 3d 22 73 74 72 65 61  aram name="strea
d930: 6d 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  m">..        ///
d940: 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
d950: 53 74 72 65 61 6d 22 20 2f 3e 20 77 68 65 72 65  Stream" /> where
d960: 20 74 68 65 20 72 61 77 20 62 79 74 65 20 64 61   the raw byte da
d970: 74 61 20 66 6f 72 20 74 68 65 20 73 65 74 20 6f  ta for the set o
d980: 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  f..        /// c
d990: 68 61 6e 67 65 73 20 6d 61 79 20 62 65 20 72 65  hanges may be re
d9a0: 61 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ad...        ///
d9b0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
d9c0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
d9d0: 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a 20 20 20  me="flags">..   
d9e0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61       /// The fla
d9f0: 67 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  gs associated wi
da00: 74 68 20 74 68 65 20 70 61 72 65 6e 74 20 63 6f  th the parent co
da10: 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  nnection...     
da20: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
da30: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
da40: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
da50: 2f 2f 2f 20 54 68 65 20 6e 65 77 20 69 6e 73 74  /// The new inst
da60: 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61  ance of this cla
da70: 73 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20  ss -OR- null if 
da80: 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 63 72 65  it cannot be cre
da90: 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ated...        /
daa0: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
dab0: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
dac0: 61 74 69 63 20 53 51 4c 69 74 65 53 74 72 65 61  atic SQLiteStrea
dad0: 6d 43 68 61 6e 67 65 53 65 74 49 74 65 72 61 74  mChangeSetIterat
dae0: 6f 72 20 43 72 65 61 74 65 28 0d 0a 20 20 20 20  or Create(..    
daf0: 20 20 20 20 20 20 20 20 53 74 72 65 61 6d 20 73          Stream s
db00: 74 72 65 61 6d 2c 0d 0a 20 20 20 20 20 20 20 20  tream,..        
db10: 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63      SQLiteConnec
db20: 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 0d  tionFlags flags.
db30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
db40: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
db50: 20 20 20 20 20 20 20 69 66 20 28 73 74 72 65 61         if (strea
db60: 6d 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  m == null)..    
db70: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
db80: 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74 4e 75  w new ArgumentNu
db90: 6c 6c 45 78 63 65 70 74 69 6f 6e 28 22 73 74 72  llException("str
dba0: 65 61 6d 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  eam");....      
dbb0: 20 20 20 20 20 20 53 51 4c 69 74 65 53 74 72 65        SQLiteStre
dbc0: 61 6d 41 64 61 70 74 65 72 20 73 74 72 65 61 6d  amAdapter stream
dbd0: 41 64 61 70 74 65 72 20 3d 20 6e 75 6c 6c 3b 0d  Adapter = null;.
dbe0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
dbf0: 69 74 65 53 74 72 65 61 6d 43 68 61 6e 67 65 53  iteStreamChangeS
dc00: 65 74 49 74 65 72 61 74 6f 72 20 72 65 73 75 6c  etIterator resul
dc10: 74 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  t = null;..     
dc20: 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 69 74         IntPtr it
dc30: 65 72 61 74 6f 72 20 3d 20 49 6e 74 50 74 72 2e  erator = IntPtr.
dc40: 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Zero;....       
dc50: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
dc60: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
dc70: 20 20 20 20 20 20 20 20 20 73 74 72 65 61 6d 41           streamA
dc80: 64 61 70 74 65 72 20 3d 20 6e 65 77 20 53 51 4c  dapter = new SQL
dc90: 69 74 65 53 74 72 65 61 6d 41 64 61 70 74 65 72  iteStreamAdapter
dca0: 28 73 74 72 65 61 6d 2c 20 66 6c 61 67 73 29 3b  (stream, flags);
dcb0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
dcc0: 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43      SQLiteErrorC
dcd0: 6f 64 65 20 72 63 20 3d 20 55 6e 73 61 66 65 4e  ode rc = UnsafeN
dce0: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
dcf0: 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 73 74  ite3changeset_st
dd00: 61 72 74 5f 73 74 72 6d 28 0d 0a 20 20 20 20 20  art_strm(..     
dd10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
dd20: 65 66 20 69 74 65 72 61 74 6f 72 2c 20 73 74 72  ef iterator, str
dd30: 65 61 6d 41 64 61 70 74 65 72 2e 47 65 74 49 6e  eamAdapter.GetIn
dd40: 70 75 74 44 65 6c 65 67 61 74 65 28 29 2c 20 49  putDelegate(), I
dd50: 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a  ntPtr.Zero);....
dd60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dd70: 69 66 20 28 72 63 20 21 3d 20 53 51 4c 69 74 65  if (rc != SQLite
dd80: 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 29 0d 0a 20  ErrorCode.Ok).. 
dd90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
dda0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ddb0: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
ddc0: 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 28  SQLiteException(
ddd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
dde0: 20 20 20 20 20 20 20 20 20 20 72 63 2c 20 22 73            rc, "s
ddf0: 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f  qlite3changeset_
de00: 73 74 61 72 74 5f 73 74 72 6d 22 29 3b 0d 0a 20  start_strm");.. 
de10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
de20: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
de30: 20 20 20 20 72 65 73 75 6c 74 20 3d 20 6e 65 77      result = new
de40: 20 53 51 4c 69 74 65 53 74 72 65 61 6d 43 68 61   SQLiteStreamCha
de50: 6e 67 65 53 65 74 49 74 65 72 61 74 6f 72 28 0d  ngeSetIterator(.
de60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
de70: 20 20 20 20 20 73 74 72 65 61 6d 41 64 61 70 74       streamAdapt
de80: 65 72 2c 20 69 74 65 72 61 74 6f 72 2c 20 74 72  er, iterator, tr
de90: 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ue);..          
dea0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
deb0: 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20   finally..      
dec0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
ded0: 20 20 20 20 20 20 20 20 20 69 66 20 28 72 65 73           if (res
dee0: 75 6c 74 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ult == null)..  
def0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
df00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
df10: 20 20 20 20 20 69 66 20 28 69 74 65 72 61 74 6f       if (iterato
df20: 72 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  r != IntPtr.Zero
df30: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
df40: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
df50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
df60: 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
df70: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 63 68 61  thods.sqlite3cha
df80: 6e 67 65 73 65 74 5f 66 69 6e 61 6c 69 7a 65 28  ngeset_finalize(
df90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
dfa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 74                it
dfb0: 65 72 61 74 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20  erator);....    
dfc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dfd0: 20 20 20 20 69 74 65 72 61 74 6f 72 20 3d 20 49      iterator = I
dfe0: 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20  ntPtr.Zero;..   
dff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e000: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
e010: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74            if (st
e020: 72 65 61 6d 41 64 61 70 74 65 72 20 21 3d 20 6e  reamAdapter != n
e030: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
e040: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
e050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e060: 20 20 20 20 20 73 74 72 65 61 6d 41 64 61 70 74       streamAdapt
e070: 65 72 2e 44 69 73 70 6f 73 65 28 29 3b 0d 0a 20  er.Dispose();.. 
e080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e090: 20 20 20 20 20 20 20 73 74 72 65 61 6d 41 64 61         streamAda
e0a0: 70 74 65 72 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20  pter = null;..  
e0b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e0c0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
e0d0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
e0e0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
e0f0: 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75       return resu
e100: 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  lt;..        }..
e110: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
e120: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
e130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e170: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
e180: 20 23 72 65 67 69 6f 6e 20 49 44 69 73 70 6f 73   #region IDispos
e190: 61 62 6c 65 20 22 50 61 74 74 65 72 6e 22 20 4d  able "Pattern" M
e1a0: 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20  embers..        
e1b0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
e1c0: 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a         /// Non-z
e1d0: 65 72 6f 20 69 66 20 74 68 69 73 20 6f 62 6a 65  ero if this obje
e1e0: 63 74 20 69 6e 73 74 61 6e 63 65 20 68 61 73 20  ct instance has 
e1f0: 62 65 65 6e 20 64 69 73 70 6f 73 65 64 2e 0d 0a  been disposed...
e200: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
e210: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
e220: 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 64 69 73  private bool dis
e230: 70 6f 73 65 64 3b 0d 0a 0d 0a 20 20 20 20 20 20  posed;....      
e240: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
e250: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 72  .        /// Thr
e260: 6f 77 73 20 61 6e 20 65 78 63 65 70 74 69 6f 6e  ows an exception
e270: 20 69 66 20 74 68 69 73 20 6f 62 6a 65 63 74 20   if this object 
e280: 69 6e 73 74 61 6e 63 65 20 68 61 73 20 62 65 65  instance has bee
e290: 6e 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20  n disposed...   
e2a0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
e2b0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
e2c0: 76 61 74 65 20 76 6f 69 64 20 43 68 65 63 6b 44  vate void CheckD
e2d0: 69 73 70 6f 73 65 64 28 29 20 2f 2a 20 74 68 72  isposed() /* thr
e2e0: 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7b  ow */..        {
e2f0: 0d 0a 23 69 66 20 54 48 52 4f 57 5f 4f 4e 5f 44  ..#if THROW_ON_D
e300: 49 53 50 4f 53 45 44 0d 0a 20 20 20 20 20 20 20  ISPOSED..       
e310: 20 20 20 20 20 69 66 20 28 64 69 73 70 6f 73 65       if (dispose
e320: 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d)..            
e330: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
e340: 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4f 62 6a     throw new Obj
e350: 65 63 74 44 69 73 70 6f 73 65 64 45 78 63 65 70  ectDisposedExcep
e360: 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  tion(..         
e370: 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f             typeo
e380: 66 28 53 51 4c 69 74 65 53 74 72 65 61 6d 43 68  f(SQLiteStreamCh
e390: 61 6e 67 65 53 65 74 49 74 65 72 61 74 6f 72 29  angeSetIterator)
e3a0: 2e 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20  .Name);..       
e3b0: 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
e3c0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
e3d0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
e3e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e3f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
e420: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
e430: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
e440: 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 72 20 66  // Disposes or f
e450: 69 6e 61 6c 69 7a 65 73 20 74 68 69 73 20 6f 62  inalizes this ob
e460: 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a  ject instance...
e470: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
e480: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
e490: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
e4a0: 22 64 69 73 70 6f 73 69 6e 67 22 3e 0d 0a 20 20  "disposing">..  
e4b0: 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
e4c0: 72 6f 20 69 66 20 74 68 69 73 20 6f 62 6a 65 63  ro if this objec
e4d0: 74 20 69 73 20 62 65 69 6e 67 20 64 69 73 70 6f  t is being dispo
e4e0: 73 65 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 20  sed; otherwise, 
e4f0: 74 68 69 73 20 6f 62 6a 65 63 74 0d 0a 20 20 20  this object..   
e500: 20 20 20 20 20 2f 2f 2f 20 69 73 20 62 65 69 6e       /// is bein
e510: 67 20 66 69 6e 61 6c 69 7a 65 64 2e 0d 0a 20 20  g finalized...  
e520: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
e530: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74  m>..        prot
e540: 65 63 74 65 64 20 6f 76 65 72 72 69 64 65 20 76  ected override v
e550: 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f 6f 6c  oid Dispose(bool
e560: 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20   disposing)..   
e570: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
e580: 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
e590: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
e5a0: 20 20 20 20 20 20 20 20 69 66 20 28 21 64 69 73          if (!dis
e5b0: 70 6f 73 65 64 29 0d 0a 20 20 20 20 20 20 20 20  posed)..        
e5c0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
e5d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
e5e0: 2f 69 66 20 28 64 69 73 70 6f 73 69 6e 67 29 0d  /if (disposing).
e5f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e600: 20 20 20 20 20 2f 2f 7b 0d 0a 20 20 20 20 20 20       //{..      
e610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
e620: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
e630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e640: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
e650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
e660: 20 20 20 20 2f 2f 20 64 69 73 70 6f 73 65 20 6d      // dispose m
e670: 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63 65 73  anaged resources
e680: 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20   here.....      
e690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
e6a0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
e6b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e6c0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
e6d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
e6e0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
e6f0: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
e700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
e720: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e730: 20 20 20 20 20 2f 2f 20 72 65 6c 65 61 73 65 20       // release 
e740: 75 6e 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72  unmanaged resour
e750: 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20  ces here.....   
e760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e770: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
e780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e790: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20  ///////..       
e7a0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
e7b0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
e7c0: 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a         finally..
e7d0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
e7e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
e7f0: 61 73 65 2e 44 69 73 70 6f 73 65 28 64 69 73 70  ase.Dispose(disp
e800: 6f 73 69 6e 67 29 3b 0d 0a 0d 0a 20 20 20 20 20  osing);....     
e810: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
e820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
e830: 2f 20 4e 4f 54 45 3a 20 45 76 65 72 79 74 68 69  / NOTE: Everythi
e840: 6e 67 20 73 68 6f 75 6c 64 20 62 65 20 66 75 6c  ng should be ful
e850: 6c 79 20 64 69 73 70 6f 73 65 64 20 61 74 20 74  ly disposed at t
e860: 68 69 73 20 70 6f 69 6e 74 2e 0d 0a 20 20 20 20  his point...    
e870: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
e880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e890: 64 69 73 70 6f 73 65 64 20 3d 20 74 72 75 65 3b  disposed = true;
e8a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
e8b0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
e8c0: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
e8d0: 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
e8e0: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
e8f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e930: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
e940: 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 53 74  #region SQLiteSt
e950: 72 65 61 6d 41 64 61 70 74 65 72 20 43 6c 61 73  reamAdapter Clas
e960: 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  s..    /// <summ
e970: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
e980: 69 73 20 63 6c 61 73 73 20 69 73 20 75 73 65 64  is class is used
e990: 20 74 6f 20 61 63 74 20 61 73 20 61 20 62 72 69   to act as a bri
e9a0: 64 67 65 20 62 65 74 77 65 65 6e 20 61 20 3c 73  dge between a <s
e9b0: 65 65 20 63 72 65 66 3d 22 53 74 72 65 61 6d 22  ee cref="Stream"
e9c0: 20 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 69 6e 73   />..    /// ins
e9d0: 74 61 6e 63 65 20 61 6e 64 20 74 68 65 20 64 65  tance and the de
e9e0: 6c 65 67 61 74 65 73 20 75 73 65 64 20 77 69 74  legates used wit
e9f0: 68 20 74 68 65 20 6e 61 74 69 76 65 20 73 74 72  h the native str
ea00: 65 61 6d 69 6e 67 20 41 50 49 2e 0d 0a 20 20 20  eaming API...   
ea10: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
ea20: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65  .    internal se
ea30: 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74  aled class SQLit
ea40: 65 53 74 72 65 61 6d 41 64 61 70 74 65 72 20 3a  eStreamAdapter :
ea50: 20 49 44 69 73 70 6f 73 61 62 6c 65 0d 0a 20 20   IDisposable..  
ea60: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65    {..        #re
ea70: 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74  gion Private Dat
ea80: 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  a..        /// <
ea90: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
eaa0: 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65    /// The manage
eab0: 64 20 73 74 72 65 61 6d 20 69 6e 73 74 61 6e 63  d stream instanc
eac0: 65 20 75 73 65 64 20 74 6f 20 69 6e 20 6f 72 64  e used to in ord
ead0: 65 72 20 74 6f 20 73 65 72 76 69 63 65 20 74 68  er to service th
eae0: 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20  e native..      
eaf0: 20 20 2f 2f 2f 20 64 65 6c 65 67 61 74 65 73 20    /// delegates 
eb00: 66 6f 72 20 62 6f 74 68 20 69 6e 70 75 74 20 61  for both input a
eb10: 6e 64 20 6f 75 74 70 75 74 2e 0d 0a 20 20 20 20  nd output...    
eb20: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
eb30: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
eb40: 61 74 65 20 53 74 72 65 61 6d 20 73 74 72 65 61  ate Stream strea
eb50: 6d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  m;....        //
eb60: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
eb70: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61       /// The fla
eb80: 67 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  gs associated wi
eb90: 74 68 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f  th the connectio
eba0: 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
ebb0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
ebc0: 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
ebd0: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67  teConnectionFlag
ebe0: 73 20 66 6c 61 67 73 3b 0d 0a 0d 0a 20 20 20 20  s flags;....    
ebf0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
ec00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
ec40: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
ec50: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
ec60: 2f 20 54 68 65 20 64 65 6c 65 67 61 74 65 20 75  / The delegate u
ec70: 73 65 64 20 74 6f 20 70 72 6f 76 69 64 65 20 69  sed to provide i
ec80: 6e 70 75 74 20 74 6f 20 74 68 65 20 6e 61 74 69  nput to the nati
ec90: 76 65 20 73 74 72 65 61 6d 69 6e 67 20 41 50 49  ve streaming API
eca0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 49  ...        /// I
ecb0: 74 20 77 69 6c 6c 20 62 65 20 6e 75 6c 6c 20 2d  t will be null -
ecc0: 4f 52 2d 20 70 6f 69 6e 74 20 74 6f 20 74 68 65  OR- point to the
ecd0: 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 70 75   <see cref="Inpu
ece0: 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  t" /> method... 
ecf0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
ed00: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
ed10: 72 69 76 61 74 65 20 55 6e 73 61 66 65 4e 61 74  rivate UnsafeNat
ed20: 69 76 65 4d 65 74 68 6f 64 73 2e 78 53 65 73 73  iveMethods.xSess
ed30: 69 6f 6e 49 6e 70 75 74 20 78 49 6e 70 75 74 3b  ionInput xInput;
ed40: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
ed50: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
ed60: 20 20 20 2f 2f 2f 20 54 68 65 20 64 65 6c 65 67     /// The deleg
ed70: 61 74 65 20 75 73 65 64 20 74 6f 20 70 72 6f 76  ate used to prov
ed80: 69 64 65 20 6f 75 74 70 75 74 20 74 6f 20 74 68  ide output to th
ed90: 65 20 6e 61 74 69 76 65 20 73 74 72 65 61 6d 69  e native streami
eda0: 6e 67 20 41 50 49 2e 0d 0a 20 20 20 20 20 20 20  ng API...       
edb0: 20 2f 2f 2f 20 49 74 20 77 69 6c 6c 20 62 65 20   /// It will be 
edc0: 6e 75 6c 6c 20 2d 4f 52 2d 20 70 6f 69 6e 74 20  null -OR- point 
edd0: 74 6f 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  to the <see cref
ede0: 3d 22 4f 75 74 70 75 74 22 20 2f 3e 20 6d 65 74  ="Output" /> met
edf0: 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
ee00: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
ee10: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 55 6e        private Un
ee20: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
ee30: 73 2e 78 53 65 73 73 69 6f 6e 4f 75 74 70 75 74  s.xSessionOutput
ee40: 20 78 4f 75 74 70 75 74 3b 0d 0a 20 20 20 20 20   xOutput;..     
ee50: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
ee60: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
ee70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eeb0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
eec0: 69 6f 6e 20 50 75 62 6c 69 63 20 43 6f 6e 73 74  ion Public Const
eed0: 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20  ructors..       
eee0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
eef0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73          /// Cons
ef00: 74 72 75 63 74 73 20 61 20 6e 65 77 20 69 6e 73  tructs a new ins
ef10: 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c  tance of this cl
ef20: 61 73 73 20 75 73 69 6e 67 20 74 68 65 20 73 70  ass using the sp
ef30: 65 63 69 66 69 65 64 20 6d 61 6e 61 67 65 64 0d  ecified managed.
ef40: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72  .        /// str
ef50: 65 61 6d 20 61 6e 64 20 63 6f 6e 6e 65 63 74 69  eam and connecti
ef60: 6f 6e 20 66 6c 61 67 73 2e 0d 0a 20 20 20 20 20  on flags...     
ef70: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
ef80: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
ef90: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 74 72 65  param name="stre
efa0: 61 6d 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  am">..        //
efb0: 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20 73 74  / The managed st
efc0: 72 65 61 6d 20 69 6e 73 74 61 6e 63 65 20 74 6f  ream instance to
efd0: 20 62 65 20 75 73 65 64 20 69 6e 20 6f 72 64 65   be used in orde
efe0: 72 20 74 6f 20 73 65 72 76 69 63 65 20 74 68 65  r to service the
eff0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 61  ..        /// na
f000: 74 69 76 65 20 64 65 6c 65 67 61 74 65 73 20 66  tive delegates f
f010: 6f 72 20 62 6f 74 68 20 69 6e 70 75 74 20 61 6e  or both input an
f020: 64 20 6f 75 74 70 75 74 2e 0d 0a 20 20 20 20 20  d output...     
f030: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
f040: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
f050: 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22  ram name="flags"
f060: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
f070: 68 65 20 66 6c 61 67 73 20 61 73 73 6f 63 69 61  he flags associa
f080: 74 65 64 20 77 69 74 68 20 74 68 65 20 70 61 72  ted with the par
f090: 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d  ent connection..
f0a0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
f0b0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70  aram>..        p
f0c0: 75 62 6c 69 63 20 53 51 4c 69 74 65 53 74 72 65  ublic SQLiteStre
f0d0: 61 6d 41 64 61 70 74 65 72 28 0d 0a 20 20 20 20  amAdapter(..    
f0e0: 20 20 20 20 20 20 20 20 53 74 72 65 61 6d 20 73          Stream s
f0f0: 74 72 65 61 6d 2c 0d 0a 20 20 20 20 20 20 20 20  tream,..        
f100: 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63      SQLiteConnec
f110: 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 0d  tionFlags flags.
f120: 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
f130: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
f140: 20 20 20 20 20 20 20 74 68 69 73 2e 73 74 72 65         this.stre
f150: 61 6d 20 3d 20 73 74 72 65 61 6d 3b 0d 0a 20 20  am = stream;..  
f160: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 66            this.f
f170: 6c 61 67 73 20 3d 20 66 6c 61 67 73 3b 0d 0a 20  lags = flags;.. 
f180: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
f190: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
f1a0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
f1b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f1c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f1d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f1e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
f1f0: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
f200: 6f 6e 20 50 72 69 76 61 74 65 20 4d 65 74 68 6f  on Private Metho
f210: 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
f220: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
f230: 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61     /// Queries a
f240: 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 66  nd returns the f
f250: 6c 61 67 73 20 61 73 73 6f 63 69 61 74 65 64 20  lags associated 
f260: 77 69 74 68 20 74 68 65 20 63 6f 6e 6e 65 63 74  with the connect
f270: 69 6f 6e 20 66 6f 72 0d 0a 20 20 20 20 20 20 20  ion for..       
f280: 20 2f 2f 2f 20 74 68 69 73 20 69 6e 73 74 61 6e   /// this instan
f290: 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ce...        ///
f2a0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
f2b0: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
f2c0: 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
f2d0: 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
f2e0: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
f2f0: 6c 61 67 73 22 20 2f 3e 20 76 61 6c 75 65 2e 20  lags" /> value. 
f300: 20 54 68 65 72 65 20 69 73 20 6e 6f 20 72 65 74   There is no ret
f310: 75 72 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  urn..        ///
f320: 20 76 61 6c 75 65 20 72 65 73 65 72 76 65 64 20   value reserved 
f330: 74 6f 20 69 6e 64 69 63 61 74 65 20 61 6e 20 65  to indicate an e
f340: 72 72 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f  rror...        /
f350: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
f360: 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
f370: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
f380: 6c 61 67 73 20 47 65 74 46 6c 61 67 73 28 29 0d  lags GetFlags().
f390: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
f3a0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
f3b0: 6c 61 67 73 3b 0d 0a 20 20 20 20 20 20 20 20 7d  lags;..        }
f3c0: 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
f3d0: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
f3e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f3f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f420: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
f430: 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69     #region Publi
f440: 63 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  c Methods..     
f450: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
f460: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65  ..        /// Re
f470: 74 75 72 6e 73 20 61 20 64 65 6c 65 67 61 74 65  turns a delegate
f480: 20 74 68 61 74 20 77 72 61 70 73 20 74 68 65 20   that wraps the 
f490: 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 70 75 74  <see cref="Input
f4a0: 22 20 2f 3e 20 6d 65 74 68 6f 64 2c 0d 0a 20 20  " /> method,..  
f4b0: 20 20 20 20 20 20 2f 2f 2f 20 63 72 65 61 74 69        /// creati
f4c0: 6e 67 20 69 74 20 66 69 72 73 74 20 69 66 20 6e  ng it first if n
f4d0: 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 20 20 20  ecessary...     
f4e0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
f4f0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
f500: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
f510: 20 20 2f 2f 2f 20 41 20 64 65 6c 65 67 61 74 65    /// A delegate
f520: 20 74 68 61 74 20 72 65 66 65 72 73 20 74 6f 20   that refers to 
f530: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
f540: 6e 70 75 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  nput" /> method.
f550: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
f560: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
f570: 20 20 70 75 62 6c 69 63 20 55 6e 73 61 66 65 4e    public UnsafeN
f580: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 53 65  ativeMethods.xSe
f590: 73 73 69 6f 6e 49 6e 70 75 74 20 47 65 74 49 6e  ssionInput GetIn
f5a0: 70 75 74 44 65 6c 65 67 61 74 65 28 29 0d 0a 20  putDelegate().. 
f5b0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
f5c0: 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f        CheckDispo
f5d0: 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  sed();....      
f5e0: 20 20 20 20 20 20 69 66 20 28 78 49 6e 70 75 74        if (xInput
f5f0: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
f600: 20 20 20 20 20 20 20 20 20 20 20 78 49 6e 70 75             xInpu
f610: 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  t = new UnsafeNa
f620: 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 53 65 73  tiveMethods.xSes
f630: 73 69 6f 6e 49 6e 70 75 74 28 49 6e 70 75 74 29  sionInput(Input)
f640: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
f650: 20 72 65 74 75 72 6e 20 78 49 6e 70 75 74 3b 0d   return xInput;.
f660: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
f670: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
f680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f6a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f6b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
f6c0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
f6d0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
f6e0: 2f 2f 2f 20 52 65 74 75 72 6e 73 20 61 20 64 65  /// Returns a de
f6f0: 6c 65 67 61 74 65 20 74 68 61 74 20 77 72 61 70  legate that wrap
f700: 73 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  s the <see cref=
f710: 22 4f 75 74 70 75 74 22 20 2f 3e 20 6d 65 74 68  "Output" /> meth
f720: 6f 64 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  od,..        ///
f730: 20 63 72 65 61 74 69 6e 67 20 69 74 20 66 69 72   creating it fir
f740: 73 74 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e  st if necessary.
f750: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
f760: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
f770: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
f780: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 64  .        /// A d
f790: 65 6c 65 67 61 74 65 20 74 68 61 74 20 72 65 66  elegate that ref
f7a0: 65 72 73 20 74 6f 20 74 68 65 20 3c 73 65 65 20  ers to the <see 
f7b0: 63 72 65 66 3d 22 4f 75 74 70 75 74 22 20 2f 3e  cref="Output" />
f7c0: 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
f7d0: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
f7e0: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
f7f0: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
f800: 68 6f 64 73 2e 78 53 65 73 73 69 6f 6e 4f 75 74  hods.xSessionOut
f810: 70 75 74 20 47 65 74 4f 75 74 70 75 74 44 65 6c  put GetOutputDel
f820: 65 67 61 74 65 28 29 0d 0a 20 20 20 20 20 20 20  egate()..       
f830: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
f840: 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
f850: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
f860: 69 66 20 28 78 4f 75 74 70 75 74 20 3d 3d 20 6e  if (xOutput == n
f870: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
f880: 20 20 20 20 20 20 78 4f 75 74 70 75 74 20 3d 20        xOutput = 
f890: 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
f8a0: 4d 65 74 68 6f 64 73 2e 78 53 65 73 73 69 6f 6e  Methods.xSession
f8b0: 4f 75 74 70 75 74 28 4f 75 74 70 75 74 29 3b 0d  Output(Output);.
f8c0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
f8d0: 65 74 75 72 6e 20 78 4f 75 74 70 75 74 3b 0d 0a  eturn xOutput;..
f8e0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
f8f0: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
f900: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
f910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f950: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
f960: 69 6f 6e 20 4e 61 74 69 76 65 20 43 61 6c 6c 62  ion Native Callb
f970: 61 63 6b 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  ack Methods..   
f980: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
f990: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
f9a0: 54 68 69 73 20 6d 65 74 68 6f 64 20 61 74 74 65  This method atte
f9b0: 6d 70 74 73 20 74 6f 20 72 65 61 64 20 3c 70 61  mpts to read <pa
f9c0: 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 6e 44 61  ramref name="nDa
f9d0: 74 61 22 20 2f 3e 20 62 79 74 65 73 20 66 72 6f  ta" /> bytes fro
f9e0: 6d 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  m..        /// t
f9f0: 68 65 20 6d 61 6e 61 67 65 64 20 73 74 72 65 61  he managed strea
fa00: 6d 2c 20 77 72 69 74 69 6e 67 20 74 68 65 6d 20  m, writing them 
fa10: 74 6f 20 74 68 65 20 3c 70 61 72 61 6d 72 65 66  to the <paramref
fa20: 20 6e 61 6d 65 3d 22 70 44 61 74 61 22 2f 3e 0d   name="pData"/>.
fa30: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 75 66  .        /// buf
fa40: 66 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  fer...        //
fa50: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
fa60: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
fa70: 20 6e 61 6d 65 3d 22 63 6f 6e 74 65 78 74 22 3e   name="context">
fa80: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4f 70  ..        /// Op
fa90: 74 69 6f 6e 61 6c 20 65 78 74 72 61 20 63 6f 6e  tional extra con
faa0: 74 65 78 74 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  text information
fab0: 2e 20 20 43 75 72 72 65 6e 74 6c 79 2c 20 74 68  .  Currently, th
fac0: 69 73 20 77 69 6c 6c 20 61 6c 77 61 79 73 0d 0a  is will always..
fad0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 68 61 76 65          /// have
fae0: 20 61 20 76 61 6c 75 65 20 6f 66 20 3c 73 65 65   a value of <see
faf0: 20 63 72 65 66 3d 22 49 6e 74 50 74 72 2e 5a 65   cref="IntPtr.Ze
fb00: 72 6f 22 20 2f 3e 2e 0d 0a 20 20 20 20 20 20 20  ro" />...       
fb10: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
fb20: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
fb30: 6d 20 6e 61 6d 65 3d 22 70 44 61 74 61 22 3e 0d  m name="pData">.
fb40: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 70  .        /// A p
fb50: 72 65 61 6c 6c 6f 63 61 74 65 64 20 6e 61 74 69  reallocated nati
fb60: 76 65 20 62 75 66 66 65 72 20 74 6f 20 72 65 63  ve buffer to rec
fb70: 65 69 76 65 20 74 68 65 20 72 65 71 75 65 73 74  eive the request
fb80: 65 64 20 69 6e 70 75 74 20 62 79 74 65 73 2e 0d  ed input bytes..
fb90: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 49 74 20  .        /// It 
fba0: 6d 75 73 74 20 62 65 20 61 74 20 6c 65 61 73 74  must be at least
fbb0: 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d   <paramref name=
fbc0: 22 6e 44 61 74 61 22 20 2f 3e 20 62 79 74 65 73  "nData" /> bytes
fbd0: 20 69 6e 20 73 69 7a 65 2e 0d 0a 20 20 20 20 20   in size...     
fbe0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
fbf0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
fc00: 72 61 6d 20 6e 61 6d 65 3d 22 6e 44 61 74 61 22  ram name="nData"
fc10: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55  >..        /// U
fc20: 70 6f 6e 20 65 6e 74 72 79 2c 20 74 68 65 20 6e  pon entry, the n
fc30: 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 74  umber of bytes t
fc40: 6f 20 72 65 61 64 2e 20 20 55 70 6f 6e 20 65 78  o read.  Upon ex
fc50: 69 74 2c 20 74 68 65 20 6e 75 6d 62 65 72 20 6f  it, the number o
fc60: 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 62  f..        /// b
fc70: 79 74 65 73 20 61 63 74 75 61 6c 6c 79 20 72 65  ytes actually re
fc80: 61 64 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20  ad.  This value 
fc90: 6d 61 79 20 62 65 20 7a 65 72 6f 20 75 70 6f 6e  may be zero upon
fca0: 20 65 78 69 74 2e 0d 0a 20 20 20 20 20 20 20 20   exit...        
fcb0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
fcc0: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
fcd0: 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
fce0: 20 54 68 65 20 76 61 6c 75 65 20 3c 73 65 65 20   The value <see 
fcf0: 63 72 65 66 3d 22 53 51 4c 69 74 65 45 72 72 6f  cref="SQLiteErro
fd00: 72 43 6f 64 65 2e 4f 6b 22 20 2f 3e 20 75 70 6f  rCode.Ok" /> upo
fd10: 6e 20 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 61  n success -OR- a
fd20: 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61  n..        /// a
fd30: 70 70 72 6f 70 72 69 61 74 65 20 65 72 72 6f 72  ppropriate error
fd40: 20 63 6f 64 65 20 75 70 6f 6e 20 66 61 69 6c 75   code upon failu
fd50: 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
fd60: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
fd70: 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c       private SQL
fd80: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 49 6e 70  iteErrorCode Inp
fd90: 75 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ut(..           
fda0: 20 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c   IntPtr context,
fdb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
fdc0: 74 50 74 72 20 70 44 61 74 61 2c 0d 0a 20 20 20  tPtr pData,..   
fdd0: 20 20 20 20 20 20 20 20 20 72 65 66 20 69 6e 74           ref int
fde0: 20 6e 44 61 74 61 0d 0a 20 20 20 20 20 20 20 20   nData..        
fdf0: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
fe00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72  ..            tr
fe10: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
fe20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
fe30: 20 20 53 74 72 65 61 6d 20 6c 6f 63 61 6c 53 74    Stream localSt
fe40: 72 65 61 6d 20 3d 20 73 74 72 65 61 6d 3b 0d 0a  ream = stream;..
fe50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
fe60: 20 20 69 66 20 28 6c 6f 63 61 6c 53 74 72 65 61    if (localStrea
fe70: 6d 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  m == null)..    
fe80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fe90: 72 65 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72  return SQLiteErr
fea0: 6f 72 43 6f 64 65 2e 4d 69 73 75 73 65 3b 0d 0a  orCode.Misuse;..
feb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
fec0: 20 20 69 66 20 28 6e 44 61 74 61 20 3e 20 30 29    if (nData > 0)
fed0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
fee0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
fef0: 20 20 20 20 20 20 20 20 20 62 79 74 65 5b 5d 20           byte[] 
ff00: 62 79 74 65 73 20 3d 20 6e 65 77 20 62 79 74 65  bytes = new byte
ff10: 5b 6e 44 61 74 61 5d 3b 0d 0a 20 20 20 20 20 20  [nData];..      
ff20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
ff30: 74 20 6e 52 65 61 64 20 3d 20 6c 6f 63 61 6c 53  t nRead = localS
ff40: 74 72 65 61 6d 2e 52 65 61 64 28 62 79 74 65 73  tream.Read(bytes
ff50: 2c 20 30 2c 20 6e 44 61 74 61 29 3b 0d 0a 0d 0a  , 0, nData);....
ff60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ff70: 20 20 20 20 69 66 20 28 28 6e 52 65 61 64 20 3e      if ((nRead >
ff80: 20 30 29 20 26 26 20 28 70 44 61 74 61 20 21 3d   0) && (pData !=
ff90: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 29 0d 0a   IntPtr.Zero))..
ffa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ffb0: 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e          Marshal.
ffc0: 43 6f 70 79 28 62 79 74 65 73 2c 20 30 2c 20 70  Copy(bytes, 0, p
ffd0: 44 61 74 61 2c 20 6e 52 65 61 64 29 3b 0d 0a 0d  Data, nRead);...
ffe0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
fff0: 20 20 20 20 20 6e 44 61 74 61 20 3d 20 6e 52 65       nData = nRe
10000 61 64 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ad;..           
10010 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
10020 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
10030 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
10040 2e 4f 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  .Ok;..          
10050 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
10060 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f   catch (Exceptio
10070 6e 20 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20  n e)..          
10080 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
10090 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
100a0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
100b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
100c0 20 69 66 20 28 48 65 6c 70 65 72 4d 65 74 68 6f   if (HelperMetho
100d0 64 73 2e 4c 6f 67 43 61 6c 6c 62 61 63 6b 45 78  ds.LogCallbackEx
100e0 63 65 70 74 69 6f 6e 73 28 47 65 74 46 6c 61 67  ceptions(GetFlag
100f0 73 28 29 29 29 0d 0a 20 20 20 20 20 20 20 20 20  s()))..         
10100 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
10110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10120 20 20 20 20 20 20 53 51 4c 69 74 65 4c 6f 67 2e        SQLiteLog.
10130 4c 6f 67 4d 65 73 73 61 67 65 28 0d 0a 20 20 20  LogMessage(..   
10140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10150 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42           SQLiteB
10160 61 73 65 2e 43 4f 52 5f 45 5f 45 58 43 45 50 54  ase.COR_E_EXCEPT
10170 49 4f 4e 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ION,..          
10180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10190 20 20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e    HelperMethods.
101a0 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
101b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
101c0 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
101d0 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
101e0 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
101f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10200 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
10210 4d 65 74 68 6f 64 73 2e 45 78 63 65 70 74 69 6f  Methods.Exceptio
10220 6e 4d 65 73 73 61 67 65 46 6f 72 6d 61 74 2c 0d  nMessageFormat,.
10230 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10240 20 20 20 20 20 20 20 20 20 20 20 20 20 22 78 53               "xS
10250 65 73 73 69 6f 6e 49 6e 70 75 74 22 2c 20 65 29  essionInput", e)
10260 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
10270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10280 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
10290 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
102a0 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
102b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
102c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
102d0 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
102e0 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
102f0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
10300 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
10310 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53          return S
10320 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 49  QLiteErrorCode.I
10330 6f 45 72 72 5f 52 65 61 64 3b 0d 0a 20 20 20 20  oErr_Read;..    
10340 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
10350 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
10360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10390 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
103a0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
103b0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
103c0 68 69 73 20 6d 65 74 68 6f 64 20 61 74 74 65 6d  his method attem
103d0 70 74 73 20 74 6f 20 77 72 69 74 65 20 3c 70 61  pts to write <pa
103e0 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 6e 44 61  ramref name="nDa
103f0 74 61 22 20 2f 3e 20 62 79 74 65 73 20 74 6f 0d  ta" /> bytes to.
10400 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  .        /// the
10410 20 6d 61 6e 61 67 65 64 20 73 74 72 65 61 6d 2c   managed stream,
10420 20 72 65 61 64 69 6e 67 20 74 68 65 6d 20 66 72   reading them fr
10430 6f 6d 20 74 68 65 20 3c 70 61 72 61 6d 72 65 66  om the <paramref
10440 20 6e 61 6d 65 3d 22 70 44 61 74 61 22 2f 3e 0d   name="pData"/>.
10450 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 75 66  .        /// buf
10460 66 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  fer...        //
10470 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
10480 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
10490 20 6e 61 6d 65 3d 22 63 6f 6e 74 65 78 74 22 3e   name="context">
104a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4f 70  ..        /// Op
104b0 74 69 6f 6e 61 6c 20 65 78 74 72 61 20 63 6f 6e  tional extra con
104c0 74 65 78 74 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  text information
104d0 2e 20 20 43 75 72 72 65 6e 74 6c 79 2c 20 74 68  .  Currently, th
104e0 69 73 20 77 69 6c 6c 20 61 6c 77 61 79 73 0d 0a  is will always..
104f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 68 61 76 65          /// have
10500 20 61 20 76 61 6c 75 65 20 6f 66 20 3c 73 65 65   a value of <see
10510 20 63 72 65 66 3d 22 49 6e 74 50 74 72 2e 5a 65   cref="IntPtr.Ze
10520 72 6f 22 20 2f 3e 2e 0d 0a 20 20 20 20 20 20 20  ro" />...       
10530 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
10540 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
10550 6d 20 6e 61 6d 65 3d 22 70 44 61 74 61 22 3e 0d  m name="pData">.
10560 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 70  .        /// A p
10570 72 65 61 6c 6c 6f 63 61 74 65 64 20 6e 61 74 69  reallocated nati
10580 76 65 20 62 75 66 66 65 72 20 63 6f 6e 74 61 69  ve buffer contai
10590 6e 69 6e 67 20 74 68 65 20 72 65 71 75 65 73 74  ning the request
105a0 65 64 20 6f 75 74 70 75 74 0d 0a 20 20 20 20 20  ed output..     
105b0 20 20 20 2f 2f 2f 20 62 79 74 65 73 2e 20 20 49     /// bytes.  I
105c0 74 20 6d 75 73 74 20 62 65 20 61 74 20 6c 65 61  t must be at lea
105d0 73 74 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d  st <paramref nam
105e0 65 3d 22 6e 44 61 74 61 22 20 2f 3e 20 62 79 74  e="nData" /> byt
105f0 65 73 20 69 6e 0d 0a 20 20 20 20 20 20 20 20 2f  es in..        /
10600 2f 2f 20 73 69 7a 65 2e 0d 0a 20 20 20 20 20 20  // size...      
10610 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
10620 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
10630 61 6d 20 6e 61 6d 65 3d 22 6e 44 61 74 61 22 3e  am name="nData">
10640 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
10650 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65  e number of byte
10660 73 20 74 6f 20 77 72 69 74 65 2e 0d 0a 20 20 20  s to write...   
10670 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
10680 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
10690 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
106a0 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20    /// The value 
106b0 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
106c0 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 22 20 2f  eErrorCode.Ok" /
106d0 3e 20 75 70 6f 6e 20 73 75 63 63 65 73 73 20 2d  > upon success -
106e0 4f 52 2d 20 61 6e 0d 0a 20 20 20 20 20 20 20 20  OR- an..        
106f0 2f 2f 2f 20 61 70 70 72 6f 70 72 69 61 74 65 20  /// appropriate 
10700 65 72 72 6f 72 20 63 6f 64 65 20 75 70 6f 6e 20  error code upon 
10710 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20  failure...      
10720 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
10730 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
10740 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
10750 65 20 4f 75 74 70 75 74 28 0d 0a 20 20 20 20 20  e Output(..     
10760 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 63 6f         IntPtr co
10770 6e 74 65 78 74 2c 0d 0a 20 20 20 20 20 20 20 20  ntext,..        
10780 20 20 20 20 49 6e 74 50 74 72 20 70 44 61 74 61      IntPtr pData
10790 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ,..            i
107a0 6e 74 20 6e 44 61 74 61 0d 0a 20 20 20 20 20 20  nt nData..      
107b0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
107c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
107d0 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
107e0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
107f0 20 20 20 20 53 74 72 65 61 6d 20 6c 6f 63 61 6c      Stream local
10800 53 74 72 65 61 6d 20 3d 20 73 74 72 65 61 6d 3b  Stream = stream;
10810 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
10820 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 53 74 72      if (localStr
10830 65 61 6d 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  eam == null)..  
10840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10850 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 45    return SQLiteE
10860 72 72 6f 72 43 6f 64 65 2e 4d 69 73 75 73 65 3b  rrorCode.Misuse;
10870 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
10880 20 20 20 20 69 66 20 28 6e 44 61 74 61 20 3e 20      if (nData > 
10890 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0)..            
108a0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
108b0 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65 5b             byte[
108c0 5d 20 62 79 74 65 73 20 3d 20 6e 65 77 20 62 79  ] bytes = new by
108d0 74 65 5b 6e 44 61 74 61 5d 3b 0d 0a 0d 0a 20 20  te[nData];....  
108e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
108f0 20 20 69 66 20 28 70 44 61 74 61 20 21 3d 20 49    if (pData != I
10900 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
10910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10920 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 43 6f 70       Marshal.Cop
10930 79 28 70 44 61 74 61 2c 20 62 79 74 65 73 2c 20  y(pData, bytes, 
10940 30 2c 20 6e 44 61 74 61 29 3b 0d 0a 0d 0a 20 20  0, nData);....  
10950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10960 20 20 6c 6f 63 61 6c 53 74 72 65 61 6d 2e 57 72    localStream.Wr
10970 69 74 65 28 62 79 74 65 73 2c 20 30 2c 20 6e 44  ite(bytes, 0, nD
10980 61 74 61 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ata);..         
10990 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
109a0 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 61              loca
109b0 6c 53 74 72 65 61 6d 2e 46 6c 75 73 68 28 29 3b  lStream.Flush();
109c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
109d0 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74      return SQLit
109e0 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 3b 0d 0a  eErrorCode.Ok;..
109f0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
10a00 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
10a10 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a   (Exception e)..
10a20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
10a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
10a40 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
10a50 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
10a60 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 48             if (H
10a70 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 4c 6f 67  elperMethods.Log
10a80 43 61 6c 6c 62 61 63 6b 45 78 63 65 70 74 69 6f  CallbackExceptio
10a90 6e 73 28 47 65 74 46 6c 61 67 73 28 29 29 29 0d  ns(GetFlags())).
10aa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10ab0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
10ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10ad0 53 51 4c 69 74 65 4c 6f 67 2e 4c 6f 67 4d 65 73  SQLiteLog.LogMes
10ae0 73 61 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20  sage(..         
10af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10b00 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43 4f     SQLiteBase.CO
10b10 52 5f 45 5f 45 58 43 45 50 54 49 4f 4e 2c 0d 0a  R_E_EXCEPTION,..
10b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10b30 20 20 20 20 20 20 20 20 20 20 20 20 48 65 6c 70              Help
10b40 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
10b50 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
10b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10b70 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
10b80 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
10b90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e                Un
10bb0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
10bc0 73 2e 45 78 63 65 70 74 69 6f 6e 4d 65 73 73 61  s.ExceptionMessa
10bd0 67 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20  geFormat,..     
10be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10bf0 20 20 20 20 20 20 20 22 78 53 65 73 73 69 6f 6e         "xSession
10c00 4f 75 74 70 75 74 22 2c 20 65 29 29 3b 20 2f 2a  Output", e)); /*
10c10 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
10c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
10c30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10c40 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
10c50 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
10c60 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
10c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10c80 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
10c90 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
10ca0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
10cb0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
10cc0 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65     return SQLite
10cd0 45 72 72 6f 72 43 6f 64 65 2e 49 6f 45 72 72 5f  ErrorCode.IoErr_
10ce0 57 72 69 74 65 3b 0d 0a 20 20 20 20 20 20 20 20  Write;..        
10cf0 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
10d00 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
10d10 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
10d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10d50 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
10d60 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73      #region IDis
10d70 70 6f 73 61 62 6c 65 20 4d 65 6d 62 65 72 73 0d  posable Members.
10d80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
10d90 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
10da0 2f 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20  /// Disposes of 
10db0 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74  this object inst
10dc0 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ance...        /
10dd0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
10de0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f         public vo
10df0 69 64 20 44 69 73 70 6f 73 65 28 29 0d 0a 20 20  id Dispose()..  
10e00 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
10e10 20 20 20 20 20 44 69 73 70 6f 73 65 28 74 72 75       Dispose(tru
10e20 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
10e30 20 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61   GC.SuppressFina
10e40 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20  lize(this);..   
10e50 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
10e60 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
10e70 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
10e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
10ec0 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
10ed0 20 49 44 69 73 70 6f 73 61 62 6c 65 20 22 50 61   IDisposable "Pa
10ee0 74 74 65 72 6e 22 20 4d 65 6d 62 65 72 73 0d 0a  ttern" Members..
10ef0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
10f00 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
10f10 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74  // Non-zero if t
10f20 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
10f30 6e 63 65 20 68 61 73 20 62 65 65 6e 20 64 69 73  nce has been dis
10f40 70 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  posed...        
10f50 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
10f60 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
10f70 62 6f 6f 6c 20 64 69 73 70 6f 73 65 64 3b 0d 0a  bool disposed;..
10f80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
10f90 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
10fa0 20 2f 2f 2f 20 54 68 72 6f 77 73 20 61 6e 20 65   /// Throws an e
10fb0 78 63 65 70 74 69 6f 6e 20 69 66 20 74 68 69 73  xception if this
10fc0 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
10fd0 20 68 61 73 20 62 65 65 6e 20 64 69 73 70 6f 73   has been dispos
10fe0 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
10ff0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
11000 20 20 20 20 20 70 72 69 76 61 74 65 20 76 6f 69       private voi
11010 64 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  d CheckDisposed(
11020 29 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ) /* throw */.. 
11030 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 54 48         {..#if TH
11040 52 4f 57 5f 4f 4e 5f 44 49 53 50 4f 53 45 44 0d  ROW_ON_DISPOSED.
11050 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
11060 28 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20  (disposed)..    
11070 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
11080 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
11090 20 6e 65 77 20 4f 62 6a 65 63 74 44 69 73 70 6f   new ObjectDispo
110a0 73 65 64 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20  sedException(.. 
110b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
110c0 20 20 20 74 79 70 65 6f 66 28 53 51 4c 69 74 65     typeof(SQLite
110d0 53 74 72 65 61 6d 41 64 61 70 74 65 72 29 2e 4e  StreamAdapter).N
110e0 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ame);..         
110f0 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
11100 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
11110 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
11120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
11160 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
11170 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
11180 20 44 69 73 70 6f 73 65 73 20 6f 72 20 66 69 6e   Disposes or fin
11190 61 6c 69 7a 65 73 20 74 68 69 73 20 6f 62 6a 65  alizes this obje
111a0 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  ct instance...  
111b0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
111c0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
111d0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64  / <param name="d
111e0 69 73 70 6f 73 69 6e 67 22 3e 0d 0a 20 20 20 20  isposing">..    
111f0 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
11200 20 69 66 20 74 68 69 73 20 6f 62 6a 65 63 74 20   if this object 
11210 69 73 20 62 65 69 6e 67 20 64 69 73 70 6f 73 65  is being dispose
11220 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 74 68  d; otherwise, th
11230 69 73 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20  is object..     
11240 20 20 20 2f 2f 2f 20 69 73 20 62 65 69 6e 67 20     /// is being 
11250 66 69 6e 61 6c 69 7a 65 64 2e 0d 0a 20 20 20 20  finalized...    
11260 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
11270 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
11280 65 20 2f 2a 20 70 72 6f 74 65 63 74 65 64 20 76  e /* protected v
11290 69 72 74 75 61 6c 20 2a 2f 20 76 6f 69 64 20 44  irtual */ void D
112a0 69 73 70 6f 73 65 28 62 6f 6f 6c 20 64 69 73 70  ispose(bool disp
112b0 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20  osing)..        
112c0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  {..            t
112d0 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
112e0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
112f0 20 20 20 69 66 20 28 21 64 69 73 70 6f 73 65 64     if (!disposed
11300 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
11310 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
11320 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69            if (di
11330 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20 20  sposing)..      
11340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
11350 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11360 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
11370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
11390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
113a0 20 20 20 20 20 20 20 2f 2f 20 64 69 73 70 6f 73         // dispos
113b0 65 20 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72  e managed resour
113c0 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20  ces here.....   
113d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
113e0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
113f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11400 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
11410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11420 20 20 20 20 20 69 66 20 28 78 49 6e 70 75 74 20       if (xInput 
11430 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
11440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11450 20 20 20 20 20 20 78 49 6e 70 75 74 20 3d 20 6e        xInput = n
11460 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
11470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11480 69 66 20 28 78 4f 75 74 70 75 74 20 21 3d 20 6e  if (xOutput != n
11490 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
114a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
114b0 20 20 78 4f 75 74 70 75 74 20 3d 20 6e 75 6c 6c    xOutput = null
114c0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
114d0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
114e0 28 73 74 72 65 61 6d 20 21 3d 20 6e 75 6c 6c 29  (stream != null)
114f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
11510 72 65 61 6d 20 3d 20 6e 75 6c 6c 3b 20 2f 2a 20  ream = null; /* 
11520 4e 4f 54 20 4f 57 4e 45 44 20 2a 2f 0d 0a 20 20  NOT OWNED */..  
11530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11540 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
11550 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
11560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11580 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
11590 20 20 20 20 20 20 20 2f 2f 20 72 65 6c 65 61 73         // releas
115a0 65 20 75 6e 6d 61 6e 61 67 65 64 20 72 65 73 6f  e unmanaged reso
115b0 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20  urces here..... 
115c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
115d0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
115e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
115f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
11600 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
11610 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
11620 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79           finally
11630 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
11640 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11650 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
11660 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 45 76       // NOTE: Ev
11670 65 72 79 74 68 69 6e 67 20 73 68 6f 75 6c 64 20  erything should 
11680 62 65 20 66 75 6c 6c 79 20 64 69 73 70 6f 73 65  be fully dispose
11690 64 20 61 74 20 74 68 69 73 20 70 6f 69 6e 74 2e  d at this point.
116a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
116b0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
116c0 20 20 20 20 20 20 64 69 73 70 6f 73 65 64 20 3d        disposed =
116d0 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
116e0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
116f0 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
11700 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
11710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11750 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
11760 20 20 20 23 72 65 67 69 6f 6e 20 44 65 73 74 72     #region Destr
11770 75 63 74 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f  uctor..        /
11780 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
11790 20 20 20 20 20 20 2f 2f 2f 20 46 69 6e 61 6c 69        /// Finali
117a0 7a 65 73 20 74 68 69 73 20 6f 62 6a 65 63 74 20  zes this object 
117b0 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
117c0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
117d0 3e 0d 0a 20 20 20 20 20 20 20 20 7e 53 51 4c 69  >..        ~SQLi
117e0 74 65 53 74 72 65 61 6d 41 64 61 70 74 65 72 28  teStreamAdapter(
117f0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
11800 20 20 20 20 20 20 20 20 20 20 44 69 73 70 6f 73            Dispos
11810 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20  e(false);..     
11820 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
11830 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d  ndregion..    }.
11840 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
11850 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
11860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
118a0 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
118b0 6e 20 53 51 4c 69 74 65 53 65 73 73 69 6f 6e 53  n SQLiteSessionS
118c0 74 72 65 61 6d 4d 61 6e 61 67 65 72 20 43 6c 61  treamManager Cla
118d0 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ss..    /// <sum
118e0 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  mary>..    /// T
118f0 68 69 73 20 63 6c 61 73 73 20 6d 61 6e 61 67 65  his class manage
11900 73 20 61 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 6f  s a collection o
11910 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  f <see cref="SQL
11920 69 74 65 53 74 72 65 61 6d 41 64 61 70 74 65 72  iteStreamAdapter
11930 22 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 69 6e 73  "/>..    /// ins
11940 74 61 6e 63 65 73 2e 20 57 68 65 6e 20 75 73 65  tances. When use
11950 64 2c 20 69 74 20 74 61 6b 65 73 20 72 65 73 70  d, it takes resp
11960 6f 6e 73 69 62 69 6c 69 74 79 20 66 6f 72 20 63  onsibility for c
11970 72 65 61 74 69 6e 67 2c 20 72 65 74 75 72 6e 69  reating, returni
11980 6e 67 2c 0d 0a 20 20 20 20 2f 2f 2f 20 61 6e 64  ng,..    /// and
11990 20 64 69 73 70 6f 73 69 6e 67 20 6f 66 20 69 74   disposing of it
119a0 73 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  s <see cref="SQL
119b0 69 74 65 53 74 72 65 61 6d 41 64 61 70 74 65 72  iteStreamAdapter
119c0 22 2f 3e 20 69 6e 73 74 61 6e 63 65 73 2e 0d 0a  "/> instances...
119d0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
119e0 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  y>..    internal
119f0 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51   sealed class SQ
11a00 4c 69 74 65 53 65 73 73 69 6f 6e 53 74 72 65 61  LiteSessionStrea
11a10 6d 4d 61 6e 61 67 65 72 20 3a 20 49 44 69 73 70  mManager : IDisp
11a20 6f 73 61 62 6c 65 0d 0a 20 20 20 20 7b 0d 0a 20  osable..    {.. 
11a30 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
11a40 72 69 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20  rivate Data..   
11a50 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
11a60 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
11a70 54 68 65 20 6d 61 6e 61 67 65 64 20 63 6f 6c 6c  The managed coll
11a80 65 63 74 69 6f 6e 20 6f 66 20 3c 73 65 65 20 63  ection of <see c
11a90 72 65 66 3d 22 53 51 4c 69 74 65 53 74 72 65 61  ref="SQLiteStrea
11aa0 6d 41 64 61 70 74 65 72 22 20 2f 3e 0d 0a 20 20  mAdapter" />..  
11ab0 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e        /// instan
11ac0 63 65 73 2c 20 6b 65 79 65 64 20 62 79 20 74 68  ces, keyed by th
11ad0 65 69 72 20 61 73 73 6f 63 69 61 74 65 64 20 3c  eir associated <
11ae0 73 65 65 20 63 72 65 66 3d 22 53 74 72 65 61 6d  see cref="Stream
11af0 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  " />..        //
11b00 2f 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  / instance...   
11b10 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
11b20 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
11b30 76 61 74 65 20 44 69 63 74 69 6f 6e 61 72 79 3c  vate Dictionary<
11b40 53 74 72 65 61 6d 2c 20 53 51 4c 69 74 65 53 74  Stream, SQLiteSt
11b50 72 65 61 6d 41 64 61 70 74 65 72 3e 20 73 74 72  reamAdapter> str
11b60 65 61 6d 41 64 61 70 74 65 72 73 3b 0d 0a 0d 0a  eamAdapters;....
11b70 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
11b80 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
11b90 2f 2f 20 54 68 65 20 66 6c 61 67 73 20 61 73 73  // The flags ass
11ba0 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65  ociated with the
11bb0 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20   connection...  
11bc0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
11bd0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  ary>..        pr
11be0 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e  ivate SQLiteConn
11bf0 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67  ectionFlags flag
11c00 73 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64  s;..        #end
11c10 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
11c20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
11c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
11c70 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
11c80 6c 69 63 20 43 6f 6e 73 74 72 75 63 74 6f 72 73  lic Constructors
11c90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
11ca0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
11cb0 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20   /// Constructs 
11cc0 61 20 6e 65 77 20 69 6e 73 74 61 6e 63 65 20 6f  a new instance o
11cd0 66 20 74 68 69 73 20 63 6c 61 73 73 20 75 73 69  f this class usi
11ce0 6e 67 20 74 68 65 20 73 70 65 63 69 66 69 65 64  ng the specified
11cf0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f  ..        /// co
11d00 6e 6e 65 63 74 69 6f 6e 20 66 6c 61 67 73 2e 0d  nnection flags..
11d10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
11d20 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
11d30 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
11d40 3d 22 66 6c 61 67 73 22 3e 0d 0a 20 20 20 20 20  ="flags">..     
11d50 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73     /// The flags
11d60 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
11d70 20 74 68 65 20 70 61 72 65 6e 74 20 63 6f 6e 6e   the parent conn
11d80 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  ection...       
11d90 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
11da0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
11db0 4c 69 74 65 53 65 73 73 69 6f 6e 53 74 72 65 61  LiteSessionStrea
11dc0 6d 4d 61 6e 61 67 65 72 28 0d 0a 20 20 20 20 20  mManager(..     
11dd0 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e         SQLiteCon
11de0 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61  nectionFlags fla
11df0 67 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  gs..            
11e00 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
11e10 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 66            this.f
11e20 6c 61 67 73 20 3d 20 66 6c 61 67 73 3b 0d 0a 0d  lags = flags;...
11e30 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 69  .            Ini
11e40 74 69 61 6c 69 7a 65 53 74 72 65 61 6d 41 64 61  tializeStreamAda
11e50 70 74 65 72 73 28 29 3b 0d 0a 20 20 20 20 20 20  pters();..      
11e60 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
11e70 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
11e80 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
11e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
11ed0 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
11ee0 69 76 61 74 65 20 4d 65 74 68 6f 64 73 0d 0a 20  ivate Methods.. 
11ef0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
11f00 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
11f10 2f 20 4d 61 6b 65 73 20 73 75 72 65 20 74 68 65  / Makes sure the
11f20 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 6f 66 20 3c   collection of <
11f30 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
11f40 53 74 72 65 61 6d 41 64 61 70 74 65 72 22 20 2f  StreamAdapter" /
11f50 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  >..        /// i
11f60 73 20 63 72 65 61 74 65 64 2e 0d 0a 20 20 20 20  s created...    
11f70 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
11f80 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
11f90 61 74 65 20 76 6f 69 64 20 49 6e 69 74 69 61 6c  ate void Initial
11fa0 69 7a 65 53 74 72 65 61 6d 41 64 61 70 74 65 72  izeStreamAdapter
11fb0 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  s()..        {..
11fc0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
11fd0 73 74 72 65 61 6d 41 64 61 70 74 65 72 73 20 21  streamAdapters !
11fe0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
11ff0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b           return;
12000 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
12010 73 74 72 65 61 6d 41 64 61 70 74 65 72 73 20 3d  streamAdapters =
12020 20 6e 65 77 20 44 69 63 74 69 6f 6e 61 72 79 3c   new Dictionary<
12030 53 74 72 65 61 6d 2c 20 53 51 4c 69 74 65 53 74  Stream, SQLiteSt
12040 72 65 61 6d 41 64 61 70 74 65 72 3e 28 29 3b 0d  reamAdapter>();.
12050 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
12060 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
12070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
120a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
120b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
120c0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
120d0 2f 2f 2f 20 4d 61 6b 65 73 20 73 75 72 65 20 74  /// Makes sure t
120e0 68 65 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 6f 66  he collection of
120f0 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
12100 74 65 53 74 72 65 61 6d 41 64 61 70 74 65 72 22  teStreamAdapter"
12110 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   />..        ///
12120 20 69 73 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20   is disposed... 
12130 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
12140 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
12150 72 69 76 61 74 65 20 76 6f 69 64 20 44 69 73 70  rivate void Disp
12160 6f 73 65 53 74 72 65 61 6d 41 64 61 70 74 65 72  oseStreamAdapter
12170 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  s()..        {..
12180 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
12190 73 74 72 65 61 6d 41 64 61 70 74 65 72 73 20 3d  streamAdapters =
121a0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
121b0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b           return;
121c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
121d0 66 6f 72 65 61 63 68 20 28 4b 65 79 56 61 6c 75  foreach (KeyValu
121e0 65 50 61 69 72 3c 53 74 72 65 61 6d 2c 20 53 51  ePair<Stream, SQ
121f0 4c 69 74 65 53 74 72 65 61 6d 41 64 61 70 74 65  LiteStreamAdapte
12200 72 3e 20 70 61 69 72 0d 0a 20 20 20 20 20 20 20  r> pair..       
12210 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 20               in 
12220 73 74 72 65 61 6d 41 64 61 70 74 65 72 73 29 0d  streamAdapters).
12230 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
12240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12250 53 51 4c 69 74 65 53 74 72 65 61 6d 41 64 61 70  SQLiteStreamAdap
12260 74 65 72 20 73 74 72 65 61 6d 41 64 61 70 74 65  ter streamAdapte
12270 72 20 3d 20 70 61 69 72 2e 56 61 6c 75 65 3b 0d  r = pair.Value;.
12280 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
12290 20 20 20 69 66 20 28 73 74 72 65 61 6d 41 64 61     if (streamAda
122a0 70 74 65 72 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  pter == null).. 
122b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
122c0 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a     continue;....
122d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
122e0 73 74 72 65 61 6d 41 64 61 70 74 65 72 2e 44 69  streamAdapter.Di
122f0 73 70 6f 73 65 28 29 3b 0d 0a 20 20 20 20 20 20  spose();..      
12300 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
12310 20 20 20 20 20 20 20 73 74 72 65 61 6d 41 64 61         streamAda
12320 70 74 65 72 73 2e 43 6c 65 61 72 28 29 3b 0d 0a  pters.Clear();..
12330 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 65              stre
12340 61 6d 41 64 61 70 74 65 72 73 20 3d 20 6e 75 6c  amAdapters = nul
12350 6c 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  l;..        }.. 
12360 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
12370 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
12380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
123a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
123b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
123c0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
123d0 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 4d  #region Public M
123e0 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
123f0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
12400 20 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d         /// Attem
12410 70 74 73 20 74 6f 20 72 65 74 75 72 6e 20 61 20  pts to return a 
12420 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
12430 65 53 74 72 65 61 6d 41 64 61 70 74 65 72 22 20  eStreamAdapter" 
12440 2f 3e 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20  /> instance..   
12450 20 20 20 20 20 2f 2f 2f 20 73 75 69 74 61 62 6c       /// suitabl
12460 65 20 66 6f 72 20 74 68 65 20 73 70 65 63 69 66  e for the specif
12470 69 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22 53  ied <see cref="S
12480 74 72 65 61 6d 22 20 2f 3e 2e 0d 0a 20 20 20 20  tream" />...    
12490 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
124a0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
124b0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 74 72  <param name="str
124c0 65 61 6d 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  eam">..        /
124d0 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
124e0 3d 22 53 74 72 65 61 6d 22 20 2f 3e 20 69 6e 73  ="Stream" /> ins
124f0 74 61 6e 63 65 2e 20 20 49 66 20 74 68 69 73 20  tance.  If this 
12500 76 61 6c 75 65 20 69 73 20 6e 75 6c 6c 2c 20 61  value is null, a
12510 20 6e 75 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f   null..        /
12520 2f 2f 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65  // value will be
12530 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20 20 20   returned...    
12540 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
12550 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
12560 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
12570 20 2f 2f 2f 20 41 20 3c 73 65 65 20 63 72 65 66   /// A <see cref
12580 3d 22 53 51 4c 69 74 65 53 74 72 65 61 6d 41 64  ="SQLiteStreamAd
12590 61 70 74 65 72 22 20 2f 3e 20 69 6e 73 74 61 6e  apter" /> instan
125a0 63 65 2e 20 20 54 79 70 69 63 61 6c 6c 79 2c 20  ce.  Typically, 
125b0 74 68 65 73 65 0d 0a 20 20 20 20 20 20 20 20 2f  these..        /
125c0 2f 2f 20 61 72 65 20 61 6c 77 61 79 73 20 66 72  // are always fr
125d0 65 73 68 6c 79 20 63 72 65 61 74 65 64 3b 20 68  eshly created; h
125e0 6f 77 65 76 65 72 2c 20 74 68 69 73 20 6d 65 74  owever, this met
125f0 68 6f 64 20 69 73 20 64 65 73 69 67 6e 65 64 20  hod is designed 
12600 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  to..        /// 
12610 72 65 74 75 72 6e 20 74 68 65 20 65 78 69 73 74  return the exist
12620 69 6e 67 20 3c 73 65 65 20 63 72 65 66 3d 22 53  ing <see cref="S
12630 51 4c 69 74 65 53 74 72 65 61 6d 41 64 61 70 74  QLiteStreamAdapt
12640 65 72 22 20 2f 3e 20 69 6e 73 74 61 6e 63 65 0d  er" /> instance.
12650 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 73 73  .        /// ass
12660 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65  ociated with the
12670 20 73 70 65 63 69 66 69 65 64 20 73 74 72 65 61   specified strea
12680 6d 2c 20 73 68 6f 75 6c 64 20 6f 6e 65 20 65 78  m, should one ex
12690 69 73 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ist...        //
126a0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
126b0 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
126c0 69 74 65 53 74 72 65 61 6d 41 64 61 70 74 65 72  iteStreamAdapter
126d0 20 47 65 74 41 64 61 70 74 65 72 28 0d 0a 20 20   GetAdapter(..  
126e0 20 20 20 20 20 20 20 20 20 20 53 74 72 65 61 6d            Stream
126f0 20 73 74 72 65 61 6d 0d 0a 20 20 20 20 20 20 20   stream..       
12700 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
12710 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 43  {..            C
12720 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
12730 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
12740 66 20 28 73 74 72 65 61 6d 20 3d 3d 20 6e 75 6c  f (stream == nul
12750 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
12760 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
12770 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
12780 53 51 4c 69 74 65 53 74 72 65 61 6d 41 64 61 70  SQLiteStreamAdap
12790 74 65 72 20 73 74 72 65 61 6d 41 64 61 70 74 65  ter streamAdapte
127a0 72 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  r;....          
127b0 20 20 69 66 20 28 73 74 72 65 61 6d 41 64 61 70    if (streamAdap
127c0 74 65 72 73 2e 54 72 79 47 65 74 56 61 6c 75 65  ters.TryGetValue
127d0 28 73 74 72 65 61 6d 2c 20 6f 75 74 20 73 74 72  (stream, out str
127e0 65 61 6d 41 64 61 70 74 65 72 29 29 0d 0a 20 20  eamAdapter))..  
127f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
12800 74 75 72 6e 20 73 74 72 65 61 6d 41 64 61 70 74  turn streamAdapt
12810 65 72 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  er;....         
12820 20 20 20 73 74 72 65 61 6d 41 64 61 70 74 65 72     streamAdapter
12830 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 53 74 72   = new SQLiteStr
12840 65 61 6d 41 64 61 70 74 65 72 28 73 74 72 65 61  eamAdapter(strea
12850 6d 2c 20 66 6c 61 67 73 29 3b 0d 0a 20 20 20 20  m, flags);..    
12860 20 20 20 20 20 20 20 20 73 74 72 65 61 6d 41 64          streamAd
12870 61 70 74 65 72 73 2e 41 64 64 28 73 74 72 65 61  apters.Add(strea
12880 6d 2c 20 73 74 72 65 61 6d 41 64 61 70 74 65 72  m, streamAdapter
12890 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
128a0 20 20 72 65 74 75 72 6e 20 73 74 72 65 61 6d 41    return streamA
128b0 64 61 70 74 65 72 3b 0d 0a 20 20 20 20 20 20 20  dapter;..       
128c0 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
128d0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
128e0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
128f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12920 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
12930 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69       #region IDi
12940 73 70 6f 73 61 62 6c 65 20 4d 65 6d 62 65 72 73  sposable Members
12950 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
12960 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
12970 20 2f 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66   /// Disposes of
12980 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73   this object ins
12990 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20  tance...        
129a0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
129b0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76          public v
129c0 6f 69 64 20 44 69 73 70 6f 73 65 28 29 0d 0a 20  oid Dispose().. 
129d0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
129e0 20 20 20 20 20 20 44 69 73 70 6f 73 65 28 74 72        Dispose(tr
129f0 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ue);..          
12a00 20 20 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e    GC.SuppressFin
12a10 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20  alize(this);..  
12a20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
12a30 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
12a40 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
12a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
12a90 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
12aa0 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20 22 50  n IDisposable "P
12ab0 61 74 74 65 72 6e 22 20 4d 65 6d 62 65 72 73 0d  attern" Members.
12ac0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
12ad0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
12ae0 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
12af0 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74  this object inst
12b00 61 6e 63 65 20 68 61 73 20 62 65 65 6e 20 64 69  ance has been di
12b10 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 20  sposed...       
12b20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
12b30 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
12b40 20 62 6f 6f 6c 20 64 69 73 70 6f 73 65 64 3b 0d   bool disposed;.
12b50 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
12b60 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
12b70 20 20 2f 2f 2f 20 54 68 72 6f 77 73 20 61 6e 20    /// Throws an 
12b80 65 78 63 65 70 74 69 6f 6e 20 69 66 20 74 68 69  exception if thi
12b90 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  s object instanc
12ba0 65 20 68 61 73 20 62 65 65 6e 20 64 69 73 70 6f  e has been dispo
12bb0 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  sed...        //
12bc0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
12bd0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 76 6f        private vo
12be0 69 64 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64  id CheckDisposed
12bf0 28 29 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  () /* throw */..
12c00 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 54          {..#if T
12c10 48 52 4f 57 5f 4f 4e 5f 44 49 53 50 4f 53 45 44  HROW_ON_DISPOSED
12c20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
12c30 20 28 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20   (disposed)..   
12c40 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
12c50 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
12c60 77 20 6e 65 77 20 4f 62 6a 65 63 74 44 69 73 70  w new ObjectDisp
12c70 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 28 0d 0a  osedException(..
12c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12c90 20 20 20 20 74 79 70 65 6f 66 28 53 51 4c 69 74      typeof(SQLit
12ca0 65 53 65 73 73 69 6f 6e 53 74 72 65 61 6d 4d 61  eSessionStreamMa
12cb0 6e 61 67 65 72 29 2e 4e 61 6d 65 29 3b 0d 0a 20  nager).Name);.. 
12cc0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
12cd0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
12ce0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
12cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12d30 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
12d40 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
12d50 20 20 20 20 20 2f 2f 2f 20 44 69 73 70 6f 73 65       /// Dispose
12d60 73 20 6f 72 20 66 69 6e 61 6c 69 7a 65 73 20 74  s or finalizes t
12d70 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
12d80 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nce...        //
12d90 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
12da0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
12db0 20 6e 61 6d 65 3d 22 64 69 73 70 6f 73 69 6e 67   name="disposing
12dc0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
12dd0 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 69 73  Non-zero if this
12de0 20 6f 62 6a 65 63 74 20 69 73 20 62 65 69 6e 67   object is being
12df0 20 64 69 73 70 6f 73 65 64 3b 20 6f 74 68 65 72   disposed; other
12e00 77 69 73 65 2c 20 74 68 69 73 20 6f 62 6a 65 63  wise, this objec
12e10 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  t..        /// i
12e20 73 20 62 65 69 6e 67 20 66 69 6e 61 6c 69 7a 65  s being finalize
12e30 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
12e40 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
12e50 20 20 70 72 69 76 61 74 65 20 2f 2a 20 70 72 6f    private /* pro
12e60 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 2a  tected virtual *
12e70 2f 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 62  / void Dispose(b
12e80 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a  ool disposing)..
12e90 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
12ea0 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
12eb0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
12ec0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
12ed0 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20  disposed)..     
12ee0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
12ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12f00 20 20 69 66 20 28 64 69 73 70 6f 73 69 6e 67 29    if (disposing)
12f10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12f20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
12f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12f40 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
12f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f60 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20  /////..         
12f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
12f80 2f 20 64 69 73 70 6f 73 65 20 6d 61 6e 61 67 65  / dispose manage
12f90 64 20 72 65 73 6f 75 72 63 65 73 20 68 65 72 65  d resources here
12fa0 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  .....           
12fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f               ///
12fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12fe0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
12ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 44 69 73               Dis
13000 70 6f 73 65 53 74 72 65 61 6d 41 64 61 70 74 65  poseStreamAdapte
13010 72 73 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  rs();..         
13020 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
13030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13040 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
13050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
13070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13080 2f 2f 20 72 65 6c 65 61 73 65 20 75 6e 6d 61 6e  // release unman
13090 61 67 65 64 20 72 65 73 6f 75 72 63 65 73 20 68  aged resources h
130a0 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20  ere.....        
130b0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
130c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
130d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
130e0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
130f0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
13100 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
13110 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20    finally..     
13120 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
13130 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
13140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
13150 20 4e 4f 54 45 3a 20 45 76 65 72 79 74 68 69 6e   NOTE: Everythin
13160 67 20 73 68 6f 75 6c 64 20 62 65 20 66 75 6c 6c  g should be full
13170 79 20 64 69 73 70 6f 73 65 64 20 61 74 20 74 68  y disposed at th
13180 69 73 20 70 6f 69 6e 74 2e 0d 0a 20 20 20 20 20  is point...     
13190 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
131a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
131b0 69 73 70 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d  isposed = true;.
131c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
131d0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
131e0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
131f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
13200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13240 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
13250 69 6f 6e 20 44 65 73 74 72 75 63 74 6f 72 0d 0a  ion Destructor..
13260 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
13270 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
13280 2f 2f 20 46 69 6e 61 6c 69 7a 65 73 20 74 68 69  // Finalizes thi
13290 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  s object instanc
132a0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
132b0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
132c0 20 20 20 20 7e 53 51 4c 69 74 65 53 65 73 73 69      ~SQLiteSessi
132d0 6f 6e 53 74 72 65 61 6d 4d 61 6e 61 67 65 72 28  onStreamManager(
132e0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
132f0 20 20 20 20 20 20 20 20 20 20 44 69 73 70 6f 73            Dispos
13300 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20  e(false);..     
13310 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
13320 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d  ndregion..    }.
13330 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
13340 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
13350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13390 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
133a0 6e 20 53 51 4c 69 74 65 43 68 61 6e 67 65 47 72  n SQLiteChangeGr
133b0 6f 75 70 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f  oup Class..    /
133c0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
133d0 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73    /// This class
133e0 20 72 65 70 72 65 73 65 6e 74 73 20 61 20 67 72   represents a gr
133f0 6f 75 70 20 6f 66 20 63 68 61 6e 67 65 20 73 65  oup of change se
13400 74 73 20 28 6f 72 20 70 61 74 63 68 20 73 65 74  ts (or patch set
13410 73 29 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  s)...    /// </s
13420 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74  ummary>..    int
13430 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61  ernal sealed cla
13440 73 73 20 53 51 4c 69 74 65 43 68 61 6e 67 65 47  ss SQLiteChangeG
13450 72 6f 75 70 20 3a 20 49 53 51 4c 69 74 65 43 68  roup : ISQLiteCh
13460 61 6e 67 65 47 72 6f 75 70 0d 0a 20 20 20 20 7b  angeGroup..    {
13470 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
13480 6e 20 50 72 69 76 61 74 65 20 44 61 74 61 0d 0a  n Private Data..
13490 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
134a0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
134b0 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
134c0 3d 22 53 51 4c 69 74 65 53 65 73 73 69 6f 6e 53  ="SQLiteSessionS
134d0 74 72 65 61 6d 4d 61 6e 61 67 65 72 22 20 2f 3e  treamManager" />
134e0 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69   instance associ
134f0 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ated..        //
13500 2f 20 77 69 74 68 20 74 68 69 73 20 63 68 61 6e  / with this chan
13510 67 65 20 67 72 6f 75 70 2e 0d 0a 20 20 20 20 20  ge group...     
13520 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
13530 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
13540 74 65 20 53 51 4c 69 74 65 53 65 73 73 69 6f 6e  te SQLiteSession
13550 53 74 72 65 61 6d 4d 61 6e 61 67 65 72 20 73 74  StreamManager st
13560 72 65 61 6d 4d 61 6e 61 67 65 72 3b 0d 0a 0d 0a  reamManager;....
13570 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
13580 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
13590 2f 2f 20 54 68 65 20 66 6c 61 67 73 20 61 73 73  // The flags ass
135a0 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65  ociated with the
135b0 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20   connection...  
135c0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
135d0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  ary>..        pr
135e0 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e  ivate SQLiteConn
135f0 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67  ectionFlags flag
13600 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  s;....        //
13610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13650 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
13660 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
13670 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
13680 6e 61 74 69 76 65 20 68 61 6e 64 6c 65 20 66 6f  native handle fo
13690 72 20 74 68 69 73 20 63 68 61 6e 67 65 20 67 72  r this change gr
136a0 6f 75 70 2e 20 20 54 68 69 73 20 77 69 6c 6c 20  oup.  This will 
136b0 62 65 20 64 65 6c 65 74 65 64 20 77 68 65 6e 0d  be deleted when.
136c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 69  .        /// thi
136d0 73 20 69 6e 73 74 61 6e 63 65 20 69 73 20 64 69  s instance is di
136e0 73 70 6f 73 65 64 20 6f 72 20 66 69 6e 61 6c 69  sposed or finali
136f0 7a 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  zed...        //
13700 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
13710 20 20 20 20 20 20 70 72 69 76 61 74 65 20 49 6e        private In
13720 74 50 74 72 20 63 68 61 6e 67 65 47 72 6f 75 70  tPtr changeGroup
13730 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  ;..        #endr
13740 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
13750 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
13760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13790 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
137a0 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c      #region Publ
137b0 69 63 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d  ic Constructors.
137c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
137d0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
137e0 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61  /// Constructs a
137f0 20 6e 65 77 20 69 6e 73 74 61 6e 63 65 20 6f 66   new instance of
13800 20 74 68 69 73 20 63 6c 61 73 73 20 75 73 69 6e   this class usin
13810 67 20 74 68 65 20 73 70 65 63 69 66 69 65 64 0d  g the specified.
13820 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e  .        /// con
13830 6e 65 63 74 69 6f 6e 20 66 6c 61 67 73 2e 0d 0a  nection flags...
13840 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
13850 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
13860 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
13870 22 66 6c 61 67 73 22 3e 0d 0a 20 20 20 20 20 20  "flags">..      
13880 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73 20    /// The flags 
13890 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
138a0 74 68 65 20 70 61 72 65 6e 74 20 63 6f 6e 6e 65  the parent conne
138b0 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ction...        
138c0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
138d0 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
138e0 69 74 65 43 68 61 6e 67 65 47 72 6f 75 70 28 0d  iteChangeGroup(.
138f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
13900 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
13910 67 73 20 66 6c 61 67 73 0d 0a 20 20 20 20 20 20  gs flags..      
13920 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
13930 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
13940 74 68 69 73 2e 66 6c 61 67 73 20 3d 20 66 6c 61  this.flags = fla
13950 67 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  gs;....         
13960 20 20 20 49 6e 69 74 69 61 6c 69 7a 65 48 61 6e     InitializeHan
13970 64 6c 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  dle();..        
13980 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
13990 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
139a0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
139b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
139c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
139d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
139e0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
139f0 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76      #region Priv
13a00 61 74 65 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  ate Methods..   
13a10 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
13a20 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
13a30 54 68 72 6f 77 73 20 61 6e 20 65 78 63 65 70 74  Throws an except
13a40 69 6f 6e 20 69 66 20 74 68 65 20 6e 61 74 69 76  ion if the nativ
13a50 65 20 63 68 61 6e 67 65 20 67 72 6f 75 70 20 68  e change group h
13a60 61 6e 64 6c 65 20 69 73 20 69 6e 76 61 6c 69 64  andle is invalid
13a70 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
13a80 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
13a90 20 20 20 70 72 69 76 61 74 65 20 76 6f 69 64 20     private void 
13aa0 43 68 65 63 6b 48 61 6e 64 6c 65 28 29 0d 0a 20  CheckHandle().. 
13ab0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
13ac0 20 20 20 20 20 20 69 66 20 28 63 68 61 6e 67 65        if (change
13ad0 47 72 6f 75 70 20 3d 3d 20 49 6e 74 50 74 72 2e  Group == IntPtr.
13ae0 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
13af0 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
13b00 20 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f   InvalidOperatio
13b10 6e 45 78 63 65 70 74 69 6f 6e 28 22 63 68 61 6e  nException("chan
13b20 67 65 20 67 72 6f 75 70 20 6e 6f 74 20 6f 70 65  ge group not ope
13b30 6e 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  n");..        }.
13b40 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
13b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13b90 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
13ba0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
13bb0 20 20 20 20 20 2f 2f 2f 20 4d 61 6b 65 73 20 73       /// Makes s
13bc0 75 72 65 20 74 68 65 20 6e 61 74 69 76 65 20 63  ure the native c
13bd0 68 61 6e 67 65 20 67 72 6f 75 70 20 68 61 6e 64  hange group hand
13be0 6c 65 20 69 73 20 76 61 6c 69 64 2c 20 63 72 65  le is valid, cre
13bf0 61 74 69 6e 67 20 69 74 20 69 66 0d 0a 20 20 20  ating it if..   
13c00 20 20 20 20 20 2f 2f 2f 20 6e 65 63 65 73 73 61       /// necessa
13c10 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry...        ///
13c20 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
13c30 20 20 20 20 20 70 72 69 76 61 74 65 20 76 6f 69       private voi
13c40 64 20 49 6e 69 74 69 61 6c 69 7a 65 48 61 6e 64  d InitializeHand
13c50 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  le()..        {.
13c60 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
13c70 28 63 68 61 6e 67 65 47 72 6f 75 70 20 21 3d 20  (changeGroup != 
13c80 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
13c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
13ca0 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  turn;....       
13cb0 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
13cc0 43 6f 64 65 20 72 63 20 3d 20 55 6e 73 61 66 65  Code rc = Unsafe
13cd0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
13ce0 6c 69 74 65 33 63 68 61 6e 67 65 67 72 6f 75 70  lite3changegroup
13cf0 5f 6e 65 77 28 0d 0a 20 20 20 20 20 20 20 20 20  _new(..         
13d00 20 20 20 20 20 20 20 72 65 66 20 63 68 61 6e 67         ref chang
13d10 65 47 72 6f 75 70 29 3b 0d 0a 0d 0a 20 20 20 20  eGroup);....    
13d20 20 20 20 20 20 20 20 20 69 66 20 28 72 63 20 21          if (rc !
13d30 3d 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  = SQLiteErrorCod
13d40 65 2e 4f 6b 29 0d 0a 20 20 20 20 20 20 20 20 20  e.Ok)..         
13d50 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
13d60 20 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e   SQLiteException
13d70 28 72 63 2c 20 22 73 71 6c 69 74 65 33 63 68 61  (rc, "sqlite3cha
13d80 6e 67 65 67 72 6f 75 70 5f 6e 65 77 22 29 3b 0d  ngegroup_new");.
13d90 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
13da0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
13db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
13df0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
13e00 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
13e10 2f 2f 2f 20 4d 61 6b 65 73 20 73 75 72 65 20 74  /// Makes sure t
13e20 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
13e30 4c 69 74 65 53 65 73 73 69 6f 6e 53 74 72 65 61  LiteSessionStrea
13e40 6d 4d 61 6e 61 67 65 72 22 20 2f 3e 20 69 6e 73  mManager" /> ins
13e50 74 61 6e 63 65 0d 0a 20 20 20 20 20 20 20 20 2f  tance..        /
13e60 2f 2f 20 69 73 20 61 76 61 69 6c 61 62 6c 65 2c  // is available,
13e70 20 63 72 65 61 74 69 6e 67 20 69 74 20 69 66 20   creating it if 
13e80 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 20 20  necessary...    
13e90 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
13ea0 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
13eb0 61 74 65 20 76 6f 69 64 20 49 6e 69 74 69 61 6c  ate void Initial
13ec0 69 7a 65 53 74 72 65 61 6d 4d 61 6e 61 67 65 72  izeStreamManager
13ed0 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
13ee0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73             if (s
13ef0 74 72 65 61 6d 4d 61 6e 61 67 65 72 20 21 3d 20  treamManager != 
13f00 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
13f10 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a         return;..
13f20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74  ..            st
13f30 72 65 61 6d 4d 61 6e 61 67 65 72 20 3d 20 6e 65  reamManager = ne
13f40 77 20 53 51 4c 69 74 65 53 65 73 73 69 6f 6e 53  w SQLiteSessionS
13f50 74 72 65 61 6d 4d 61 6e 61 67 65 72 28 66 6c 61  treamManager(fla
13f60 67 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  gs);..        }.
13f70 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
13f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13fc0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
13fd0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
13fe0 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74       /// Attempt
13ff0 73 20 74 6f 20 72 65 74 75 72 6e 20 61 20 3c 73  s to return a <s
14000 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 53  ee cref="SQLiteS
14010 74 72 65 61 6d 41 64 61 70 74 65 72 22 20 2f 3e  treamAdapter" />
14020 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20 20   instance..     
14030 20 20 20 2f 2f 2f 20 73 75 69 74 61 62 6c 65 20     /// suitable 
14040 66 6f 72 20 74 68 65 20 73 70 65 63 69 66 69 65  for the specifie
14050 64 20 3c 73 65 65 20 63 72 65 66 3d 22 53 74 72  d <see cref="Str
14060 65 61 6d 22 20 2f 3e 2e 0d 0a 20 20 20 20 20 20  eam" />...      
14070 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
14080 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
14090 61 72 61 6d 20 6e 61 6d 65 3d 22 73 74 72 65 61  aram name="strea
140a0 6d 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  m">..        ///
140b0 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
140c0 53 74 72 65 61 6d 22 20 2f 3e 20 69 6e 73 74 61  Stream" /> insta
140d0 6e 63 65 2e 20 20 49 66 20 74 68 69 73 20 76 61  nce.  If this va
140e0 6c 75 65 20 69 73 20 6e 75 6c 6c 2c 20 61 20 6e  lue is null, a n
140f0 75 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ull..        ///
14100 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 20 72   value will be r
14110 65 74 75 72 6e 65 64 2e 0d 0a 20 20 20 20 20 20  eturned...      
14120 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
14130 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
14140 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
14150 2f 2f 20 41 20 3c 73 65 65 20 63 72 65 66 3d 22  // A <see cref="
14160 53 51 4c 69 74 65 53 74 72 65 61 6d 41 64 61 70  SQLiteStreamAdap
14170 74 65 72 22 20 2f 3e 20 69 6e 73 74 61 6e 63 65  ter" /> instance
14180 2e 20 20 54 79 70 69 63 61 6c 6c 79 2c 20 74 68  .  Typically, th
14190 65 73 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ese..        ///
141a0 20 61 72 65 20 61 6c 77 61 79 73 20 66 72 65 73   are always fres
141b0 68 6c 79 20 63 72 65 61 74 65 64 3b 20 68 6f 77  hly created; how
141c0 65 76 65 72 2c 20 74 68 69 73 20 6d 65 74 68 6f  ever, this metho
141d0 64 20 69 73 20 64 65 73 69 67 6e 65 64 20 74 6f  d is designed to
141e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 72 65  ..        /// re
141f0 74 75 72 6e 20 74 68 65 20 65 78 69 73 74 69 6e  turn the existin
14200 67 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  g <see cref="SQL
14210 69 74 65 53 74 72 65 61 6d 41 64 61 70 74 65 72  iteStreamAdapter
14220 22 20 2f 3e 20 69 6e 73 74 61 6e 63 65 0d 0a 20  " /> instance.. 
14230 20 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63         /// assoc
14240 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20 73  iated with the s
14250 70 65 63 69 66 69 65 64 20 73 74 72 65 61 6d 2c  pecified stream,
14260 20 73 68 6f 75 6c 64 20 6f 6e 65 20 65 78 69 73   should one exis
14270 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
14280 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
14290 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
142a0 74 65 53 74 72 65 61 6d 41 64 61 70 74 65 72 20  teStreamAdapter 
142b0 47 65 74 53 74 72 65 61 6d 41 64 61 70 74 65 72  GetStreamAdapter
142c0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
142d0 74 72 65 61 6d 20 73 74 72 65 61 6d 0d 0a 20 20  tream stream..  
142e0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
142f0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
14300 20 20 20 20 49 6e 69 74 69 61 6c 69 7a 65 53 74      InitializeSt
14310 72 65 61 6d 4d 61 6e 61 67 65 72 28 29 3b 0d 0a  reamManager();..
14320 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
14330 74 75 72 6e 20 73 74 72 65 61 6d 4d 61 6e 61 67  turn streamManag
14340 65 72 2e 47 65 74 41 64 61 70 74 65 72 28 73 74  er.GetAdapter(st
14350 72 65 61 6d 29 3b 0d 0a 20 20 20 20 20 20 20 20  ream);..        
14360 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
14370 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
14380 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
14390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
143a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
143b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
143c0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
143d0 20 20 20 20 23 72 65 67 69 6f 6e 20 49 53 51 4c      #region ISQL
143e0 69 74 65 43 68 61 6e 67 65 47 72 6f 75 70 20 4d  iteChangeGroup M
143f0 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20  embers..        
14400 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
14410 20 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d         /// Attem
14420 70 74 73 20 74 6f 20 61 64 64 20 61 20 63 68 61  pts to add a cha
14430 6e 67 65 20 73 65 74 20 28 6f 72 20 70 61 74 63  nge set (or patc
14440 68 20 73 65 74 29 20 74 6f 20 74 68 69 73 20 63  h set) to this c
14450 68 61 6e 67 65 20 67 72 6f 75 70 0d 0a 20 20 20  hange group..   
14460 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63       /// instanc
14470 65 2e 20 20 54 68 65 20 75 6e 64 65 72 6c 79 69  e.  The underlyi
14480 6e 67 20 64 61 74 61 20 6d 75 73 74 20 62 65 20  ng data must be 
14490 63 6f 6e 74 61 69 6e 65 64 20 65 6e 74 69 72 65  contained entire
144a0 6c 79 20 77 69 74 68 69 6e 0d 0a 20 20 20 20 20  ly within..     
144b0 20 20 20 2f 2f 2f 20 74 68 65 20 3c 70 61 72 61     /// the <para
144c0 6d 72 65 66 20 6e 61 6d 65 3d 22 72 61 77 44 61  mref name="rawDa
144d0 74 61 22 20 2f 3e 20 62 79 74 65 20 61 72 72 61  ta" /> byte arra
144e0 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y...        /// 
144f0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
14500 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
14510 61 6d 65 3d 22 72 61 77 44 61 74 61 22 3e 0d 0a  ame="rawData">..
14520 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
14530 72 61 77 20 62 79 74 65 20 64 61 74 61 20 66 6f  raw byte data fo
14540 72 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  r the specified 
14550 63 68 61 6e 67 65 20 73 65 74 20 28 6f 72 20 70  change set (or p
14560 61 74 63 68 20 73 65 74 29 2e 0d 0a 20 20 20 20  atch set)...    
14570 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
14580 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
14590 20 76 6f 69 64 20 41 64 64 43 68 61 6e 67 65 53   void AddChangeS
145a0 65 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et(..           
145b0 20 62 79 74 65 5b 5d 20 72 61 77 44 61 74 61 0d   byte[] rawData.
145c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
145d0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
145e0 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70         CheckDisp
145f0 6f 73 65 64 28 29 3b 0d 0a 20 20 20 20 20 20 20  osed();..       
14600 20 20 20 20 20 43 68 65 63 6b 48 61 6e 64 6c 65       CheckHandle
14610 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
14620 20 20 20 53 51 4c 69 74 65 53 65 73 73 69 6f 6e     SQLiteSession
14630 48 65 6c 70 65 72 73 2e 43 68 65 63 6b 52 61 77  Helpers.CheckRaw
14640 44 61 74 61 28 72 61 77 44 61 74 61 29 3b 0d 0a  Data(rawData);..
14650 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
14660 74 50 74 72 20 70 44 61 74 61 20 3d 20 49 6e 74  tPtr pData = Int
14670 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20  Ptr.Zero;....   
14680 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
14690 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
146a0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74               int
146b0 20 6e 44 61 74 61 20 3d 20 30 3b 0d 0a 0d 0a 20   nData = 0;.... 
146c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
146d0 44 61 74 61 20 3d 20 53 51 4c 69 74 65 42 79 74  Data = SQLiteByt
146e0 65 73 2e 54 6f 49 6e 74 50 74 72 28 72 61 77 44  es.ToIntPtr(rawD
146f0 61 74 61 2c 20 72 65 66 20 6e 44 61 74 61 29 3b  ata, ref nData);
14700 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
14710 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43      SQLiteErrorC
14720 6f 64 65 20 72 63 20 3d 20 55 6e 73 61 66 65 4e  ode rc = UnsafeN
14730 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
14740 69 74 65 33 63 68 61 6e 67 65 67 72 6f 75 70 5f  ite3changegroup_
14750 61 64 64 28 0d 0a 20 20 20 20 20 20 20 20 20 20  add(..          
14760 20 20 20 20 20 20 20 20 20 20 63 68 61 6e 67 65            change
14770 47 72 6f 75 70 2c 20 6e 44 61 74 61 2c 20 70 44  Group, nData, pD
14780 61 74 61 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ata);....       
14790 20 20 20 20 20 20 20 20 20 69 66 20 28 72 63 20           if (rc 
147a0 21 3d 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  != SQLiteErrorCo
147b0 64 65 2e 4f 6b 29 0d 0a 20 20 20 20 20 20 20 20  de.Ok)..        
147c0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
147d0 77 20 6e 65 77 20 53 51 4c 69 74 65 45 78 63 65  w new SQLiteExce
147e0 70 74 69 6f 6e 28 72 63 2c 20 22 73 71 6c 69 74  ption(rc, "sqlit
147f0 65 33 63 68 61 6e 67 65 67 72 6f 75 70 5f 61 64  e3changegroup_ad
14800 64 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  d");..          
14810 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
14820 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20   finally..      
14830 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
14840 20 20 20 20 20 20 20 20 20 69 66 20 28 70 44 61           if (pDa
14850 74 61 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  ta != IntPtr.Zer
14860 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
14870 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
14880 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
14890 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70 44 61  eMemory.Free(pDa
148a0 74 61 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ta);..          
148b0 20 20 20 20 20 20 20 20 20 20 70 44 61 74 61 20            pData 
148c0 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
148d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
148e0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
148f0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
14900 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
14910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
14950 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
14960 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
14970 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f   /// Attempts to
14980 20 61 64 64 20 61 20 63 68 61 6e 67 65 20 73 65   add a change se
14990 74 20 28 6f 72 20 70 61 74 63 68 20 73 65 74 29  t (or patch set)
149a0 20 74 6f 20 74 68 69 73 20 63 68 61 6e 67 65 20   to this change 
149b0 67 72 6f 75 70 0d 0a 20 20 20 20 20 20 20 20 2f  group..        /
149c0 2f 2f 20 69 6e 73 74 61 6e 63 65 2e 20 20 54 68  // instance.  Th
149d0 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 64 61 74  e underlying dat
149e0 61 20 77 69 6c 6c 20 62 65 20 72 65 61 64 20 66  a will be read f
149f0 72 6f 6d 20 74 68 65 20 73 70 65 63 69 66 69 65  rom the specifie
14a00 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  d..        /// <
14a10 73 65 65 20 63 72 65 66 3d 22 53 74 72 65 61 6d  see cref="Stream
14a20 22 20 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  " />...        /
14a30 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
14a40 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
14a50 6d 20 6e 61 6d 65 3d 22 73 74 72 65 61 6d 22 3e  m name="stream">
14a60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
14a70 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 74 72  e <see cref="Str
14a80 65 61 6d 22 20 2f 3e 20 69 6e 73 74 61 6e 63 65  eam" /> instance
14a90 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20   containing the 
14aa0 72 61 77 20 63 68 61 6e 67 65 20 73 65 74 0d 0a  raw change set..
14ab0 20 20 20 20 20 20 20 20 2f 2f 2f 20 28 6f 72 20          /// (or 
14ac0 70 61 74 63 68 20 73 65 74 29 20 64 61 74 61 20  patch set) data 
14ad0 74 6f 20 72 65 61 64 2e 0d 0a 20 20 20 20 20 20  to read...      
14ae0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
14af0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76          public v
14b00 6f 69 64 20 41 64 64 43 68 61 6e 67 65 53 65 74  oid AddChangeSet
14b10 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
14b20 74 72 65 61 6d 20 73 74 72 65 61 6d 0d 0a 20 20  tream stream..  
14b30 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
14b40 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
14b50 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65      CheckDispose
14b60 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  d();..          
14b70 20 20 43 68 65 63 6b 48 61 6e 64 6c 65 28 29 3b    CheckHandle();
14b80 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
14b90 69 66 20 28 73 74 72 65 61 6d 20 3d 3d 20 6e 75  if (stream == nu
14ba0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
14bb0 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41       throw new A
14bc0 72 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65 70  rgumentNullExcep
14bd0 74 69 6f 6e 28 22 73 74 72 65 61 6d 22 29 3b 0d  tion("stream");.
14be0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  ...            S
14bf0 51 4c 69 74 65 53 74 72 65 61 6d 41 64 61 70 74  QLiteStreamAdapt
14c00 65 72 20 73 74 72 65 61 6d 41 64 61 70 74 65 72  er streamAdapter
14c10 20 3d 20 47 65 74 53 74 72 65 61 6d 41 64 61 70   = GetStreamAdap
14c20 74 65 72 28 73 74 72 65 61 6d 29 3b 0d 0a 0d 0a  ter(stream);....
14c30 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
14c40 73 74 72 65 61 6d 41 64 61 70 74 65 72 20 3d 3d  streamAdapter ==
14c50 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
14c60 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
14c70 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
14c80 20 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e   SQLiteException
14c90 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
14ca0 20 20 20 20 20 20 20 22 63 6f 75 6c 64 20 6e 6f         "could no
14cb0 74 20 67 65 74 20 6f 72 20 63 72 65 61 74 65 20  t get or create 
14cc0 61 64 61 70 74 65 72 20 66 6f 72 20 69 6e 70 75  adapter for inpu
14cd0 74 20 73 74 72 65 61 6d 22 29 3b 0d 0a 20 20 20  t stream");..   
14ce0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
14cf0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
14d00 45 72 72 6f 72 43 6f 64 65 20 72 63 20 3d 20 55  ErrorCode rc = U
14d10 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
14d20 64 73 2e 73 71 6c 69 74 65 33 63 68 61 6e 67 65  ds.sqlite3change
14d30 67 72 6f 75 70 5f 61 64 64 5f 73 74 72 6d 28 0d  group_add_strm(.
14d40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14d50 20 63 68 61 6e 67 65 47 72 6f 75 70 2c 20 73 74   changeGroup, st
14d60 72 65 61 6d 41 64 61 70 74 65 72 2e 47 65 74 49  reamAdapter.GetI
14d70 6e 70 75 74 44 65 6c 65 67 61 74 65 28 29 2c 20  nputDelegate(), 
14d80 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d  IntPtr.Zero);...
14d90 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
14da0 28 72 63 20 21 3d 20 53 51 4c 69 74 65 45 72 72  (rc != SQLiteErr
14db0 6f 72 43 6f 64 65 2e 4f 6b 29 0d 0a 20 20 20 20  orCode.Ok)..    
14dc0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
14dd0 77 20 6e 65 77 20 53 51 4c 69 74 65 45 78 63 65  w new SQLiteExce
14de0 70 74 69 6f 6e 28 72 63 2c 20 22 73 71 6c 69 74  ption(rc, "sqlit
14df0 65 33 63 68 61 6e 67 65 67 72 6f 75 70 5f 61 64  e3changegroup_ad
14e00 64 5f 73 74 72 6d 22 29 3b 0d 0a 20 20 20 20 20  d_strm");..     
14e10 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
14e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e60 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
14e70 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
14e80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 74  ..        /// At
14e90 74 65 6d 70 74 73 20 74 6f 20 63 72 65 61 74 65  tempts to create
14ea0 20 61 6e 64 20 72 65 74 75 72 6e 2c 20 76 69 61   and return, via
14eb0 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d   <paramref name=
14ec0 22 72 61 77 44 61 74 61 22 20 2f 3e 2c 20 74 68  "rawData" />, th
14ed0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  e..        /// c
14ee0 6f 6d 62 69 6e 65 64 20 73 65 74 20 6f 66 20 63  ombined set of c
14ef0 68 61 6e 67 65 73 20 72 65 70 72 65 73 65 6e 74  hanges represent
14f00 65 64 20 62 79 20 74 68 69 73 20 63 68 61 6e 67  ed by this chang
14f10 65 20 67 72 6f 75 70 20 69 6e 73 74 61 6e 63 65  e group instance
14f20 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
14f30 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
14f40 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
14f50 6d 65 3d 22 72 61 77 44 61 74 61 22 3e 0d 0a 20  me="rawData">.. 
14f60 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20         /// Upon 
14f70 73 75 63 63 65 73 73 2c 20 74 68 69 73 20 77 69  success, this wi
14f80 6c 6c 20 63 6f 6e 74 61 69 6e 20 74 68 65 20 72  ll contain the r
14f90 61 77 20 62 79 74 65 20 64 61 74 61 20 66 6f 72  aw byte data for
14fa0 20 61 6c 6c 20 74 68 65 0d 0a 20 20 20 20 20 20   all the..      
14fb0 20 20 2f 2f 2f 20 63 68 61 6e 67 65 73 20 69 6e    /// changes in
14fc0 20 74 68 69 73 20 63 68 61 6e 67 65 20 67 72 6f   this change gro
14fd0 75 70 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  up instance...  
14fe0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
14ff0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  m>..        publ
15000 69 63 20 76 6f 69 64 20 43 72 65 61 74 65 43 68  ic void CreateCh
15010 61 6e 67 65 53 65 74 28 0d 0a 20 20 20 20 20 20  angeSet(..      
15020 20 20 20 20 20 20 72 65 66 20 62 79 74 65 5b 5d        ref byte[]
15030 20 72 61 77 44 61 74 61 0d 0a 20 20 20 20 20 20   rawData..      
15040 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
15050 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
15060 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
15070 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 43 68  ..            Ch
15080 65 63 6b 48 61 6e 64 6c 65 28 29 3b 0d 0a 0d 0a  eckHandle();....
15090 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
150a0 74 72 20 70 44 61 74 61 20 3d 20 49 6e 74 50 74  tr pData = IntPt
150b0 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20  r.Zero;....     
150c0 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
150d0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
150e0 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6e             int n
150f0 44 61 74 61 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20  Data = 0;....   
15100 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
15110 69 74 65 45 72 72 6f 72 43 6f 64 65 20 72 63 20  iteErrorCode rc 
15120 3d 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  = UnsafeNativeMe
15130 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 63 68 61  thods.sqlite3cha
15140 6e 67 65 67 72 6f 75 70 5f 6f 75 74 70 75 74 28  ngegroup_output(
15150 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15160 20 20 20 20 20 20 63 68 61 6e 67 65 47 72 6f 75        changeGrou
15170 70 2c 20 72 65 66 20 6e 44 61 74 61 2c 20 72 65  p, ref nData, re
15180 66 20 70 44 61 74 61 29 3b 0d 0a 0d 0a 20 20 20  f pData);....   
15190 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
151a0 28 72 63 20 21 3d 20 53 51 4c 69 74 65 45 72 72  (rc != SQLiteErr
151b0 6f 72 43 6f 64 65 2e 4f 6b 29 0d 0a 20 20 20 20  orCode.Ok)..    
151c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
151d0 74 68 72 6f 77 20 6e 65 77 20 53 51 4c 69 74 65  throw new SQLite
151e0 45 78 63 65 70 74 69 6f 6e 28 72 63 2c 20 22 73  Exception(rc, "s
151f0 71 6c 69 74 65 33 63 68 61 6e 67 65 67 72 6f 75  qlite3changegrou
15200 70 5f 6f 75 74 70 75 74 22 29 3b 0d 0a 0d 0a 20  p_output");.... 
15210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
15220 61 77 44 61 74 61 20 3d 20 53 51 4c 69 74 65 42  awData = SQLiteB
15230 79 74 65 73 2e 46 72 6f 6d 49 6e 74 50 74 72 28  ytes.FromIntPtr(
15240 70 44 61 74 61 2c 20 6e 44 61 74 61 29 3b 0d 0a  pData, nData);..
15250 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
15260 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c             final
15270 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ly..            
15280 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
15290 20 20 20 69 66 20 28 70 44 61 74 61 20 21 3d 20     if (pData != 
152a0 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
152b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
152c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
152d0 20 20 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72       SQLiteMemor
152e0 79 2e 46 72 65 65 55 6e 74 72 61 63 6b 65 64 28  y.FreeUntracked(
152f0 70 44 61 74 61 29 3b 0d 0a 20 20 20 20 20 20 20  pData);..       
15300 20 20 20 20 20 20 20 20 20 20 20 20 20 70 44 61               pDa
15310 74 61 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  ta = IntPtr.Zero
15320 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
15330 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
15340 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
15350 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
15360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
153a0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
153b0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
153c0 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73      /// Attempts
153d0 20 74 6f 20 63 72 65 61 74 65 20 61 6e 64 20 77   to create and w
153e0 72 69 74 65 2c 20 76 69 61 20 3c 70 61 72 61 6d  rite, via <param
153f0 72 65 66 20 6e 61 6d 65 3d 22 73 74 72 65 61 6d  ref name="stream
15400 22 20 2f 3e 2c 20 74 68 65 0d 0a 20 20 20 20 20  " />, the..     
15410 20 20 20 2f 2f 2f 20 63 6f 6d 62 69 6e 65 64 20     /// combined 
15420 73 65 74 20 6f 66 20 63 68 61 6e 67 65 73 20 72  set of changes r
15430 65 70 72 65 73 65 6e 74 65 64 20 62 79 20 74 68  epresented by th
15440 69 73 20 63 68 61 6e 67 65 20 67 72 6f 75 70 20  is change group 
15450 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
15460 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
15470 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
15480 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 74 72 65  param name="stre
15490 61 6d 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  am">..        //
154a0 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20  / Upon success, 
154b0 74 68 65 20 72 61 77 20 62 79 74 65 20 64 61 74  the raw byte dat
154c0 61 20 66 6f 72 20 61 6c 6c 20 74 68 65 20 63 68  a for all the ch
154d0 61 6e 67 65 73 20 69 6e 20 74 68 69 73 20 63 68  anges in this ch
154e0 61 6e 67 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ange..        //
154f0 2f 20 67 72 6f 75 70 20 69 6e 73 74 61 6e 63 65  / group instance
15500 20 77 69 6c 6c 20 62 65 20 77 72 69 74 74 65 6e   will be written
15510 20 74 6f 20 74 68 69 73 20 3c 73 65 65 20 63 72   to this <see cr
15520 65 66 3d 22 53 74 72 65 61 6d 22 20 2f 3e 2e 0d  ef="Stream" />..
15530 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
15540 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70  aram>..        p
15550 75 62 6c 69 63 20 76 6f 69 64 20 43 72 65 61 74  ublic void Creat
15560 65 43 68 61 6e 67 65 53 65 74 28 0d 0a 20 20 20  eChangeSet(..   
15570 20 20 20 20 20 20 20 20 20 53 74 72 65 61 6d 20           Stream 
15580 73 74 72 65 61 6d 0d 0a 20 20 20 20 20 20 20 20  stream..        
15590 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
155a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 43 68  ..            Ch
155b0 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a  eckDisposed();..
155c0 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63              Chec
155d0 6b 48 61 6e 64 6c 65 28 29 3b 0d 0a 0d 0a 20 20  kHandle();....  
155e0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74            if (st
155f0 72 65 61 6d 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  ream == null).. 
15600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
15610 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e  hrow new Argumen
15620 74 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28 22  tNullException("
15630 73 74 72 65 61 6d 22 29 3b 0d 0a 0d 0a 20 20 20  stream");....   
15640 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 53           SQLiteS
15650 74 72 65 61 6d 41 64 61 70 74 65 72 20 73 74 72  treamAdapter str
15660 65 61 6d 41 64 61 70 74 65 72 20 3d 20 47 65 74  eamAdapter = Get
15670 53 74 72 65 61 6d 41 64 61 70 74 65 72 28 73 74  StreamAdapter(st
15680 72 65 61 6d 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ream);....      
15690 20 20 20 20 20 20 69 66 20 28 73 74 72 65 61 6d        if (stream
156a0 41 64 61 70 74 65 72 20 3d 3d 20 6e 75 6c 6c 29  Adapter == null)
156b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
156c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
156d0 20 74 68 72 6f 77 20 6e 65 77 20 53 51 4c 69 74   throw new SQLit
156e0 65 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20  eException(..   
156f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15700 20 22 63 6f 75 6c 64 20 6e 6f 74 20 67 65 74 20   "could not get 
15710 6f 72 20 63 72 65 61 74 65 20 61 64 61 70 74 65  or create adapte
15720 72 20 66 6f 72 20 6f 75 74 70 75 74 20 73 74 72  r for output str
15730 65 61 6d 22 29 3b 0d 0a 20 20 20 20 20 20 20 20  eam");..        
15740 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
15750 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
15760 43 6f 64 65 20 72 63 20 3d 20 55 6e 73 61 66 65  Code rc = Unsafe
15770 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
15780 6c 69 74 65 33 63 68 61 6e 67 65 67 72 6f 75 70  lite3changegroup
15790 5f 6f 75 74 70 75 74 5f 73 74 72 6d 28 0d 0a 20  _output_strm(.. 
157a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
157b0 68 61 6e 67 65 47 72 6f 75 70 2c 20 73 74 72 65  hangeGroup, stre
157c0 61 6d 41 64 61 70 74 65 72 2e 47 65 74 4f 75 74  amAdapter.GetOut
157d0 70 75 74 44 65 6c 65 67 61 74 65 28 29 2c 20 49  putDelegate(), I
157e0 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a  ntPtr.Zero);....
157f0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
15800 72 63 20 21 3d 20 53 51 4c 69 74 65 45 72 72 6f  rc != SQLiteErro
15810 72 43 6f 64 65 2e 4f 6b 29 0d 0a 20 20 20 20 20  rCode.Ok)..     
15820 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
15830 20 6e 65 77 20 53 51 4c 69 74 65 45 78 63 65 70   new SQLiteExcep
15840 74 69 6f 6e 28 72 63 2c 20 22 73 71 6c 69 74 65  tion(rc, "sqlite
15850 33 63 68 61 6e 67 65 67 72 6f 75 70 5f 6f 75 74  3changegroup_out
15860 70 75 74 5f 73 74 72 6d 22 29 3b 0d 0a 20 20 20  put_strm");..   
15870 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
15880 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
15890 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
158a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
158b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
158c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
158d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
158e0 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
158f0 20 49 44 69 73 70 6f 73 61 62 6c 65 20 4d 65 6d   IDisposable Mem
15900 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  bers..        //
15910 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
15920 20 20 20 20 20 2f 2f 2f 20 44 69 73 70 6f 73 65       /// Dispose
15930 73 20 6f 66 20 74 68 69 73 20 6f 62 6a 65 63 74  s of this object
15940 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20   instance...    
15950 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
15960 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
15970 69 63 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28  ic void Dispose(
15980 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
15990 20 20 20 20 20 20 20 20 20 20 44 69 73 70 6f 73            Dispos
159a0 65 28 74 72 75 65 29 3b 0d 0a 20 20 20 20 20 20  e(true);..      
159b0 20 20 20 20 20 20 47 43 2e 53 75 70 70 72 65 73        GC.Suppres
159c0 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b  sFinalize(this);
159d0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
159e0 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
159f0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
15a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15a40 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
15a50 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c  egion IDisposabl
15a60 65 20 22 50 61 74 74 65 72 6e 22 20 4d 65 6d 62  e "Pattern" Memb
15a70 65 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ers..        ///
15a80 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
15a90 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
15aa0 20 69 66 20 74 68 69 73 20 6f 62 6a 65 63 74 20   if this object 
15ab0 69 6e 73 74 61 6e 63 65 20 68 61 73 20 62 65 65  instance has bee
15ac0 6e 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20  n disposed...   
15ad0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
15ae0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
15af0 76 61 74 65 20 62 6f 6f 6c 20 64 69 73 70 6f 73  vate bool dispos
15b00 65 64 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ed;....        /
15b10 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
15b20 20 20 20 20 20 20 2f 2f 2f 20 54 68 72 6f 77 73        /// Throws
15b30 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 20 69 66   an exception if
15b40 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73   this object ins
15b50 74 61 6e 63 65 20 68 61 73 20 62 65 65 6e 20 64  tance has been d
15b60 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20  isposed...      
15b70 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
15b80 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
15b90 65 20 76 6f 69 64 20 43 68 65 63 6b 44 69 73 70  e void CheckDisp
15ba0 6f 73 65 64 28 29 20 2f 2a 20 74 68 72 6f 77 20  osed() /* throw 
15bb0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  */..        {..#
15bc0 69 66 20 54 48 52 4f 57 5f 4f 4e 5f 44 49 53 50  if THROW_ON_DISP
15bd0 4f 53 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20  OSED..          
15be0 20 20 69 66 20 28 64 69 73 70 6f 73 65 64 29 0d    if (disposed).
15bf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
15c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15c10 74 68 72 6f 77 20 6e 65 77 20 4f 62 6a 65 63 74  throw new Object
15c20 44 69 73 70 6f 73 65 64 45 78 63 65 70 74 69 6f  DisposedExceptio
15c30 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
15c40 20 20 20 20 20 20 20 20 74 79 70 65 6f 66 28 53          typeof(S
15c50 51 4c 69 74 65 43 68 61 6e 67 65 47 72 6f 75 70  QLiteChangeGroup
15c60 29 2e 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20  ).Name);..      
15c70 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
15c80 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
15c90 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
15ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
15ce0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
15cf0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
15d00 2f 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 72 20  /// Disposes or 
15d10 66 69 6e 61 6c 69 7a 65 73 20 74 68 69 73 20 6f  finalizes this o
15d20 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d  bject instance..
15d30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
15d40 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
15d50 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
15d60 3d 22 64 69 73 70 6f 73 69 6e 67 22 3e 0d 0a 20  ="disposing">.. 
15d70 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a         /// Non-z
15d80 65 72 6f 20 69 66 20 74 68 69 73 20 6f 62 6a 65  ero if this obje
15d90 63 74 20 69 73 20 62 65 69 6e 67 20 64 69 73 70  ct is being disp
15da0 6f 73 65 64 3b 20 6f 74 68 65 72 77 69 73 65 2c  osed; otherwise,
15db0 20 74 68 69 73 20 6f 62 6a 65 63 74 0d 0a 20 20   this object..  
15dc0 20 20 20 20 20 20 2f 2f 2f 20 69 73 20 62 65 69        /// is bei
15dd0 6e 67 20 66 69 6e 61 6c 69 7a 65 64 2e 0d 0a 20  ng finalized... 
15de0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
15df0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  am>..        pri
15e00 76 61 74 65 20 2f 2a 20 70 72 6f 74 65 63 74 65  vate /* protecte
15e10 64 20 76 69 72 74 75 61 6c 20 2a 2f 20 76 6f 69  d virtual */ voi
15e20 64 20 44 69 73 70 6f 73 65 28 62 6f 6f 6c 20 64  d Dispose(bool d
15e30 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20  isposing)..     
15e40 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
15e50 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
15e60 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
15e70 20 20 20 20 20 20 69 66 20 28 21 64 69 73 70 6f        if (!dispo
15e80 73 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20  sed)..          
15e90 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
15ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
15eb0 28 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20  (disposing)..   
15ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15ed0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
15ee0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
15ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15f20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 69 73            // dis
15f30 70 6f 73 65 20 6d 61 6e 61 67 65 64 20 72 65 73  pose managed res
15f40 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a  ources here.....
15f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15f60 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
15f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
15f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15fa0 20 20 20 20 20 20 20 20 69 66 20 28 73 74 72 65          if (stre
15fb0 61 6d 4d 61 6e 61 67 65 72 20 21 3d 20 6e 75 6c  amManager != nul
15fc0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
15fd0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
15fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15ff0 20 20 20 20 20 20 20 20 20 20 20 73 74 72 65 61             strea
16000 6d 4d 61 6e 61 67 65 72 2e 44 69 73 70 6f 73 65  mManager.Dispose
16010 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
16020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16030 20 73 74 72 65 61 6d 4d 61 6e 61 67 65 72 20 3d   streamManager =
16040 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20   null;..        
16050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16060 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
16070 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
16080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
160a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
160b0 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20  //////..        
160c0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 72              // r
160d0 65 6c 65 61 73 65 20 75 6e 6d 61 6e 61 67 65 64  elease unmanaged
160e0 20 72 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e   resources here.
160f0 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
16100 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
16110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
16130 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16140 20 20 20 20 20 20 69 66 20 28 63 68 61 6e 67 65        if (change
16150 47 72 6f 75 70 20 21 3d 20 49 6e 74 50 74 72 2e  Group != IntPtr.
16160 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
16170 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
16180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16190 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
161a0 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
161b0 33 63 68 61 6e 67 65 67 72 6f 75 70 5f 64 65 6c  3changegroup_del
161c0 65 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ete(..          
161d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
161e0 20 20 63 68 61 6e 67 65 47 72 6f 75 70 29 3b 0d    changeGroup);.
161f0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
16200 20 20 20 20 20 20 20 20 20 20 20 63 68 61 6e 67             chang
16210 65 47 72 6f 75 70 20 3d 20 49 6e 74 50 74 72 2e  eGroup = IntPtr.
16220 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20  Zero;..         
16230 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
16240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
16250 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
16260 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61              fina
16270 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lly..           
16280 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
16290 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
162a0 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
162b0 20 45 76 65 72 79 74 68 69 6e 67 20 73 68 6f 75   Everything shou
162c0 6c 64 20 62 65 20 66 75 6c 6c 79 20 64 69 73 70  ld be fully disp
162d0 6f 73 65 64 20 61 74 20 74 68 69 73 20 70 6f 69  osed at this poi
162e0 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nt...           
162f0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
16300 20 20 20 20 20 20 20 20 20 64 69 73 70 6f 73 65           dispose
16310 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  d = true;..     
16320 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
16330 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
16340 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
16350 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
16360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
163a0 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65        #region De
163b0 73 74 72 75 63 74 6f 72 0d 0a 20 20 20 20 20 20  structor..      
163c0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
163d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 46 69 6e  .        /// Fin
163e0 61 6c 69 7a 65 73 20 74 68 69 73 20 6f 62 6a 65  alizes this obje
163f0 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  ct instance...  
16400 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
16410 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 7e 53  ary>..        ~S
16420 51 4c 69 74 65 43 68 61 6e 67 65 47 72 6f 75 70  QLiteChangeGroup
16430 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
16440 20 20 20 20 20 20 20 20 20 20 20 44 69 73 70 6f             Dispo
16450 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20  se(false);..    
16460 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
16470 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d  endregion..    }
16480 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
16490 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
164a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
164b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
164c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
164d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
164e0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
164f0 6f 6e 20 53 51 4c 69 74 65 53 65 73 73 69 6f 6e  on SQLiteSession
16500 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20   Class..    /// 
16510 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
16520 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 72 65  // This class re
16530 70 72 65 73 65 6e 74 73 20 74 68 65 20 63 68 61  presents the cha
16540 6e 67 65 20 74 72 61 63 6b 69 6e 67 20 73 65 73  nge tracking ses
16550 73 69 6f 6e 20 61 73 73 6f 63 69 61 74 65 64 20  sion associated 
16560 77 69 74 68 20 61 0d 0a 20 20 20 20 2f 2f 2f 20  with a..    /// 
16570 64 61 74 61 62 61 73 65 2e 0d 0a 20 20 20 20 2f  database...    /
16580 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
16590 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c     internal seal
165a0 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 53  ed class SQLiteS
165b0 65 73 73 69 6f 6e 20 3a 20 53 51 4c 69 74 65 43  ession : SQLiteC
165c0 6f 6e 6e 65 63 74 69 6f 6e 4c 6f 63 6b 2c 20 49  onnectionLock, I
165d0 53 51 4c 69 74 65 53 65 73 73 69 6f 6e 0d 0a 20  SQLiteSession.. 
165e0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72     {..        #r
165f0 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61  egion Private Da
16600 74 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ta..        /// 
16610 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
16620 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
16630 63 72 65 66 3d 22 53 51 4c 69 74 65 53 65 73 73  cref="SQLiteSess
16640 69 6f 6e 53 74 72 65 61 6d 4d 61 6e 61 67 65 72  ionStreamManager
16650 22 20 2f 3e 20 69 6e 73 74 61 6e 63 65 20 61 73  " /> instance as
16660 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20  sociated..      
16670 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20    /// with this 
16680 73 65 73 73 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  session...      
16690 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
166a0 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
166b0 65 20 53 51 4c 69 74 65 53 65 73 73 69 6f 6e 53  e SQLiteSessionS
166c0 74 72 65 61 6d 4d 61 6e 61 67 65 72 20 73 74 72  treamManager str
166d0 65 61 6d 4d 61 6e 61 67 65 72 3b 0d 0a 0d 0a 20  eamManager;.... 
166e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
166f0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
16700 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68  / The name of th
16710 65 20 64 61 74 61 62 61 73 65 20 28 65 2e 67 2e  e database (e.g.
16720 20 22 6d 61 69 6e 22 29 20 66 6f 72 20 74 68 69   "main") for thi
16730 73 20 73 65 73 73 69 6f 6e 2e 0d 0a 20 20 20 20  s session...    
16740 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
16750 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
16760 61 74 65 20 73 74 72 69 6e 67 20 64 61 74 61 62  ate string datab
16770 61 73 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20  aseName;....    
16780 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
16790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
167a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
167b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
167c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
167d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
167e0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
167f0 2f 20 54 68 65 20 6e 61 74 69 76 65 20 68 61 6e  / The native han
16800 64 6c 65 20 66 6f 72 20 74 68 69 73 20 73 65 73  dle for this ses
16810 73 69 6f 6e 2e 20 20 54 68 69 73 20 77 69 6c 6c  sion.  This will
16820 20 62 65 20 64 65 6c 65 74 65 64 20 77 68 65 6e   be deleted when
16830 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68  ..        /// th
16840 69 73 20 69 6e 73 74 61 6e 63 65 20 69 73 20 64  is instance is d
16850 69 73 70 6f 73 65 64 20 6f 72 20 66 69 6e 61 6c  isposed or final
16860 69 7a 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ized...        /
16870 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
16880 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 49         private I
16890 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 3b 0d 0a  ntPtr session;..
168a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
168b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
168c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
168d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
168e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
168f0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
16900 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
16910 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 65 6c 65      /// The dele
16920 67 61 74 65 20 75 73 65 64 20 74 6f 20 70 72 6f  gate used to pro
16930 76 69 64 65 20 74 61 62 6c 65 20 66 69 6c 74 65  vide table filte
16940 72 69 6e 67 20 74 6f 20 74 68 65 20 6e 61 74 69  ring to the nati
16950 76 65 20 41 50 49 2e 0d 0a 20 20 20 20 20 20 20  ve API...       
16960 20 2f 2f 2f 20 49 74 20 77 69 6c 6c 20 62 65 20   /// It will be 
16970 6e 75 6c 6c 20 2d 4f 52 2d 20 70 6f 69 6e 74 20  null -OR- point 
16980 74 6f 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  to the <see cref
16990 3d 22 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74  ="Filter" /> met
169a0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
169b0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
169c0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 55 6e        private Un
169d0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
169e0 73 2e 78 53 65 73 73 69 6f 6e 46 69 6c 74 65 72  s.xSessionFilter
169f0 20 78 46 69 6c 74 65 72 3b 0d 0a 0d 0a 20 20 20   xFilter;....   
16a00 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
16a10 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
16a20 54 68 65 20 6d 61 6e 61 67 65 64 20 63 61 6c 6c  The managed call
16a30 62 61 63 6b 20 75 73 65 64 20 74 6f 20 66 69 6c  back used to fil
16a40 74 65 72 20 74 61 62 6c 65 73 20 66 6f 72 20 74  ter tables for t
16a50 68 69 73 20 73 65 73 73 69 6f 6e 2e 20 20 53 65  his session.  Se
16a60 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76  t..        /// v
16a70 69 61 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ia the <see cref
16a80 3d 22 53 65 74 54 61 62 6c 65 46 69 6c 74 65 72  ="SetTableFilter
16a90 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
16aa0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
16ab0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  ary>..        pr
16ac0 69 76 61 74 65 20 53 65 73 73 69 6f 6e 54 61 62  ivate SessionTab
16ad0 6c 65 46 69 6c 74 65 72 43 61 6c 6c 62 61 63 6b  leFilterCallback
16ae0 20 74 61 62 6c 65 46 69 6c 74 65 72 43 61 6c 6c   tableFilterCall
16af0 62 61 63 6b 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  back;....       
16b00 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
16b10 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
16b20 6f 70 74 69 6f 6e 61 6c 20 61 70 70 6c 69 63 61  optional applica
16b30 74 69 6f 6e 2d 64 65 66 69 6e 65 64 20 63 6f 6e  tion-defined con
16b40 74 65 78 74 20 64 61 74 61 20 74 68 61 74 20 77  text data that w
16b50 61 73 20 70 61 73 73 65 64 20 74 6f 0d 0a 20 20  as passed to..  
16b60 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 3c 73        /// the <s
16b70 65 65 20 63 72 65 66 3d 22 53 65 74 54 61 62 6c  ee cref="SetTabl
16b80 65 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68  eFilter" /> meth
16b90 6f 64 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20  od.  This value 
16ba0 6d 61 79 20 62 65 20 6e 75 6c 6c 2e 0d 0a 20 20  may be null...  
16bb0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
16bc0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  ary>..        pr
16bd0 69 76 61 74 65 20 6f 62 6a 65 63 74 20 74 61 62  ivate object tab
16be0 6c 65 46 69 6c 74 65 72 43 6c 69 65 6e 74 44 61  leFilterClientDa
16bf0 74 61 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e  ta;..        #en
16c00 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
16c10 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
16c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
16c60 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75        #region Pu
16c70 62 6c 69 63 20 43 6f 6e 73 74 72 75 63 74 6f 72  blic Constructor
16c80 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
16c90 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16ca0 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73    /// Constructs
16cb0 20 61 20 6e 65 77 20 69 6e 73 74 61 6e 63 65 20   a new instance 
16cc0 6f 66 20 74 68 69 73 20 63 6c 61 73 73 20 75 73  of this class us
16cd0 69 6e 67 20 74 68 65 20 73 70 65 63 69 66 69 65  ing the specifie
16ce0 64 20 77 72 61 70 70 65 64 0d 0a 20 20 20 20 20  d wrapped..     
16cf0 20 20 20 2f 2f 2f 20 6e 61 74 69 76 65 20 63 6f     /// native co
16d00 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65 20  nnection handle 
16d10 61 6e 64 20 61 73 73 6f 63 69 61 74 65 64 20 66  and associated f
16d20 6c 61 67 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  lags...        /
16d30 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
16d40 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
16d50 6d 20 6e 61 6d 65 3d 22 68 61 6e 64 6c 65 22 3e  m name="handle">
16d60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
16d70 65 20 77 72 61 70 70 65 64 20 6e 61 74 69 76 65  e wrapped native
16d80 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64   connection hand
16d90 6c 65 20 74 6f 20 62 65 20 61 73 73 6f 63 69 61  le to be associa
16da0 74 65 64 20 77 69 74 68 20 74 68 69 73 0d 0a 20  ted with this.. 
16db0 20 20 20 20 20 20 20 2f 2f 2f 20 73 65 73 73 69         /// sessi
16dc0 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
16dd0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
16de0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
16df0 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a 20 20 20  me="flags">..   
16e00 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61       /// The fla
16e10 67 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  gs associated wi
16e20 74 68 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f  th the connectio
16e30 6e 20 72 65 70 72 65 73 65 6e 74 65 64 20 62 79  n represented by
16e40 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
16e50 2f 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65  / <paramref name
16e60 3d 22 68 61 6e 64 6c 65 22 20 2f 3e 20 76 61 6c  ="handle" /> val
16e70 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ue...        ///
16e80 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
16e90 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
16ea0 6d 65 3d 22 64 61 74 61 62 61 73 65 4e 61 6d 65  me="databaseName
16eb0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
16ec0 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  The name of the 
16ed0 64 61 74 61 62 61 73 65 20 28 65 2e 67 2e 20 22  database (e.g. "
16ee0 6d 61 69 6e 22 29 20 66 6f 72 20 74 68 69 73 20  main") for this 
16ef0 73 65 73 73 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  session...      
16f00 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
16f10 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
16f20 51 4c 69 74 65 53 65 73 73 69 6f 6e 28 0d 0a 20  QLiteSession(.. 
16f30 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
16f40 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
16f50 65 20 68 61 6e 64 6c 65 2c 0d 0a 20 20 20 20 20  e handle,..     
16f60 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e         SQLiteCon
16f70 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61  nectionFlags fla
16f80 67 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  gs,..           
16f90 20 73 74 72 69 6e 67 20 64 61 74 61 62 61 73 65   string database
16fa0 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20  Name..          
16fb0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
16fc0 20 3a 20 62 61 73 65 28 68 61 6e 64 6c 65 2c 20   : base(handle, 
16fd0 66 6c 61 67 73 2c 20 74 72 75 65 29 0d 0a 20 20  flags, true)..  
16fe0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
16ff0 20 20 20 20 20 74 68 69 73 2e 64 61 74 61 62 61       this.databa
17000 73 65 4e 61 6d 65 20 3d 20 64 61 74 61 62 61 73  seName = databas
17010 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  eName;....      
17020 20 20 20 20 20 20 49 6e 69 74 69 61 6c 69 7a 65        Initialize
17030 48 61 6e 64 6c 65 28 29 3b 0d 0a 20 20 20 20 20  Handle();..     
17040 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
17050 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
17060 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
17070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
170a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
170b0 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
170c0 72 69 76 61 74 65 20 4d 65 74 68 6f 64 73 0d 0a  rivate Methods..
170d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
170e0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
170f0 2f 2f 20 54 68 72 6f 77 73 20 61 6e 20 65 78 63  // Throws an exc
17100 65 70 74 69 6f 6e 20 69 66 20 74 68 65 20 6e 61  eption if the na
17110 74 69 76 65 20 73 65 73 73 69 6f 6e 20 68 61 6e  tive session han
17120 64 6c 65 20 69 73 20 69 6e 76 61 6c 69 64 2e 0d  dle is invalid..
17130 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
17140 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
17150 20 70 72 69 76 61 74 65 20 76 6f 69 64 20 43 68   private void Ch
17160 65 63 6b 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20  eckHandle()..   
17170 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
17180 20 20 20 20 69 66 20 28 73 65 73 73 69 6f 6e 20      if (session 
17190 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
171a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
171b0 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c   throw new Inval
171c0 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70  idOperationExcep
171d0 74 69 6f 6e 28 22 73 65 73 73 69 6f 6e 20 69 73  tion("session is
171e0 20 6e 6f 74 20 6f 70 65 6e 22 29 3b 0d 0a 20 20   not open");..  
171f0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
17200 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
17210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
17250 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
17260 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
17270 20 4d 61 6b 65 73 20 73 75 72 65 20 74 68 65 20   Makes sure the 
17280 6e 61 74 69 76 65 20 73 65 73 73 69 6f 6e 20 68  native session h
17290 61 6e 64 6c 65 20 69 73 20 76 61 6c 69 64 2c 20  andle is valid, 
172a0 63 72 65 61 74 69 6e 67 20 69 74 20 69 66 0d 0a  creating it if..
172b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 65 63 65          /// nece
172c0 73 73 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20  ssary...        
172d0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
172e0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
172f0 76 6f 69 64 20 49 6e 69 74 69 61 6c 69 7a 65 48  void InitializeH
17300 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  andle()..       
17310 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
17320 69 66 20 28 73 65 73 73 69 6f 6e 20 21 3d 20 49  if (session != I
17330 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
17340 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
17350 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  urn;....        
17360 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43      SQLiteErrorC
17370 6f 64 65 20 72 63 20 3d 20 55 6e 73 61 66 65 4e  ode rc = UnsafeN
17380 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
17390 69 74 65 33 73 65 73 73 69 6f 6e 5f 63 72 65 61  ite3session_crea
173a0 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  te(..           
173b0 20 20 20 20 20 47 65 74 49 6e 74 50 74 72 28 29       GetIntPtr()
173c0 2c 20 53 51 4c 69 74 65 53 74 72 69 6e 67 2e 47  , SQLiteString.G
173d0 65 74 55 74 66 38 42 79 74 65 73 46 72 6f 6d 53  etUtf8BytesFromS
173e0 74 72 69 6e 67 28 64 61 74 61 62 61 73 65 4e 61  tring(databaseNa
173f0 6d 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  me),..          
17400 20 20 20 20 20 20 72 65 66 20 73 65 73 73 69 6f        ref sessio
17410 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  n);....         
17420 20 20 20 69 66 20 28 72 63 20 21 3d 20 53 51 4c     if (rc != SQL
17430 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 29  iteErrorCode.Ok)
17440 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
17450 20 20 74 68 72 6f 77 20 6e 65 77 20 53 51 4c 69    throw new SQLi
17460 74 65 45 78 63 65 70 74 69 6f 6e 28 72 63 2c 20  teException(rc, 
17470 22 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f  "sqlite3session_
17480 63 72 65 61 74 65 22 29 3b 0d 0a 20 20 20 20 20  create");..     
17490 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
174a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
174b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
174c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
174d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
174e0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
174f0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
17500 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
17510 69 73 20 6d 65 74 68 6f 64 20 73 65 74 73 20 75  is method sets u
17520 70 20 74 68 65 20 69 6e 74 65 72 6e 61 6c 20 74  p the internal t
17530 61 62 6c 65 20 66 69 6c 74 65 72 69 6e 67 20 61  able filtering a
17540 73 73 6f 63 69 61 74 65 64 20 73 74 61 74 65 0d  ssociated state.
17550 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 66 20  .        /// of 
17560 74 68 69 73 20 69 6e 73 74 61 6e 63 65 2e 0d 0a  this instance...
17570 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
17580 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
17590 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
175a0 22 63 61 6c 6c 62 61 63 6b 22 3e 0d 0a 20 20 20  "callback">..   
175b0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 74 61 62       /// The tab
175c0 6c 65 20 66 69 6c 74 65 72 20 63 61 6c 6c 62 61  le filter callba
175d0 63 6b 20 2d 4f 52 2d 20 6e 75 6c 6c 20 74 6f 20  ck -OR- null to 
175e0 63 6c 65 61 72 20 61 6e 79 20 65 78 69 73 74 69  clear any existi
175f0 6e 67 20 74 61 62 6c 65 0d 0a 20 20 20 20 20 20  ng table..      
17600 20 20 2f 2f 2f 20 66 69 6c 74 65 72 20 63 61 6c    /// filter cal
17610 6c 62 61 63 6b 2e 0d 0a 20 20 20 20 20 20 20 20  lback...        
17620 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
17630 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
17640 20 6e 61 6d 65 3d 22 63 6c 69 65 6e 74 44 61 74   name="clientDat
17650 61 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  a">..        ///
17660 20 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 61 70   The optional ap
17670 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69 6e 65  plication-define
17680 64 20 63 6f 6e 74 65 78 74 20 64 61 74 61 2e 20  d context data. 
17690 20 54 68 69 73 20 76 61 6c 75 65 20 6d 61 79 20   This value may 
176a0 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  be..        /// 
176b0 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 20 20 2f  null...        /
176c0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
176d0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
176e0 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
176f0 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 55  The <see cref="U
17700 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
17710 64 73 2e 78 53 65 73 73 69 6f 6e 46 69 6c 74 65  ds.xSessionFilte
17720 72 22 20 2f 3e 20 6e 61 74 69 76 65 0d 0a 20 20  r" /> native..  
17730 20 20 20 20 20 20 2f 2f 2f 20 64 65 6c 65 67 61        /// delega
17740 74 65 20 2d 4f 52 2d 20 6e 75 6c 6c 20 74 6f 20  te -OR- null to 
17750 63 6c 65 61 72 20 61 6e 79 20 65 78 69 73 74 69  clear any existi
17760 6e 67 20 74 61 62 6c 65 20 66 69 6c 74 65 72 2e  ng table filter.
17770 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
17780 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
17790 20 20 70 72 69 76 61 74 65 20 55 6e 73 61 66 65    private Unsafe
177a0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 53  NativeMethods.xS
177b0 65 73 73 69 6f 6e 46 69 6c 74 65 72 20 41 70 70  essionFilter App
177c0 6c 79 54 61 62 6c 65 46 69 6c 74 65 72 28 0d 0a  lyTableFilter(..
177d0 20 20 20 20 20 20 20 20 20 20 20 20 53 65 73 73              Sess
177e0 69 6f 6e 54 61 62 6c 65 46 69 6c 74 65 72 43 61  ionTableFilterCa
177f0 6c 6c 62 61 63 6b 20 63 61 6c 6c 62 61 63 6b 2c  llback callback,
17800 20 2f 2a 20 69 6e 3a 20 4e 55 4c 4c 20 4f 4b 20   /* in: NULL OK 
17810 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
17820 6f 62 6a 65 63 74 20 63 6c 69 65 6e 74 44 61 74  object clientDat
17830 61 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  a               
17840 20 20 20 20 20 2f 2a 20 69 6e 3a 20 4e 55 4c 4c       /* in: NULL
17850 20 4f 4b 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   OK */..        
17860 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
17870 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 61  ..            ta
17880 62 6c 65 46 69 6c 74 65 72 43 61 6c 6c 62 61 63  bleFilterCallbac
17890 6b 20 3d 20 63 61 6c 6c 62 61 63 6b 3b 0d 0a 20  k = callback;.. 
178a0 20 20 20 20 20 20 20 20 20 20 20 74 61 62 6c 65             table
178b0 46 69 6c 74 65 72 43 6c 69 65 6e 74 44 61 74 61  FilterClientData
178c0 20 3d 20 63 6c 69 65 6e 74 44 61 74 61 3b 0d 0a   = clientData;..
178d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
178e0 20 28 63 61 6c 6c 62 61 63 6b 20 3d 3d 20 6e 75   (callback == nu
178f0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
17900 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
17910 20 20 20 20 69 66 20 28 78 46 69 6c 74 65 72 20      if (xFilter 
17920 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
17930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 46                xF
17940 69 6c 74 65 72 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d  ilter = null;...
17950 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17960 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
17970 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
17980 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
17990 78 46 69 6c 74 65 72 20 3d 3d 20 6e 75 6c 6c 29  xFilter == null)
179a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
179b0 20 20 78 46 69 6c 74 65 72 20 3d 20 6e 65 77 20    xFilter = new 
179c0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
179d0 6f 64 73 2e 78 53 65 73 73 69 6f 6e 46 69 6c 74  ods.xSessionFilt
179e0 65 72 28 46 69 6c 74 65 72 29 3b 0d 0a 0d 0a 20  er(Filter);.... 
179f0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
17a00 6e 20 78 46 69 6c 74 65 72 3b 0d 0a 20 20 20 20  n xFilter;..    
17a10 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
17a20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
17a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a60 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
17a70 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
17a80 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4d  >..        /// M
17a90 61 6b 65 73 20 73 75 72 65 20 74 68 65 20 3c 73  akes sure the <s
17aa0 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 53  ee cref="SQLiteS
17ab0 65 73 73 69 6f 6e 53 74 72 65 61 6d 4d 61 6e 61  essionStreamMana
17ac0 67 65 72 22 20 2f 3e 20 69 6e 73 74 61 6e 63 65  ger" /> instance
17ad0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 73  ..        /// is
17ae0 20 61 76 61 69 6c 61 62 6c 65 2c 20 63 72 65 61   available, crea
17af0 74 69 6e 67 20 69 74 20 69 66 20 6e 65 63 65 73  ting it if neces
17b00 73 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f  sary...        /
17b10 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
17b20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 76         private v
17b30 6f 69 64 20 49 6e 69 74 69 61 6c 69 7a 65 53 74  oid InitializeSt
17b40 72 65 61 6d 4d 61 6e 61 67 65 72 28 29 0d 0a 20  reamManager().. 
17b50 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
17b60 20 20 20 20 20 20 69 66 20 28 73 74 72 65 61 6d        if (stream
17b70 4d 61 6e 61 67 65 72 20 21 3d 20 6e 75 6c 6c 29  Manager != null)
17b80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
17b90 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20    return;....   
17ba0 20 20 20 20 20 20 20 20 20 73 74 72 65 61 6d 4d           streamM
17bb0 61 6e 61 67 65 72 20 3d 20 6e 65 77 20 53 51 4c  anager = new SQL
17bc0 69 74 65 53 65 73 73 69 6f 6e 53 74 72 65 61 6d  iteSessionStream
17bd0 4d 61 6e 61 67 65 72 28 47 65 74 46 6c 61 67 73  Manager(GetFlags
17be0 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ());..        }.
17bf0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
17c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17c40 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
17c50 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
17c60 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74       /// Attempt
17c70 73 20 74 6f 20 72 65 74 75 72 6e 20 61 20 3c 73  s to return a <s
17c80 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 53  ee cref="SQLiteS
17c90 74 72 65 61 6d 41 64 61 70 74 65 72 22 20 2f 3e  treamAdapter" />
17ca0 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20 20   instance..     
17cb0 20 20 20 2f 2f 2f 20 73 75 69 74 61 62 6c 65 20     /// suitable 
17cc0 66 6f 72 20 74 68 65 20 73 70 65 63 69 66 69 65  for the specifie
17cd0 64 20 3c 73 65 65 20 63 72 65 66 3d 22 53 74 72  d <see cref="Str
17ce0 65 61 6d 22 20 2f 3e 2e 0d 0a 20 20 20 20 20 20  eam" />...      
17cf0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
17d00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
17d10 61 72 61 6d 20 6e 61 6d 65 3d 22 73 74 72 65 61  aram name="strea
17d20 6d 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  m">..        ///
17d30 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
17d40 53 74 72 65 61 6d 22 20 2f 3e 20 69 6e 73 74 61  Stream" /> insta
17d50 6e 63 65 2e 20 20 49 66 20 74 68 69 73 20 76 61  nce.  If this va
17d60 6c 75 65 20 69 73 20 6e 75 6c 6c 2c 20 61 20 6e  lue is null, a n
17d70 75 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ull..        ///
17d80 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 20 72   value will be r
17d90 65 74 75 72 6e 65 64 2e 0d 0a 20 20 20 20 20 20  eturned...      
17da0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
17db0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
17dc0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
17dd0 2f 2f 20 41 20 3c 73 65 65 20 63 72 65 66 3d 22  // A <see cref="
17de0 53 51 4c 69 74 65 53 74 72 65 61 6d 41 64 61 70  SQLiteStreamAdap
17df0 74 65 72 22 20 2f 3e 20 69 6e 73 74 61 6e 63 65  ter" /> instance
17e00 2e 20 20 54 79 70 69 63 61 6c 6c 79 2c 20 74 68  .  Typically, th
17e10 65 73 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ese..        ///
17e20 20 61 72 65 20 61 6c 77 61 79 73 20 66 72 65 73   are always fres
17e30 68 6c 79 20 63 72 65 61 74 65 64 3b 20 68 6f 77  hly created; how
17e40 65 76 65 72 2c 20 74 68 69 73 20 6d 65 74 68 6f  ever, this metho
17e50 64 20 69 73 20 64 65 73 69 67 6e 65 64 20 74 6f  d is designed to
17e60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 72 65  ..        /// re
17e70 74 75 72 6e 20 74 68 65 20 65 78 69 73 74 69 6e  turn the existin
17e80 67 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  g <see cref="SQL
17e90 69 74 65 53 74 72 65 61 6d 41 64 61 70 74 65 72  iteStreamAdapter
17ea0 22 20 2f 3e 20 69 6e 73 74 61 6e 63 65 0d 0a 20  " /> instance.. 
17eb0 20 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63         /// assoc
17ec0 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20 73  iated with the s
17ed0 70 65 63 69 66 69 65 64 20 73 74 72 65 61 6d 2c  pecified stream,
17ee0 20 73 68 6f 75 6c 64 20 6f 6e 65 20 65 78 69 73   should one exis
17ef0 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
17f00 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
17f10 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
17f20 74 65 53 74 72 65 61 6d 41 64 61 70 74 65 72 20  teStreamAdapter 
17f30 47 65 74 53 74 72 65 61 6d 41 64 61 70 74 65 72  GetStreamAdapter
17f40 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
17f50 74 72 65 61 6d 20 73 74 72 65 61 6d 0d 0a 20 20  tream stream..  
17f60 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
17f70 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
17f80 20 20 20 20 49 6e 69 74 69 61 6c 69 7a 65 53 74      InitializeSt
17f90 72 65 61 6d 4d 61 6e 61 67 65 72 28 29 3b 0d 0a  reamManager();..
17fa0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
17fb0 74 75 72 6e 20 73 74 72 65 61 6d 4d 61 6e 61 67  turn streamManag
17fc0 65 72 2e 47 65 74 41 64 61 70 74 65 72 28 73 74  er.GetAdapter(st
17fd0 72 65 61 6d 29 3b 0d 0a 20 20 20 20 20 20 20 20  ream);..        
17fe0 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
17ff0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
18000 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
18010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18040 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
18050 20 20 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69      #region Nati
18060 76 65 20 43 61 6c 6c 62 61 63 6b 20 4d 65 74 68  ve Callback Meth
18070 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ods..        ///
18080 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
18090 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74      /// This met
180a0 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 77 68  hod is called wh
180b0 65 6e 20 64 65 74 65 72 6d 69 6e 69 6e 67 20 69  en determining i
180c0 66 20 61 20 74 61 62 6c 65 20 6e 65 65 64 73 20  f a table needs 
180d0 74 6f 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f  to be..        /
180e0 2f 2f 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 74  // included in t
180f0 68 65 20 74 72 61 63 6b 65 64 20 63 68 61 6e 67  he tracked chang
18100 65 73 20 66 6f 72 20 74 68 65 20 61 73 73 6f 63  es for the assoc
18110 69 61 74 65 64 20 64 61 74 61 62 61 73 65 2e 0d  iated database..
18120 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
18130 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
18140 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
18150 3d 22 63 6f 6e 74 65 78 74 22 3e 0d 0a 20 20 20  ="context">..   
18160 20 20 20 20 20 2f 2f 2f 20 4f 70 74 69 6f 6e 61       /// Optiona
18170 6c 20 65 78 74 72 61 20 63 6f 6e 74 65 78 74 20  l extra context 
18180 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 20 20 43 75  information.  Cu
18190 72 72 65 6e 74 6c 79 2c 20 74 68 69 73 20 77 69  rrently, this wi
181a0 6c 6c 20 61 6c 77 61 79 73 0d 0a 20 20 20 20 20  ll always..     
181b0 20 20 20 2f 2f 2f 20 68 61 76 65 20 61 20 76 61     /// have a va
181c0 6c 75 65 20 6f 66 20 3c 73 65 65 20 63 72 65 66  lue of <see cref
181d0 3d 22 49 6e 74 50 74 72 2e 5a 65 72 6f 22 20 2f  ="IntPtr.Zero" /
181e0 3e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  >...        /// 
181f0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
18200 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
18210 65 3d 22 70 54 62 6c 4e 61 6d 65 22 3e 0d 0a 20  e="pTblName">.. 
18220 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
18230 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
18240 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   the name of the
18250 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20   table...       
18260 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
18270 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
18280 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
18290 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 63 68  / Non-zero if ch
182a0 61 6e 67 65 73 20 74 6f 20 74 68 65 20 73 70 65  anges to the spe
182b0 63 69 66 69 65 64 20 74 61 62 6c 65 20 73 68 6f  cified table sho
182c0 75 6c 64 20 62 65 20 63 6f 6e 73 69 64 65 72 65  uld be considere
182d0 64 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d;..        /// 
182e0 6f 74 68 65 72 77 69 73 65 2c 20 7a 65 72 6f 2e  otherwise, zero.
182f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
18300 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
18310 20 20 70 72 69 76 61 74 65 20 69 6e 74 20 46 69    private int Fi
18320 6c 74 65 72 28 0d 0a 20 20 20 20 20 20 20 20 20  lter(..         
18330 20 20 20 49 6e 74 50 74 72 20 63 6f 6e 74 65 78     IntPtr contex
18340 74 2c 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a  t, /* NOT USED *
18350 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  /..            I
18360 6e 74 50 74 72 20 70 54 62 6c 4e 61 6d 65 0d 0a  ntPtr pTblName..
18370 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
18380 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
18390 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
183a0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
183b0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
183c0 20 74 61 62 6c 65 46 69 6c 74 65 72 43 61 6c 6c   tableFilterCall
183d0 62 61 63 6b 28 74 61 62 6c 65 46 69 6c 74 65 72  back(tableFilter
183e0 43 6c 69 65 6e 74 44 61 74 61 2c 0d 0a 20 20 20  ClientData,..   
183f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18400 20 53 51 4c 69 74 65 53 74 72 69 6e 67 2e 53 74   SQLiteString.St
18410 72 69 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74 50  ringFromUtf8IntP
18420 74 72 28 70 54 62 6c 4e 61 6d 65 29 29 20 3f 20  tr(pTblName)) ? 
18430 31 20 3a 20 30 3b 0d 0a 20 20 20 20 20 20 20 20  1 : 0;..        
18440 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
18450 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74     catch (Except
18460 69 6f 6e 20 65 29 0d 0a 20 20 20 20 20 20 20 20  ion e)..        
18470 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
18480 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
18490 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
184a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
184b0 20 20 20 69 66 20 28 48 65 6c 70 65 72 4d 65 74     if (HelperMet
184c0 68 6f 64 73 2e 4c 6f 67 43 61 6c 6c 62 61 63 6b  hods.LogCallback
184d0 45 78 63 65 70 74 69 6f 6e 73 28 47 65 74 46 6c  Exceptions(GetFl
184e0 61 67 73 28 29 29 29 0d 0a 20 20 20 20 20 20 20  ags()))..       
184f0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
18500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18510 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4c 6f          SQLiteLo
18520 67 2e 4c 6f 67 4d 65 73 73 61 67 65 28 20 2f 2a  g.LogMessage( /*
18530 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
18540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18550 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73         SQLiteBas
18560 65 2e 43 4f 52 5f 45 5f 45 58 43 45 50 54 49 4f  e.COR_E_EXCEPTIO
18570 4e 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  N,..            
18580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18590 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
185a0 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
185b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
185c0 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
185d0 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
185e0 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
185f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18600 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
18610 74 68 6f 64 73 2e 45 78 63 65 70 74 69 6f 6e 4d  thods.ExceptionM
18620 65 73 73 61 67 65 46 6f 72 6d 61 74 2c 0d 0a 20  essageFormat,.. 
18630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18640 20 20 20 20 20 20 20 20 20 20 20 22 78 53 65 73             "xSes
18650 73 69 6f 6e 46 69 6c 74 65 72 22 2c 20 65 29 29  sionFilter", e))
18660 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
18670 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
18680 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
18690 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
186a0 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
186b0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
186c0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
186d0 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
186e0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
186f0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
18700 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
18710 6e 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  n 0;..        }.
18720 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
18730 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
18740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18780 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
18790 20 20 23 72 65 67 69 6f 6e 20 49 53 51 4c 69 74    #region ISQLit
187a0 65 53 65 73 73 69 6f 6e 20 4d 65 6d 62 65 72 73  eSession Members
187b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
187c0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
187d0 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20   /// Determines 
187e0 69 66 20 74 68 69 73 20 73 65 73 73 69 6f 6e 20  if this session 
187f0 69 73 20 63 75 72 72 65 6e 74 6c 79 20 74 72 61  is currently tra
18800 63 6b 69 6e 67 20 63 68 61 6e 67 65 73 20 74 6f  cking changes to
18810 20 69 74 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f   its..        //
18820 2f 20 61 73 73 6f 63 69 61 74 65 64 20 64 61 74  / associated dat
18830 61 62 61 73 65 2e 0d 0a 20 20 20 20 20 20 20 20  abase...        
18840 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
18850 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
18860 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
18870 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 63  // Non-zero if c
18880 68 61 6e 67 65 73 20 74 6f 20 74 68 65 20 61 73  hanges to the as
18890 73 6f 63 69 61 74 65 64 20 64 61 74 61 62 61 73  sociated databas
188a0 65 20 61 72 65 20 62 65 69 6e 67 20 74 72 61 6b  e are being trak
188b0 63 65 64 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ced;..        //
188c0 2f 20 6f 74 68 65 72 77 69 73 65 2c 20 7a 65 72  / otherwise, zer
188d0 6f 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  o...        /// 
188e0 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
188f0 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20      public bool 
18900 49 73 45 6e 61 62 6c 65 64 28 29 0d 0a 20 20 20  IsEnabled()..   
18910 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
18920 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65      CheckDispose
18930 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  d();..          
18940 20 20 43 68 65 63 6b 48 61 6e 64 6c 65 28 29 3b    CheckHandle();
18950 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
18960 72 65 74 75 72 6e 20 55 6e 73 61 66 65 4e 61 74  return UnsafeNat
18970 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
18980 65 33 73 65 73 73 69 6f 6e 5f 65 6e 61 62 6c 65  e3session_enable
18990 28 73 65 73 73 69 6f 6e 2c 20 2d 31 29 20 21 3d  (session, -1) !=
189a0 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a   0;..        }..
189b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
189c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
189d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
189e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
189f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a00 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
18a10 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
18a20 20 20 20 20 2f 2f 2f 20 45 6e 61 62 6c 65 73 20      /// Enables 
18a30 74 72 61 63 6b 69 6e 67 20 6f 66 20 63 68 61 6e  tracking of chan
18a40 67 65 73 20 74 6f 20 74 68 65 20 61 73 73 6f 63  ges to the assoc
18a50 69 61 74 65 64 20 64 61 74 61 62 61 73 65 2e 0d  iated database..
18a60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
18a70 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
18a80 20 70 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74   public void Set
18a90 54 6f 45 6e 61 62 6c 65 64 28 29 0d 0a 20 20 20  ToEnabled()..   
18aa0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
18ab0 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65      CheckDispose
18ac0 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  d();..          
18ad0 20 20 43 68 65 63 6b 48 61 6e 64 6c 65 28 29 3b    CheckHandle();
18ae0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
18af0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
18b00 6f 64 73 2e 73 71 6c 69 74 65 33 73 65 73 73 69  ods.sqlite3sessi
18b10 6f 6e 5f 65 6e 61 62 6c 65 28 73 65 73 73 69 6f  on_enable(sessio
18b20 6e 2c 20 31 29 3b 0d 0a 20 20 20 20 20 20 20 20  n, 1);..        
18b30 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
18b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b80 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
18b90 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
18ba0 20 20 20 20 20 20 20 2f 2f 2f 20 44 69 73 61 62         /// Disab
18bb0 6c 65 73 20 74 72 61 63 6b 69 6e 67 20 6f 66 20  les tracking of 
18bc0 63 68 61 6e 67 65 73 20 74 6f 20 74 68 65 20 61  changes to the a
18bd0 73 73 6f 63 69 61 74 65 64 20 64 61 74 61 62 61  ssociated databa
18be0 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  se...        ///
18bf0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
18c00 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64       public void
18c10 20 53 65 74 54 6f 44 69 73 61 62 6c 65 64 28 29   SetToDisabled()
18c20 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
18c30 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69           CheckDi
18c40 73 70 6f 73 65 64 28 29 3b 0d 0a 20 20 20 20 20  sposed();..     
18c50 20 20 20 20 20 20 20 43 68 65 63 6b 48 61 6e 64         CheckHand
18c60 6c 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  le();....       
18c70 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
18c80 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
18c90 73 65 73 73 69 6f 6e 5f 65 6e 61 62 6c 65 28 73  session_enable(s
18ca0 65 73 73 69 6f 6e 2c 20 30 29 3b 0d 0a 20 20 20  ession, 0);..   
18cb0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
18cc0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
18cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
18d10 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
18d20 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
18d30 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20 74 68  Determines if th
18d40 69 73 20 73 65 73 73 69 6f 6e 20 69 73 20 63 75  is session is cu
18d50 72 72 65 6e 74 6c 79 20 73 65 74 20 74 6f 20 6d  rrently set to m
18d60 61 72 6b 20 63 68 61 6e 67 65 73 20 61 73 0d 0a  ark changes as..
18d70 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 64 69          /// indi
18d80 72 65 63 74 20 28 69 2e 65 2e 20 61 73 20 74 68  rect (i.e. as th
18d90 6f 75 67 68 20 74 68 65 79 20 77 65 72 65 20 6d  ough they were m
18da0 61 64 65 20 76 69 61 20 61 20 74 72 69 67 67 65  ade via a trigge
18db0 72 20 6f 72 20 66 6f 72 65 69 67 6e 0d 0a 20 20  r or foreign..  
18dc0 20 20 20 20 20 20 2f 2f 2f 20 6b 65 79 20 61 63        /// key ac
18dd0 74 69 6f 6e 29 2e 0d 0a 20 20 20 20 20 20 20 20  tion)...        
18de0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
18df0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
18e00 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
18e10 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 63  // Non-zero if c
18e20 68 61 6e 67 65 73 20 74 6f 20 74 68 65 20 61 73  hanges to the as
18e30 73 6f 63 69 61 74 65 64 20 64 61 74 61 62 61 73  sociated databas
18e40 65 20 61 72 65 20 62 65 69 6e 67 20 6d 61 72 6b  e are being mark
18e50 65 64 20 61 73 0d 0a 20 20 20 20 20 20 20 20 2f  ed as..        /
18e60 2f 2f 20 69 6e 64 69 72 65 63 74 3b 20 6f 74 68  // indirect; oth
18e70 65 72 77 69 73 65 2c 20 7a 65 72 6f 2e 0d 0a 20  erwise, zero... 
18e80 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
18e90 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
18ea0 75 62 6c 69 63 20 62 6f 6f 6c 20 49 73 49 6e 64  ublic bool IsInd
18eb0 69 72 65 63 74 28 29 0d 0a 20 20 20 20 20 20 20  irect()..       
18ec0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
18ed0 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
18ee0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 43 68  ..            Ch
18ef0 65 63 6b 48 61 6e 64 6c 65 28 29 3b 0d 0a 0d 0a  eckHandle();....
18f00 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
18f10 72 6e 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  rn UnsafeNativeM
18f20 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 73 65  ethods.sqlite3se
18f30 73 73 69 6f 6e 5f 69 6e 64 69 72 65 63 74 28 73  ssion_indirect(s
18f40 65 73 73 69 6f 6e 2c 20 2d 31 29 20 21 3d 20 30  ession, -1) != 0
18f50 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
18f60 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
18f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
18fb0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
18fc0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
18fd0 20 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 69    /// Sets the i
18fe0 6e 64 69 72 65 63 74 20 66 6c 61 67 20 66 6f 72  ndirect flag for
18ff0 20 74 68 69 73 20 73 65 73 73 69 6f 6e 2e 20 20   this session.  
19000 53 75 62 73 65 71 75 65 6e 74 20 63 68 61 6e 67  Subsequent chang
19010 65 73 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 20  es will..       
19020 20 2f 2f 2f 20 62 65 20 6d 61 72 6b 65 64 20 61   /// be marked a
19030 73 20 69 6e 64 69 72 65 63 74 20 75 6e 74 69 6c  s indirect until
19040 20 74 68 69 73 20 66 6c 61 67 20 69 73 20 63 68   this flag is ch
19050 61 6e 67 65 64 20 61 67 61 69 6e 2e 0d 0a 20 20  anged again...  
19060 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
19070 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
19080 62 6c 69 63 20 76 6f 69 64 20 53 65 74 54 6f 49  blic void SetToI
19090 6e 64 69 72 65 63 74 28 29 0d 0a 20 20 20 20 20  ndirect()..     
190a0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
190b0 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28    CheckDisposed(
190c0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
190d0 43 68 65 63 6b 48 61 6e 64 6c 65 28 29 3b 0d 0a  CheckHandle();..
190e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e  ..            Un
190f0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
19100 73 2e 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e  s.sqlite3session
19110 5f 69 6e 64 69 72 65 63 74 28 73 65 73 73 69 6f  _indirect(sessio
19120 6e 2c 20 31 29 3b 0d 0a 20 20 20 20 20 20 20 20  n, 1);..        
19130 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
19140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19180 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
19190 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
191a0 20 20 20 20 20 20 20 2f 2f 2f 20 43 6c 65 61 72         /// Clear
191b0 73 20 74 68 65 20 69 6e 64 69 72 65 63 74 20 66  s the indirect f
191c0 6c 61 67 20 66 6f 72 20 74 68 69 73 20 73 65 73  lag for this ses
191d0 73 69 6f 6e 2e 20 20 53 75 62 73 65 71 75 65 6e  sion.  Subsequen
191e0 74 20 63 68 61 6e 67 65 73 20 77 69 6c 6c 0d 0a  t changes will..
191f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 65 20 6d          /// be m
19200 61 72 6b 65 64 20 61 73 20 64 69 72 65 63 74 20  arked as direct 
19210 75 6e 74 69 6c 20 74 68 69 73 20 66 6c 61 67 20  until this flag 
19220 69 73 20 63 68 61 6e 67 65 64 20 61 67 61 69 6e  is changed again
19230 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
19240 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
19250 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 53     public void S
19260 65 74 54 6f 44 69 72 65 63 74 28 29 0d 0a 20 20  etToDirect()..  
19270 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
19280 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
19290 65 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ed();..         
192a0 20 20 20 43 68 65 63 6b 48 61 6e 64 6c 65 28 29     CheckHandle()
192b0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
192c0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
192d0 68 6f 64 73 2e 73 71 6c 69 74 65 33 73 65 73 73  hods.sqlite3sess
192e0 69 6f 6e 5f 69 6e 64 69 72 65 63 74 28 73 65 73  ion_indirect(ses
192f0 73 69 6f 6e 2c 20 30 29 3b 0d 0a 20 20 20 20 20  sion, 0);..     
19300 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
19310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19350 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
19360 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
19370 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 65  ..        /// De
19380 74 65 72 6d 69 6e 65 73 20 69 66 20 74 68 65 72  termines if ther
19390 65 20 61 72 65 20 61 6e 79 20 74 72 61 63 6b 65  e are any tracke
193a0 64 20 63 68 61 6e 67 65 73 20 63 75 72 72 65 6e  d changes curren
193b0 74 6c 79 20 77 69 74 68 69 6e 20 74 68 65 0d 0a  tly within the..
193c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 61 74 61          /// data
193d0 20 66 6f 72 20 74 68 69 73 20 73 65 73 73 69 6f   for this sessio
193e0 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
193f0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
19400 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
19410 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
19420 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 72 65  on-zero if there
19430 20 61 72 65 20 6e 6f 20 63 68 61 6e 67 65 73 20   are no changes 
19440 77 69 74 68 69 6e 20 74 68 65 20 64 61 74 61 20  within the data 
19450 66 6f 72 20 74 68 69 73 20 73 65 73 73 69 6f 6e  for this session
19460 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f  ;..        /// o
19470 74 68 65 72 77 69 73 65 2c 20 7a 65 72 6f 2e 0d  therwise, zero..
19480 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
19490 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
194a0 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 49 73 45   public bool IsE
194b0 6d 70 74 79 28 29 0d 0a 20 20 20 20 20 20 20 20  mpty()..        
194c0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 43  {..            C
194d0 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
194e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65  .            Che
194f0 63 6b 48 61 6e 64 6c 65 28 29 3b 0d 0a 0d 0a 20  ckHandle();.... 
19500 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
19510 6e 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  n UnsafeNativeMe
19520 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 73 65 73  thods.sqlite3ses
19530 73 69 6f 6e 5f 69 73 65 6d 70 74 79 28 73 65 73  sion_isempty(ses
19540 73 69 6f 6e 29 20 21 3d 20 30 3b 0d 0a 20 20 20  sion) != 0;..   
19550 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
19560 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
19570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
195a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
195b0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
195c0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
195d0 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 63 61  Upon success, ca
195e0 75 73 65 73 20 63 68 61 6e 67 65 73 20 74 6f 20  uses changes to 
195f0 74 68 65 20 73 70 65 63 69 66 69 65 64 20 74 61  the specified ta
19600 62 6c 65 28 73 29 20 74 6f 20 73 74 61 72 74 0d  ble(s) to start.
19610 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 65 69  .        /// bei
19620 6e 67 20 74 72 61 63 6b 65 64 2e 20 20 41 6e 79  ng tracked.  Any
19630 20 74 61 62 6c 65 73 20 69 6d 70 61 63 74 65 64   tables impacted
19640 20 62 79 20 63 61 6c 6c 73 20 74 6f 20 74 68 69   by calls to thi
19650 73 20 6d 65 74 68 6f 64 20 77 69 6c 6c 0d 0a 20  s method will.. 
19660 20 20 20 20 20 20 20 2f 2f 2f 20 6e 6f 74 20 63         /// not c
19670 61 75 73 65 20 74 68 65 20 3c 73 65 65 20 63 72  ause the <see cr
19680 65 66 3d 22 53 65 73 73 69 6f 6e 54 61 62 6c 65  ef="SessionTable
19690 46 69 6c 74 65 72 43 61 6c 6c 62 61 63 6b 22 20  FilterCallback" 
196a0 2f 3e 20 63 61 6c 6c 62 61 63 6b 0d 0a 20 20 20  /> callback..   
196b0 20 20 20 20 20 2f 2f 2f 20 74 6f 20 62 65 20 69       /// to be i
196c0 6e 76 6f 6b 65 64 2e 0d 0a 20 20 20 20 20 20 20  nvoked...       
196d0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
196e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
196f0 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e  ram name="name">
19700 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
19710 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 74 61  e name of the ta
19720 62 6c 65 20 74 6f 20 62 65 20 74 72 61 63 6b 65  ble to be tracke
19730 64 20 2d 4f 52 2d 20 6e 75 6c 6c 20 74 6f 20 74  d -OR- null to t
19740 72 61 63 6b 20 61 6c 6c 0d 0a 20 20 20 20 20 20  rack all..      
19750 20 20 2f 2f 2f 20 61 70 70 6c 69 63 61 62 6c 65    /// applicable
19760 20 74 61 62 6c 65 73 20 77 69 74 68 69 6e 20 74   tables within t
19770 68 69 73 20 64 61 74 61 62 61 73 65 2e 0d 0a 20  his database... 
19780 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
19790 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  am>..        pub
197a0 6c 69 63 20 76 6f 69 64 20 41 74 74 61 63 68 54  lic void AttachT
197b0 61 62 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20  able(..         
197c0 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 20 2f     string name /
197d0 2a 20 69 6e 3a 20 4e 55 4c 4c 20 4f 4b 20 2a 2f  * in: NULL OK */
197e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
197f0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
19800 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73          CheckDis
19810 70 6f 73 65 64 28 29 3b 0d 0a 20 20 20 20 20 20  posed();..      
19820 20 20 20 20 20 20 43 68 65 63 6b 48 61 6e 64 6c        CheckHandl
19830 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  e();....        
19840 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43      SQLiteErrorC
19850 6f 64 65 20 72 63 20 3d 20 55 6e 73 61 66 65 4e  ode rc = UnsafeN
19860 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
19870 69 74 65 33 73 65 73 73 69 6f 6e 5f 61 74 74 61  ite3session_atta
19880 63 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ch(..           
19890 20 20 20 20 20 73 65 73 73 69 6f 6e 2c 20 53 51       session, SQ
198a0 4c 69 74 65 53 74 72 69 6e 67 2e 47 65 74 55 74  LiteString.GetUt
198b0 66 38 42 79 74 65 73 46 72 6f 6d 53 74 72 69 6e  f8BytesFromStrin
198c0 67 28 6e 61 6d 65 29 29 3b 0d 0a 0d 0a 20 20 20  g(name));....   
198d0 20 20 20 20 20 20 20 20 20 69 66 20 28 72 63 20           if (rc 
198e0 21 3d 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  != SQLiteErrorCo
198f0 64 65 2e 4f 6b 29 0d 0a 20 20 20 20 20 20 20 20  de.Ok)..        
19900 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65          throw ne
19910 77 20 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f  w SQLiteExceptio
19920 6e 28 72 63 2c 20 22 73 71 6c 69 74 65 33 73 65  n(rc, "sqlite3se
19930 73 73 69 6f 6e 5f 61 74 74 61 63 68 22 29 3b 0d  ssion_attach");.
19940 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
19950 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
19960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
199a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
199b0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
199c0 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20  /// This method 
199d0 69 73 20 75 73 65 64 20 74 6f 20 73 65 74 20 74  is used to set t
199e0 68 65 20 74 61 62 6c 65 20 66 69 6c 74 65 72 20  he table filter 
199f0 66 6f 72 20 74 68 69 73 20 69 6e 73 74 61 6e 63  for this instanc
19a00 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
19a10 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
19a20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
19a30 61 6d 65 3d 22 63 61 6c 6c 62 61 63 6b 22 3e 0d  ame="callback">.
19a40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
19a50 20 74 61 62 6c 65 20 66 69 6c 74 65 72 20 63 61   table filter ca
19a60 6c 6c 62 61 63 6b 20 2d 4f 52 2d 20 6e 75 6c 6c  llback -OR- null
19a70 20 74 6f 20 63 6c 65 61 72 20 61 6e 79 20 65 78   to clear any ex
19a80 69 73 74 69 6e 67 20 74 61 62 6c 65 0d 0a 20 20  isting table..  
19a90 20 20 20 20 20 20 2f 2f 2f 20 66 69 6c 74 65 72        /// filter
19aa0 20 63 61 6c 6c 62 61 63 6b 2e 0d 0a 20 20 20 20   callback...    
19ab0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
19ac0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
19ad0 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6c 69 65 6e  aram name="clien
19ae0 74 44 61 74 61 22 3e 0d 0a 20 20 20 20 20 20 20  tData">..       
19af0 20 2f 2f 2f 20 54 68 65 20 6f 70 74 69 6f 6e 61   /// The optiona
19b00 6c 20 61 70 70 6c 69 63 61 74 69 6f 6e 2d 64 65  l application-de
19b10 66 69 6e 65 64 20 63 6f 6e 74 65 78 74 20 64 61  fined context da
19b20 74 61 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20  ta.  This value 
19b30 6d 61 79 20 62 65 0d 0a 20 20 20 20 20 20 20 20  may be..        
19b40 2f 2f 2f 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20  /// null...     
19b50 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
19b60 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
19b70 76 6f 69 64 20 53 65 74 54 61 62 6c 65 46 69 6c  void SetTableFil
19b80 74 65 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ter(..          
19b90 20 20 53 65 73 73 69 6f 6e 54 61 62 6c 65 46 69    SessionTableFi
19ba0 6c 74 65 72 43 61 6c 6c 62 61 63 6b 20 63 61 6c  lterCallback cal
19bb0 6c 62 61 63 6b 2c 20 2f 2a 20 69 6e 3a 20 4e 55  lback, /* in: NU
19bc0 4c 4c 20 4f 4b 20 2a 2f 0d 0a 20 20 20 20 20 20  LL OK */..      
19bd0 20 20 20 20 20 20 6f 62 6a 65 63 74 20 63 6c 69        object cli
19be0 65 6e 74 44 61 74 61 20 20 20 20 20 20 20 20 20  entData         
19bf0 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e             /* in
19c00 3a 20 4e 55 4c 4c 20 4f 4b 20 2a 2f 0d 0a 20 20  : NULL OK */..  
19c10 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
19c20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
19c30 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65      CheckDispose
19c40 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  d();..          
19c50 20 20 43 68 65 63 6b 48 61 6e 64 6c 65 28 29 3b    CheckHandle();
19c60 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
19c70 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
19c80 6f 64 73 2e 73 71 6c 69 74 65 33 73 65 73 73 69  ods.sqlite3sessi
19c90 6f 6e 5f 74 61 62 6c 65 5f 66 69 6c 74 65 72 28  on_table_filter(
19ca0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19cb0 20 20 73 65 73 73 69 6f 6e 2c 20 41 70 70 6c 79    session, Apply
19cc0 54 61 62 6c 65 46 69 6c 74 65 72 28 63 61 6c 6c  TableFilter(call
19cd0 62 61 63 6b 2c 20 63 6c 69 65 6e 74 44 61 74 61  back, clientData
19ce0 29 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  ), IntPtr.Zero);
19cf0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
19d00 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
19d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
19d50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
19d60 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
19d70 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f   /// Attempts to
19d80 20 63 72 65 61 74 65 20 61 6e 64 20 72 65 74 75   create and retu
19d90 72 6e 2c 20 76 69 61 20 3c 70 61 72 61 6d 72 65  rn, via <paramre
19da0 66 20 6e 61 6d 65 3d 22 72 61 77 44 61 74 61 22  f name="rawData"
19db0 20 2f 3e 2c 20 74 68 65 0d 0a 20 20 20 20 20 20   />, the..      
19dc0 20 20 2f 2f 2f 20 73 65 74 20 6f 66 20 63 68 61    /// set of cha
19dd0 6e 67 65 73 20 72 65 70 72 65 73 65 6e 74 65 64  nges represented
19de0 20 62 79 20 74 68 69 73 20 73 65 73 73 69 6f 6e   by this session
19df0 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20   instance...    
19e00 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
19e10 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
19e20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 72 61 77  <param name="raw
19e30 44 61 74 61 22 3e 0d 0a 20 20 20 20 20 20 20 20  Data">..        
19e40 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73  /// Upon success
19e50 2c 20 74 68 69 73 20 77 69 6c 6c 20 63 6f 6e 74  , this will cont
19e60 61 69 6e 20 74 68 65 20 72 61 77 20 62 79 74 65  ain the raw byte
19e70 20 64 61 74 61 20 66 6f 72 20 61 6c 6c 20 74 68   data for all th
19e80 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  e..        /// c
19e90 68 61 6e 67 65 73 20 69 6e 20 74 68 69 73 20 73  hanges in this s
19ea0 65 73 73 69 6f 6e 20 69 6e 73 74 61 6e 63 65 2e  ession instance.
19eb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
19ec0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
19ed0 70 75 62 6c 69 63 20 76 6f 69 64 20 43 72 65 61  public void Crea
19ee0 74 65 43 68 61 6e 67 65 53 65 74 28 0d 0a 20 20  teChangeSet(..  
19ef0 20 20 20 20 20 20 20 20 20 20 72 65 66 20 62 79            ref by
19f00 74 65 5b 5d 20 72 61 77 44 61 74 61 0d 0a 20 20  te[] rawData..  
19f10 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
19f20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
19f30 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65      CheckDispose
19f40 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  d();..          
19f50 20 20 43 68 65 63 6b 48 61 6e 64 6c 65 28 29 3b    CheckHandle();
19f60 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
19f70 49 6e 74 50 74 72 20 70 44 61 74 61 20 3d 20 49  IntPtr pData = I
19f80 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20  ntPtr.Zero;.... 
19f90 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
19fa0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
19fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
19fc0 6e 74 20 6e 44 61 74 61 20 3d 20 30 3b 0d 0a 0d  nt nData = 0;...
19fd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19fe0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
19ff0 20 72 63 20 3d 20 55 6e 73 61 66 65 4e 61 74 69   rc = UnsafeNati
1a000 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
1a010 33 73 65 73 73 69 6f 6e 5f 63 68 61 6e 67 65 73  3session_changes
1a020 65 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et(..           
1a030 20 20 20 20 20 20 20 20 20 73 65 73 73 69 6f 6e           session
1a040 2c 20 72 65 66 20 6e 44 61 74 61 2c 20 72 65 66  , ref nData, ref
1a050 20 70 44 61 74 61 29 3b 0d 0a 0d 0a 20 20 20 20   pData);....    
1a060 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1a070 72 63 20 21 3d 20 53 51 4c 69 74 65 45 72 72 6f  rc != SQLiteErro
1a080 72 43 6f 64 65 2e 4f 6b 29 0d 0a 20 20 20 20 20  rCode.Ok)..     
1a090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
1a0a0 68 72 6f 77 20 6e 65 77 20 53 51 4c 69 74 65 45  hrow new SQLiteE
1a0b0 78 63 65 70 74 69 6f 6e 28 72 63 2c 20 22 73 71  xception(rc, "sq
1a0c0 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 63 68 61  lite3session_cha
1a0d0 6e 67 65 73 65 74 22 29 3b 0d 0a 0d 0a 20 20 20  ngeset");....   
1a0e0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 61 77               raw
1a0f0 44 61 74 61 20 3d 20 53 51 4c 69 74 65 42 79 74  Data = SQLiteByt
1a100 65 73 2e 46 72 6f 6d 49 6e 74 50 74 72 28 70 44  es.FromIntPtr(pD
1a110 61 74 61 2c 20 6e 44 61 74 61 29 3b 0d 0a 20 20  ata, nData);..  
1a120 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1a130 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79           finally
1a140 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
1a150 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a160 20 69 66 20 28 70 44 61 74 61 20 21 3d 20 49 6e   if (pData != In
1a170 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
1a180 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1a190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a1a0 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e     SQLiteMemory.
1a1b0 46 72 65 65 55 6e 74 72 61 63 6b 65 64 28 70 44  FreeUntracked(pD
1a1c0 61 74 61 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ata);..         
1a1d0 20 20 20 20 20 20 20 20 20 20 20 70 44 61 74 61             pData
1a1e0 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d   = IntPtr.Zero;.
1a1f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a200 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1a210 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
1a220 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1a230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1a270 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1a280 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1a290 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74    /// Attempts t
1a2a0 6f 20 63 72 65 61 74 65 20 61 6e 64 20 77 72 69  o create and wri
1a2b0 74 65 2c 20 76 69 61 20 3c 70 61 72 61 6d 72 65  te, via <paramre
1a2c0 66 20 6e 61 6d 65 3d 22 73 74 72 65 61 6d 22 20  f name="stream" 
1a2d0 2f 3e 2c 20 74 68 65 0d 0a 20 20 20 20 20 20 20  />, the..       
1a2e0 20 2f 2f 2f 20 73 65 74 20 6f 66 20 63 68 61 6e   /// set of chan
1a2f0 67 65 73 20 72 65 70 72 65 73 65 6e 74 65 64 20  ges represented 
1a300 62 79 20 74 68 69 73 20 73 65 73 73 69 6f 6e 20  by this session 
1a310 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
1a320 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1a330 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1a340 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 74 72 65  param name="stre
1a350 61 6d 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  am">..        //
1a360 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20  / Upon success, 
1a370 74 68 65 20 72 61 77 20 62 79 74 65 20 64 61 74  the raw byte dat
1a380 61 20 66 6f 72 20 61 6c 6c 20 74 68 65 20 63 68  a for all the ch
1a390 61 6e 67 65 73 20 69 6e 20 74 68 69 73 20 73 65  anges in this se
1a3a0 73 73 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 2f  ssion..        /
1a3b0 2f 2f 20 69 6e 73 74 61 6e 63 65 20 77 69 6c 6c  // instance will
1a3c0 20 62 65 20 77 72 69 74 74 65 6e 20 74 6f 20 74   be written to t
1a3d0 68 69 73 20 3c 73 65 65 20 63 72 65 66 3d 22 53  his <see cref="S
1a3e0 74 72 65 61 6d 22 20 2f 3e 2e 0d 0a 20 20 20 20  tream" />...    
1a3f0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1a400 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1a410 20 76 6f 69 64 20 43 72 65 61 74 65 43 68 61 6e   void CreateChan
1a420 67 65 53 65 74 28 0d 0a 20 20 20 20 20 20 20 20  geSet(..        
1a430 20 20 20 20 53 74 72 65 61 6d 20 73 74 72 65 61      Stream strea
1a440 6d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  m..            )
1a450 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
1a460 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69           CheckDi
1a470 73 70 6f 73 65 64 28 29 3b 0d 0a 20 20 20 20 20  sposed();..     
1a480 20 20 20 20 20 20 20 43 68 65 63 6b 48 61 6e 64         CheckHand
1a490 6c 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  le();....       
1a4a0 20 20 20 20 20 69 66 20 28 73 74 72 65 61 6d 20       if (stream 
1a4b0 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
1a4c0 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
1a4d0 6e 65 77 20 41 72 67 75 6d 65 6e 74 4e 75 6c 6c  new ArgumentNull
1a4e0 45 78 63 65 70 74 69 6f 6e 28 22 73 74 72 65 61  Exception("strea
1a4f0 6d 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  m");....        
1a500 20 20 20 20 53 51 4c 69 74 65 53 74 72 65 61 6d      SQLiteStream
1a510 41 64 61 70 74 65 72 20 73 74 72 65 61 6d 41 64  Adapter streamAd
1a520 61 70 74 65 72 20 3d 20 47 65 74 53 74 72 65 61  apter = GetStrea
1a530 6d 41 64 61 70 74 65 72 28 73 74 72 65 61 6d 29  mAdapter(stream)
1a540 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1a550 20 69 66 20 28 73 74 72 65 61 6d 41 64 61 70 74   if (streamAdapt
1a560 65 72 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  er == null)..   
1a570 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1a580 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
1a590 77 20 6e 65 77 20 53 51 4c 69 74 65 45 78 63 65  w new SQLiteExce
1a5a0 70 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20  ption(..        
1a5b0 20 20 20 20 20 20 20 20 20 20 20 20 22 63 6f 75              "cou
1a5c0 6c 64 20 6e 6f 74 20 67 65 74 20 6f 72 20 63 72  ld not get or cr
1a5d0 65 61 74 65 20 61 64 61 70 74 65 72 20 66 6f 72  eate adapter for
1a5e0 20 6f 75 74 70 75 74 20 73 74 72 65 61 6d 22 29   output stream")
1a5f0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
1a600 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1a610 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1a620 72 63 20 3d 20 55 6e 73 61 66 65 4e 61 74 69 76  rc = UnsafeNativ
1a630 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
1a640 73 65 73 73 69 6f 6e 5f 63 68 61 6e 67 65 73 65  session_changese
1a650 74 5f 73 74 72 6d 28 0d 0a 20 20 20 20 20 20 20  t_strm(..       
1a660 20 20 20 20 20 20 20 20 20 73 65 73 73 69 6f 6e           session
1a670 2c 20 73 74 72 65 61 6d 41 64 61 70 74 65 72 2e  , streamAdapter.
1a680 47 65 74 4f 75 74 70 75 74 44 65 6c 65 67 61 74  GetOutputDelegat
1a690 65 28 29 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e(), IntPtr.Zero
1a6a0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1a6b0 20 20 69 66 20 28 72 63 20 21 3d 20 53 51 4c 69    if (rc != SQLi
1a6c0 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 29 0d  teErrorCode.Ok).
1a6d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a6e0 20 74 68 72 6f 77 20 6e 65 77 20 53 51 4c 69 74   throw new SQLit
1a6f0 65 45 78 63 65 70 74 69 6f 6e 28 72 63 2c 20 22  eException(rc, "
1a700 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 63  sqlite3session_c
1a710 68 61 6e 67 65 73 65 74 5f 73 74 72 6d 22 29 3b  hangeset_strm");
1a720 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1a730 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1a740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1a780 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1a790 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1a7a0 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f   /// Attempts to
1a7b0 20 63 72 65 61 74 65 20 61 6e 64 20 72 65 74 75   create and retu
1a7c0 72 6e 2c 20 76 69 61 20 3c 70 61 72 61 6d 72 65  rn, via <paramre
1a7d0 66 20 6e 61 6d 65 3d 22 72 61 77 44 61 74 61 22  f name="rawData"
1a7e0 20 2f 3e 2c 20 74 68 65 0d 0a 20 20 20 20 20 20   />, the..      
1a7f0 20 20 2f 2f 2f 20 73 65 74 20 6f 66 20 63 68 61    /// set of cha
1a800 6e 67 65 73 20 72 65 70 72 65 73 65 6e 74 65 64  nges represented
1a810 20 62 79 20 74 68 69 73 20 73 65 73 73 69 6f 6e   by this session
1a820 20 69 6e 73 74 61 6e 63 65 20 61 73 20 61 20 70   instance as a p
1a830 61 74 63 68 20 73 65 74 2e 0d 0a 20 20 20 20 20  atch set...     
1a840 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1a850 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1a860 70 61 72 61 6d 20 6e 61 6d 65 3d 22 72 61 77 44  param name="rawD
1a870 61 74 61 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ata">..        /
1a880 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c  // Upon success,
1a890 20 74 68 69 73 20 77 69 6c 6c 20 63 6f 6e 74 61   this will conta
1a8a0 69 6e 20 74 68 65 20 72 61 77 20 62 79 74 65 20  in the raw byte 
1a8b0 64 61 74 61 20 66 6f 72 20 61 6c 6c 20 74 68 65  data for all the
1a8c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 68  ..        /// ch
1a8d0 61 6e 67 65 73 20 69 6e 20 74 68 69 73 20 73 65  anges in this se
1a8e0 73 73 69 6f 6e 20 69 6e 73 74 61 6e 63 65 2e 0d  ssion instance..
1a8f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1a900 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70  aram>..        p
1a910 75 62 6c 69 63 20 76 6f 69 64 20 43 72 65 61 74  ublic void Creat
1a920 65 50 61 74 63 68 53 65 74 28 0d 0a 20 20 20 20  ePatchSet(..    
1a930 20 20 20 20 20 20 20 20 72 65 66 20 62 79 74 65          ref byte
1a940 5b 5d 20 72 61 77 44 61 74 61 0d 0a 20 20 20 20  [] rawData..    
1a950 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
1a960 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1a970 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28    CheckDisposed(
1a980 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
1a990 43 68 65 63 6b 48 61 6e 64 6c 65 28 29 3b 0d 0a  CheckHandle();..
1a9a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
1a9b0 74 50 74 72 20 70 44 61 74 61 20 3d 20 49 6e 74  tPtr pData = Int
1a9c0 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20  Ptr.Zero;....   
1a9d0 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
1a9e0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1a9f0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74               int
1aa00 20 6e 44 61 74 61 20 3d 20 30 3b 0d 0a 0d 0a 20   nData = 0;.... 
1aa10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
1aa20 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 72  QLiteErrorCode r
1aa30 63 20 3d 20 55 6e 73 61 66 65 4e 61 74 69 76 65  c = UnsafeNative
1aa40 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 73  Methods.sqlite3s
1aa50 65 73 73 69 6f 6e 5f 70 61 74 63 68 73 65 74 28  ession_patchset(
1aa60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1aa70 20 20 20 20 20 20 73 65 73 73 69 6f 6e 2c 20 72        session, r
1aa80 65 66 20 6e 44 61 74 61 2c 20 72 65 66 20 70 44  ef nData, ref pD
1aa90 61 74 61 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ata);....       
1aaa0 20 20 20 20 20 20 20 20 20 69 66 20 28 72 63 20           if (rc 
1aab0 21 3d 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  != SQLiteErrorCo
1aac0 64 65 2e 4f 6b 29 0d 0a 20 20 20 20 20 20 20 20  de.Ok)..        
1aad0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
1aae0 77 20 6e 65 77 20 53 51 4c 69 74 65 45 78 63 65  w new SQLiteExce
1aaf0 70 74 69 6f 6e 28 72 63 2c 20 22 73 71 6c 69 74  ption(rc, "sqlit
1ab00 65 33 73 65 73 73 69 6f 6e 5f 70 61 74 63 68 73  e3session_patchs
1ab10 65 74 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  et");....       
1ab20 20 20 20 20 20 20 20 20 20 72 61 77 44 61 74 61           rawData
1ab30 20 3d 20 53 51 4c 69 74 65 42 79 74 65 73 2e 46   = SQLiteBytes.F
1ab40 72 6f 6d 49 6e 74 50 74 72 28 70 44 61 74 61 2c  romIntPtr(pData,
1ab50 20 6e 44 61 74 61 29 3b 0d 0a 20 20 20 20 20 20   nData);..      
1ab60 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1ab70 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20       finally..  
1ab80 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1ab90 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1aba0 28 70 44 61 74 61 20 21 3d 20 49 6e 74 50 74 72  (pData != IntPtr
1abb0 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
1abc0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1abd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
1abe0 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65  QLiteMemory.Free
1abf0 55 6e 74 72 61 63 6b 65 64 28 70 44 61 74 61 29  Untracked(pData)
1ac00 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1ac10 20 20 20 20 20 20 20 70 44 61 74 61 20 3d 20 49         pData = I
1ac20 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20  ntPtr.Zero;..   
1ac30 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1ac40 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1ac50 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1ac60 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1ac70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1acb0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
1acc0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1acd0 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20 63 72  / Attempts to cr
1ace0 65 61 74 65 20 61 6e 64 20 77 72 69 74 65 2c 20  eate and write, 
1acf0 76 69 61 20 3c 70 61 72 61 6d 72 65 66 20 6e 61  via <paramref na
1ad00 6d 65 3d 22 73 74 72 65 61 6d 22 20 2f 3e 2c 20  me="stream" />, 
1ad10 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
1ad20 20 73 65 74 20 6f 66 20 63 68 61 6e 67 65 73 20   set of changes 
1ad30 72 65 70 72 65 73 65 6e 74 65 64 20 62 79 20 74  represented by t
1ad40 68 69 73 20 73 65 73 73 69 6f 6e 20 69 6e 73 74  his session inst
1ad50 61 6e 63 65 20 61 73 20 61 20 70 61 74 63 68 20  ance as a patch 
1ad60 73 65 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  set...        //
1ad70 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1ad80 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1ad90 20 6e 61 6d 65 3d 22 73 74 72 65 61 6d 22 3e 0d   name="stream">.
1ada0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f  .        /// Upo
1adb0 6e 20 73 75 63 63 65 73 73 2c 20 74 68 65 20 72  n success, the r
1adc0 61 77 20 62 79 74 65 20 64 61 74 61 20 66 6f 72  aw byte data for
1add0 20 61 6c 6c 20 74 68 65 20 63 68 61 6e 67 65 73   all the changes
1ade0 20 69 6e 20 74 68 69 73 20 73 65 73 73 69 6f 6e   in this session
1adf0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e  ..        /// in
1ae00 73 74 61 6e 63 65 20 77 69 6c 6c 20 62 65 20 77  stance will be w
1ae10 72 69 74 74 65 6e 20 74 6f 20 74 68 69 73 20 3c  ritten to this <
1ae20 73 65 65 20 63 72 65 66 3d 22 53 74 72 65 61 6d  see cref="Stream
1ae30 22 20 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  " />...        /
1ae40 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1ae50 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64       public void
1ae60 20 43 72 65 61 74 65 50 61 74 63 68 53 65 74 28   CreatePatchSet(
1ae70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 74  ..            St
1ae80 72 65 61 6d 20 73 74 72 65 61 6d 0d 0a 20 20 20  ream stream..   
1ae90 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
1aea0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1aeb0 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64     CheckDisposed
1aec0 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
1aed0 20 43 68 65 63 6b 48 61 6e 64 6c 65 28 29 3b 0d   CheckHandle();.
1aee0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
1aef0 66 20 28 73 74 72 65 61 6d 20 3d 3d 20 6e 75 6c  f (stream == nul
1af00 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
1af10 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72      throw new Ar
1af20 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65 70 74  gumentNullExcept
1af30 69 6f 6e 28 22 73 74 72 65 61 6d 22 29 3b 0d 0a  ion("stream");..
1af40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
1af50 4c 69 74 65 53 74 72 65 61 6d 41 64 61 70 74 65  LiteStreamAdapte
1af60 72 20 73 74 72 65 61 6d 41 64 61 70 74 65 72 20  r streamAdapter 
1af70 3d 20 47 65 74 53 74 72 65 61 6d 41 64 61 70 74  = GetStreamAdapt
1af80 65 72 28 73 74 72 65 61 6d 29 3b 0d 0a 0d 0a 20  er(stream);.... 
1af90 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73             if (s
1afa0 74 72 65 61 6d 41 64 61 70 74 65 72 20 3d 3d 20  treamAdapter == 
1afb0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
1afc0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1afd0 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
1afe0 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 28  SQLiteException(
1aff0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b000 20 20 20 20 20 20 22 63 6f 75 6c 64 20 6e 6f 74        "could not
1b010 20 67 65 74 20 6f 72 20 63 72 65 61 74 65 20 61   get or create a
1b020 64 61 70 74 65 72 20 66 6f 72 20 6f 75 74 70 75  dapter for outpu
1b030 74 20 73 74 72 65 61 6d 22 29 3b 0d 0a 20 20 20  t stream");..   
1b040 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
1b050 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
1b060 45 72 72 6f 72 43 6f 64 65 20 72 63 20 3d 20 55  ErrorCode rc = U
1b070 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
1b080 64 73 2e 73 71 6c 69 74 65 33 73 65 73 73 69 6f  ds.sqlite3sessio
1b090 6e 5f 70 61 74 63 68 73 65 74 5f 73 74 72 6d 28  n_patchset_strm(
1b0a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b0b0 20 20 73 65 73 73 69 6f 6e 2c 20 73 74 72 65 61    session, strea
1b0c0 6d 41 64 61 70 74 65 72 2e 47 65 74 4f 75 74 70  mAdapter.GetOutp
1b0d0 75 74 44 65 6c 65 67 61 74 65 28 29 2c 20 49 6e  utDelegate(), In
1b0e0 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20  tPtr.Zero);.... 
1b0f0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72             if (r
1b100 63 20 21 3d 20 53 51 4c 69 74 65 45 72 72 6f 72  c != SQLiteError
1b110 43 6f 64 65 2e 4f 6b 29 0d 0a 20 20 20 20 20 20  Code.Ok)..      
1b120 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
1b130 6e 65 77 20 53 51 4c 69 74 65 45 78 63 65 70 74  new SQLiteExcept
1b140 69 6f 6e 28 72 63 2c 20 22 73 71 6c 69 74 65 33  ion(rc, "sqlite3
1b150 73 65 73 73 69 6f 6e 5f 70 61 74 63 68 73 65 74  session_patchset
1b160 5f 73 74 72 6d 22 29 3b 0d 0a 20 20 20 20 20 20  _strm");..      
1b170 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
1b180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b1c0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1b1d0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1b1e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
1b1f0 73 20 6d 65 74 68 6f 64 20 6c 6f 61 64 73 20 74  s method loads t
1b200 68 65 20 64 69 66 66 65 72 65 6e 63 65 73 20 62  he differences b
1b210 65 74 77 65 65 6e 20 74 77 6f 20 74 61 62 6c 65  etween two table
1b220 73 20 5b 77 69 74 68 20 74 68 65 20 73 61 6d 65  s [with the same
1b230 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 61  ..        /// na
1b240 6d 65 2c 20 73 65 74 20 6f 66 20 63 6f 6c 75 6d  me, set of colum
1b250 6e 73 2c 20 61 6e 64 20 70 72 69 6d 61 72 79 20  ns, and primary 
1b260 6b 65 79 20 64 65 66 69 6e 69 74 69 6f 6e 5d 20  key definition] 
1b270 69 6e 74 6f 20 74 68 69 73 20 73 65 73 73 69 6f  into this sessio
1b280 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  n..        /// i
1b290 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20  nstance...      
1b2a0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1b2b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1b2c0 61 72 61 6d 20 6e 61 6d 65 3d 22 66 72 6f 6d 44  aram name="fromD
1b2d0 61 74 61 62 61 73 65 4e 61 6d 65 22 3e 0d 0a 20  atabaseName">.. 
1b2e0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
1b2f0 61 6d 65 20 6f 66 20 74 68 65 20 64 61 74 61 62  ame of the datab
1b300 61 73 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74  ase containing t
1b310 68 65 20 74 61 62 6c 65 20 77 69 74 68 20 74 68  he table with th
1b320 65 20 6f 72 69 67 69 6e 61 6c 0d 0a 20 20 20 20  e original..    
1b330 20 20 20 20 2f 2f 2f 20 64 61 74 61 20 28 69 2e      /// data (i.
1b340 65 2e 20 69 74 20 77 69 6c 6c 20 6e 65 65 64 20  e. it will need 
1b350 75 70 64 61 74 69 6e 67 20 69 6e 20 6f 72 64 65  updating in orde
1b360 72 20 74 6f 20 62 65 20 69 64 65 6e 74 69 63 61  r to be identica
1b370 6c 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  l to the..      
1b380 20 20 2f 2f 2f 20 6f 6e 65 20 77 69 74 68 69 6e    /// one within
1b390 20 74 68 65 20 64 61 74 61 62 61 73 65 20 61 73   the database as
1b3a0 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
1b3b0 69 73 20 73 65 73 73 69 6f 6e 20 69 6e 73 74 61  is session insta
1b3c0 6e 63 65 29 2e 0d 0a 20 20 20 20 20 20 20 20 2f  nce)...        /
1b3d0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1b3e0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1b3f0 6e 61 6d 65 3d 22 74 61 62 6c 65 4e 61 6d 65 22  name="tableName"
1b400 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1b410 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 74  he name of the t
1b420 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  able...        /
1b430 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1b440 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64       public void
1b450 20 4c 6f 61 64 44 69 66 66 65 72 65 6e 63 65 73   LoadDifferences
1b460 46 72 6f 6d 54 61 62 6c 65 28 0d 0a 20 20 20 20  FromTable(..    
1b470 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66          string f
1b480 72 6f 6d 44 61 74 61 62 61 73 65 4e 61 6d 65 2c  romDatabaseName,
1b490 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74  ..            st
1b4a0 72 69 6e 67 20 74 61 62 6c 65 4e 61 6d 65 0d 0a  ring tableName..
1b4b0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
1b4c0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1b4d0 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f        CheckDispo
1b4e0 73 65 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  sed();..        
1b4f0 20 20 20 20 43 68 65 63 6b 48 61 6e 64 6c 65 28      CheckHandle(
1b500 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1b510 20 20 69 66 20 28 66 72 6f 6d 44 61 74 61 62 61    if (fromDataba
1b520 73 65 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d  seName == null).
1b530 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b540 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d   throw new Argum
1b550 65 6e 74 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e  entNullException
1b560 28 22 66 72 6f 6d 44 61 74 61 62 61 73 65 4e 61  ("fromDatabaseNa
1b570 6d 65 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  me");....       
1b580 20 20 20 20 20 69 66 20 28 74 61 62 6c 65 4e 61       if (tableNa
1b590 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  me == null)..   
1b5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72               thr
1b5b0 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74 4e  ow new ArgumentN
1b5c0 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28 22 74 61  ullException("ta
1b5d0 62 6c 65 4e 61 6d 65 22 29 3b 0d 0a 0d 0a 20 20  bleName");....  
1b5e0 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
1b5f0 20 70 45 72 72 6f 72 20 3d 20 49 6e 74 50 74 72   pError = IntPtr
1b600 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20  .Zero;....      
1b610 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
1b620 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1b630 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
1b640 45 72 72 6f 72 43 6f 64 65 20 72 63 20 3d 20 55  ErrorCode rc = U
1b650 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
1b660 64 73 2e 73 71 6c 69 74 65 33 73 65 73 73 69 6f  ds.sqlite3sessio
1b670 6e 5f 64 69 66 66 28 0d 0a 20 20 20 20 20 20 20  n_diff(..       
1b680 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 73               ses
1b690 73 69 6f 6e 2c 20 53 51 4c 69 74 65 53 74 72 69  sion, SQLiteStri
1b6a0 6e 67 2e 47 65 74 55 74 66 38 42 79 74 65 73 46  ng.GetUtf8BytesF
1b6b0 72 6f 6d 53 74 72 69 6e 67 28 66 72 6f 6d 44 61  romString(fromDa
1b6c0 74 61 62 61 73 65 4e 61 6d 65 29 2c 0d 0a 20 20  tabaseName),..  
1b6d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b6e0 20 20 53 51 4c 69 74 65 53 74 72 69 6e 67 2e 47    SQLiteString.G
1b6f0 65 74 55 74 66 38 42 79 74 65 73 46 72 6f 6d 53  etUtf8BytesFromS
1b700 74 72 69 6e 67 28 74 61 62 6c 65 4e 61 6d 65 29  tring(tableName)
1b710 2c 20 72 65 66 20 70 45 72 72 6f 72 29 3b 0d 0a  , ref pError);..
1b720 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b730 20 20 69 66 20 28 72 63 20 21 3d 20 53 51 4c 69    if (rc != SQLi
1b740 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 29 0d  teErrorCode.Ok).
1b750 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b760 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1b770 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 65          string e
1b780 72 72 6f 72 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a  rror = null;....
1b790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b7a0 20 20 20 20 69 66 20 28 70 45 72 72 6f 72 20 21      if (pError !
1b7b0 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
1b7c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b7d0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1b7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
1b7f0 72 72 6f 72 20 3d 20 53 51 4c 69 74 65 53 74 72  rror = SQLiteStr
1b800 69 6e 67 2e 53 74 72 69 6e 67 46 72 6f 6d 55 74  ing.StringFromUt
1b810 66 38 49 6e 74 50 74 72 28 70 45 72 72 6f 72 29  f8IntPtr(pError)
1b820 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1b830 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1b840 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f  (!String.IsNullO
1b850 72 45 6d 70 74 79 28 65 72 72 6f 72 29 29 0d 0a  rEmpty(error))..
1b860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b870 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1b880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b890 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 48         error = H
1b8a0 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
1b8b0 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
1b8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b8d0 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
1b8e0 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
1b8f0 75 6c 74 75 72 65 2c 20 22 3a 20 7b 30 7d 22 2c  ulture, ": {0}",
1b900 20 65 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20   error);..      
1b910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b920 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1b930 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
1b940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b950 20 20 74 68 72 6f 77 20 6e 65 77 20 53 51 4c 69    throw new SQLi
1b960 74 65 45 78 63 65 70 74 69 6f 6e 28 72 63 2c 20  teException(rc, 
1b970 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
1b980 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
1b990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b9a0 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
1b9b0 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
1b9c0 20 22 7b 30 7d 7b 31 7d 22 2c 0d 0a 20 20 20 20   "{0}{1}",..    
1b9d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b9e0 20 20 20 20 22 73 71 6c 69 74 65 33 73 65 73 73      "sqlite3sess
1b9f0 69 6f 6e 5f 64 69 66 66 22 2c 20 65 72 72 6f 72  ion_diff", error
1ba00 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ));..           
1ba10 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1ba20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1ba30 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20     finally..    
1ba40 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1ba50 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
1ba60 45 72 72 6f 72 20 21 3d 20 49 6e 74 50 74 72 2e  Error != IntPtr.
1ba70 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
1ba80 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1ba90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
1baa0 4c 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65 55  LiteMemory.FreeU
1bab0 6e 74 72 61 63 6b 65 64 28 70 45 72 72 6f 72 29  ntracked(pError)
1bac0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1bad0 20 20 20 20 20 20 20 70 45 72 72 6f 72 20 3d 20         pError = 
1bae0 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
1baf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1bb00 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
1bb10 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1bb20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
1bb30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1bb40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb80 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
1bb90 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20  ion IDisposable 
1bba0 22 50 61 74 74 65 72 6e 22 20 4d 65 6d 62 65 72  "Pattern" Member
1bbb0 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
1bbc0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1bbd0 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
1bbe0 66 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e  f this object in
1bbf0 73 74 61 6e 63 65 20 68 61 73 20 62 65 65 6e 20  stance has been 
1bc00 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20 20  disposed...     
1bc10 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1bc20 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
1bc30 74 65 20 62 6f 6f 6c 20 64 69 73 70 6f 73 65 64  te bool disposed
1bc40 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
1bc50 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1bc60 20 20 20 20 2f 2f 2f 20 54 68 72 6f 77 73 20 61      /// Throws a
1bc70 6e 20 65 78 63 65 70 74 69 6f 6e 20 69 66 20 74  n exception if t
1bc80 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
1bc90 6e 63 65 20 68 61 73 20 62 65 65 6e 20 64 69 73  nce has been dis
1bca0 70 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  posed...        
1bcb0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1bcc0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
1bcd0 76 6f 69 64 20 43 68 65 63 6b 44 69 73 70 6f 73  void CheckDispos
1bce0 65 64 28 29 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  ed() /* throw */
1bcf0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
1bd00 20 54 48 52 4f 57 5f 4f 4e 5f 44 49 53 50 4f 53   THROW_ON_DISPOS
1bd10 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ED..            
1bd20 69 66 20 28 64 69 73 70 6f 73 65 64 29 0d 0a 20  if (disposed).. 
1bd30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
1bd40 68 72 6f 77 20 6e 65 77 20 4f 62 6a 65 63 74 44  hrow new ObjectD
1bd50 69 73 70 6f 73 65 64 45 78 63 65 70 74 69 6f 6e  isposedException
1bd60 28 74 79 70 65 6f 66 28 53 51 4c 69 74 65 53 65  (typeof(SQLiteSe
1bd70 73 73 69 6f 6e 29 2e 4e 61 6d 65 29 3b 0d 0a 23  ssion).Name);..#
1bd80 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d  endif..        }
1bd90 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1bda0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bdb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bdc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bdd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bde0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
1bdf0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1be00 20 20 20 20 20 20 2f 2f 2f 20 44 69 73 70 6f 73        /// Dispos
1be10 65 73 20 6f 72 20 66 69 6e 61 6c 69 7a 65 73 20  es or finalizes 
1be20 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74  this object inst
1be30 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ance...        /
1be40 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1be50 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1be60 6d 20 6e 61 6d 65 3d 22 64 69 73 70 6f 73 69 6e  m name="disposin
1be70 67 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  g">..        ///
1be80 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 69   Non-zero if thi
1be90 73 20 6f 62 6a 65 63 74 20 69 73 20 62 65 69 6e  s object is bein
1bea0 67 20 64 69 73 70 6f 73 65 64 3b 20 6f 74 68 65  g disposed; othe
1beb0 72 77 69 73 65 2c 20 74 68 69 73 20 6f 62 6a 65  rwise, this obje
1bec0 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ct..        /// 
1bed0 69 73 20 62 65 69 6e 67 20 66 69 6e 61 6c 69 7a  is being finaliz
1bee0 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
1bef0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1bf00 20 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65     protected ove
1bf10 72 72 69 64 65 20 76 6f 69 64 20 44 69 73 70 6f  rride void Dispo
1bf20 73 65 28 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e  se(bool disposin
1bf30 67 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  g)..        {.. 
1bf40 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
1bf50 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1bf60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1bf70 66 20 28 21 64 69 73 70 6f 73 65 64 29 0d 0a 20  f (!disposed).. 
1bf80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1bf90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1bfa0 20 20 20 20 20 20 69 66 20 28 64 69 73 70 6f 73        if (dispos
1bfb0 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ing)..          
1bfc0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1bfd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bfe0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1bff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c000 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
1c010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c020 20 20 20 2f 2f 20 64 69 73 70 6f 73 65 20 6d 61     // dispose ma
1c030 6e 61 67 65 64 20 72 65 73 6f 75 72 63 65 73 20  naged resources 
1c040 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20  here.....       
1c050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c060 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1c070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c080 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1c090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c0a0 20 69 66 20 28 78 46 69 6c 74 65 72 20 21 3d 20   if (xFilter != 
1c0b0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
1c0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c0d0 20 20 20 78 46 69 6c 74 65 72 20 3d 20 6e 75 6c     xFilter = nul
1c0e0 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  l;....          
1c0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1c100 20 28 73 74 72 65 61 6d 4d 61 6e 61 67 65 72 20   (streamManager 
1c110 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
1c120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c130 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1c140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c150 20 73 74 72 65 61 6d 4d 61 6e 61 67 65 72 2e 44   streamManager.D
1c160 69 73 70 6f 73 65 28 29 3b 0d 0a 20 20 20 20 20  ispose();..     
1c170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c180 20 20 20 20 20 20 20 73 74 72 65 61 6d 4d 61 6e         streamMan
1c190 61 67 65 72 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20  ager = null;..  
1c1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c1b0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1c1c0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1c1d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1c1e0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1c1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
1c210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c220 20 20 2f 2f 20 72 65 6c 65 61 73 65 20 75 6e 6d    // release unm
1c230 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63 65 73  anaged resources
1c240 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20   here.....      
1c250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1c260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c280 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1c290 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1c2a0 73 65 73 73 69 6f 6e 20 21 3d 20 49 6e 74 50 74  session != IntPt
1c2b0 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
1c2c0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1c2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c2e0 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61          UnsafeNa
1c2f0 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
1c300 74 65 33 73 65 73 73 69 6f 6e 5f 64 65 6c 65 74  te3session_delet
1c310 65 28 73 65 73 73 69 6f 6e 29 3b 0d 0a 20 20 20  e(session);..   
1c320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c330 20 20 20 20 20 73 65 73 73 69 6f 6e 20 3d 20 49       session = I
1c340 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20  ntPtr.Zero;..   
1c350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c360 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
1c370 20 20 20 20 20 20 20 20 20 20 55 6e 6c 6f 63 6b            Unlock
1c380 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
1c390 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1c3a0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1c3b0 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20     finally..    
1c3c0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1c3d0 20 20 20 20 20 20 20 20 20 20 20 62 61 73 65 2e             base.
1c3e0 44 69 73 70 6f 73 65 28 64 69 73 70 6f 73 69 6e  Dispose(disposin
1c3f0 67 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  g);....         
1c400 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
1c410 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
1c420 54 45 3a 20 45 76 65 72 79 74 68 69 6e 67 20 73  TE: Everything s
1c430 68 6f 75 6c 64 20 62 65 20 66 75 6c 6c 79 20 64  hould be fully d
1c440 69 73 70 6f 73 65 64 20 61 74 20 74 68 69 73 20  isposed at this 
1c450 70 6f 69 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20  point...        
1c460 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
1c470 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73 70              disp
1c480 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20  osed = true;..  
1c490 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1c4a0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1c4b0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20  #endregion..    
1c4c0 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  }..    #endregio
1c4d0 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
1c4e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c4f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c520 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
1c530 69 6f 6e 20 53 51 4c 69 74 65 43 68 61 6e 67 65  ion SQLiteChange
1c540 53 65 74 42 61 73 65 20 43 6c 61 73 73 0d 0a 20  SetBase Class.. 
1c550 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1c560 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63  ..    /// This c
1c570 6c 61 73 73 20 72 65 70 72 65 73 65 6e 74 73 20  lass represents 
1c580 74 68 65 20 61 62 73 74 72 61 63 74 20 63 6f 6e  the abstract con
1c590 63 65 70 74 20 6f 66 20 61 20 73 65 74 20 6f 66  cept of a set of
1c5a0 20 63 68 61 6e 67 65 73 2e 20 20 49 74 0d 0a 20   changes.  It.. 
1c5b0 20 20 20 2f 2f 2f 20 61 63 74 73 20 61 73 20 74     /// acts as t
1c5c0 68 65 20 62 61 73 65 20 63 6c 61 73 73 20 66 6f  he base class fo
1c5d0 72 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  r the <see cref=
1c5e0 22 53 51 4c 69 74 65 4d 65 6d 6f 72 79 43 68 61  "SQLiteMemoryCha
1c5f0 6e 67 65 53 65 74 22 20 2f 3e 0d 0a 20 20 20 20  ngeSet" />..    
1c600 2f 2f 2f 20 61 6e 64 20 3c 73 65 65 20 63 72 65  /// and <see cre
1c610 66 3d 22 53 51 4c 69 74 65 53 74 72 65 61 6d 43  f="SQLiteStreamC
1c620 68 61 6e 67 65 53 65 74 22 20 2f 3e 20 63 6c 61  hangeSet" /> cla
1c630 73 73 65 73 2e 20 20 49 74 20 64 65 72 69 76 65  sses.  It derive
1c640 73 20 66 72 6f 6d 0d 0a 20 20 20 20 2f 2f 2f 20  s from..    /// 
1c650 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  the <see cref="S
1c660 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 4c  QLiteConnectionL
1c670 6f 63 6b 22 20 2f 3e 20 63 6c 61 73 73 2c 20 77  ock" /> class, w
1c680 68 69 63 68 20 69 73 20 75 73 65 64 20 74 6f 20  hich is used to 
1c690 68 6f 6c 64 0d 0a 20 20 20 20 2f 2f 2f 20 74 68  hold..    /// th
1c6a0 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 6e 61 74  e underlying nat
1c6b0 69 76 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68  ive connection h
1c6c0 61 6e 64 6c 65 20 6f 70 65 6e 20 75 6e 74 69 6c  andle open until
1c6d0 20 74 68 65 20 69 6e 73 74 61 6e 63 65 73 20 6f   the instances o
1c6e0 66 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 69 73 20  f..    /// this 
1c6f0 63 6c 61 73 73 20 61 72 65 20 64 69 73 70 6f 73  class are dispos
1c700 65 64 20 6f 72 20 66 69 6e 61 6c 69 7a 65 64 2e  ed or finalized.
1c710 20 20 49 74 20 61 6c 73 6f 20 70 72 6f 76 69 64    It also provid
1c720 65 73 20 74 68 65 20 61 62 69 6c 69 74 79 0d 0a  es the ability..
1c730 20 20 20 20 2f 2f 2f 20 74 6f 20 63 6f 6e 73 74      /// to const
1c740 72 75 63 74 20 77 72 61 70 70 65 64 20 6e 61 74  ruct wrapped nat
1c750 69 76 65 20 64 65 6c 65 67 61 74 65 73 20 6f 66  ive delegates of
1c760 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   the..    /// <s
1c770 65 65 20 63 72 65 66 3d 22 55 6e 73 61 66 65 4e  ee cref="UnsafeN
1c780 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 53 65  ativeMethods.xSe
1c790 73 73 69 6f 6e 46 69 6c 74 65 72 22 20 2f 3e 20  ssionFilter" /> 
1c7a0 61 6e 64 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65  and..    /// <se
1c7b0 65 20 63 72 65 66 3d 22 55 6e 73 61 66 65 4e 61  e cref="UnsafeNa
1c7c0 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 53 65 73  tiveMethods.xSes
1c7d0 73 69 6f 6e 43 6f 6e 66 6c 69 63 74 22 20 2f 3e  sionConflict" />
1c7e0 20 74 79 70 65 73 2e 0d 0a 20 20 20 20 2f 2f 2f   types...    ///
1c7f0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1c800 20 69 6e 74 65 72 6e 61 6c 20 63 6c 61 73 73 20   internal class 
1c810 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65 74 42  SQLiteChangeSetB
1c820 61 73 65 20 3a 20 53 51 4c 69 74 65 43 6f 6e 6e  ase : SQLiteConn
1c830 65 63 74 69 6f 6e 4c 6f 63 6b 0d 0a 20 20 20 20  ectionLock..    
1c840 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  {..        #regi
1c850 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74  on Private Const
1c860 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20  ructors..       
1c870 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1c880 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73          /// Cons
1c890 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e  tructs an instan
1c8a0 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73  ce of this class
1c8b0 20 75 73 69 6e 67 20 74 68 65 20 73 70 65 63 69   using the speci
1c8c0 66 69 65 64 20 77 72 61 70 70 65 64 0d 0a 20 20  fied wrapped..  
1c8d0 20 20 20 20 20 20 2f 2f 2f 20 6e 61 74 69 76 65        /// native
1c8e0 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64   connection hand
1c8f0 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
1c900 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1c910 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1c920 6e 61 6d 65 3d 22 68 61 6e 64 6c 65 22 3e 0d 0a  name="handle">..
1c930 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1c940 77 72 61 70 70 65 64 20 6e 61 74 69 76 65 20 63  wrapped native c
1c950 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65  onnection handle
1c960 20 74 6f 20 62 65 20 61 73 73 6f 63 69 61 74 65   to be associate
1c970 64 20 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20  d with this..   
1c980 20 20 20 20 20 2f 2f 2f 20 63 68 61 6e 67 65 20       /// change 
1c990 73 65 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  set...        //
1c9a0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1c9b0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1c9c0 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a 20 20  ame="flags">..  
1c9d0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c        /// The fl
1c9e0 61 67 73 20 61 73 73 6f 63 69 61 74 65 64 20 77  ags associated w
1c9f0 69 74 68 20 74 68 65 20 63 6f 6e 6e 65 63 74 69  ith the connecti
1ca00 6f 6e 20 72 65 70 72 65 73 65 6e 74 65 64 20 62  on represented b
1ca10 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  y the..        /
1ca20 2f 2f 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d  // <paramref nam
1ca30 65 3d 22 68 61 6e 64 6c 65 22 20 2f 3e 20 76 61  e="handle" /> va
1ca40 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  lue...        //
1ca50 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1ca60 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c      internal SQL
1ca70 69 74 65 43 68 61 6e 67 65 53 65 74 42 61 73 65  iteChangeSetBase
1ca80 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
1ca90 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
1caa0 61 6e 64 6c 65 20 68 61 6e 64 6c 65 2c 0d 0a 20  andle handle,.. 
1cab0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
1cac0 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
1cad0 20 66 6c 61 67 73 0d 0a 20 20 20 20 20 20 20 20   flags..        
1cae0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
1caf0 20 20 20 3a 20 62 61 73 65 28 68 61 6e 64 6c 65     : base(handle
1cb00 2c 20 66 6c 61 67 73 2c 20 74 72 75 65 29 0d 0a  , flags, true)..
1cb10 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1cb20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
1cb30 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 7d  hing...        }
1cb40 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
1cb50 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
1cb60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cba0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1cbb0 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
1cbc0 74 65 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  te Methods..    
1cbd0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1cbe0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
1cbf0 72 65 61 74 65 73 20 61 6e 64 20 72 65 74 75 72  reates and retur
1cc00 6e 73 20 61 20 63 6f 6e 63 72 65 74 65 20 69 6d  ns a concrete im
1cc10 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20  plementation of 
1cc20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
1cc30 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
1cc40 69 74 65 43 68 61 6e 67 65 53 65 74 4d 65 74 61  iteChangeSetMeta
1cc50 64 61 74 61 49 74 65 6d 22 20 2f 3e 20 69 6e 74  dataItem" /> int
1cc60 65 72 66 61 63 65 2e 0d 0a 20 20 20 20 20 20 20  erface...       
1cc70 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1cc80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1cc90 72 61 6d 20 6e 61 6d 65 3d 22 69 74 65 72 61 74  ram name="iterat
1cca0 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  or">..        //
1ccb0 2f 20 54 68 65 20 6e 61 74 69 76 65 20 69 74 65  / The native ite
1ccc0 72 61 74 6f 72 20 68 61 6e 64 6c 65 20 74 6f 20  rator handle to 
1ccd0 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  use...        //
1cce0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1ccf0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
1cd00 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
1cd10 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68  n instance of th
1cd20 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
1cd30 4c 69 74 65 43 68 61 6e 67 65 53 65 74 4d 65 74  LiteChangeSetMet
1cd40 61 64 61 74 61 49 74 65 6d 22 2f 3e 0d 0a 20 20  adataItem"/>..  
1cd50 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65 72 66        /// interf
1cd60 61 63 65 2c 20 77 68 69 63 68 20 63 61 6e 20 62  ace, which can b
1cd70 65 20 75 73 65 64 20 74 6f 20 66 65 74 63 68 20  e used to fetch 
1cd80 6d 65 74 61 64 61 74 61 20 61 73 73 6f 63 69 61  metadata associa
1cd90 74 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20  ted with..      
1cda0 20 20 2f 2f 2f 20 74 68 65 20 63 75 72 72 65 6e    /// the curren
1cdb0 74 20 69 74 65 6d 20 69 6e 20 74 68 69 73 20 73  t item in this s
1cdc0 65 74 20 6f 66 20 63 68 61 6e 67 65 73 2e 0d 0a  et of changes...
1cdd0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
1cde0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1cdf0 70 72 69 76 61 74 65 20 49 53 51 4c 69 74 65 43  private ISQLiteC
1ce00 68 61 6e 67 65 53 65 74 4d 65 74 61 64 61 74 61  hangeSetMetadata
1ce10 49 74 65 6d 20 43 72 65 61 74 65 4d 65 74 61 64  Item CreateMetad
1ce20 61 74 61 49 74 65 6d 28 0d 0a 20 20 20 20 20 20  ataItem(..      
1ce30 20 20 20 20 20 20 49 6e 74 50 74 72 20 69 74 65        IntPtr ite
1ce40 72 61 74 6f 72 0d 0a 20 20 20 20 20 20 20 20 20  rator..         
1ce50 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
1ce60 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
1ce70 75 72 6e 20 6e 65 77 20 53 51 4c 69 74 65 43 68  urn new SQLiteCh
1ce80 61 6e 67 65 53 65 74 4d 65 74 61 64 61 74 61 49  angeSetMetadataI
1ce90 74 65 6d 28 0d 0a 20 20 20 20 20 20 20 20 20 20  tem(..          
1cea0 20 20 20 20 20 20 53 51 4c 69 74 65 43 68 61 6e        SQLiteChan
1ceb0 67 65 53 65 74 49 74 65 72 61 74 6f 72 2e 41 74  geSetIterator.At
1cec0 74 61 63 68 28 69 74 65 72 61 74 6f 72 29 29 3b  tach(iterator));
1ced0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
1cee0 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
1cef0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1cf00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cf10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cf20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cf30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cf40 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
1cf50 65 67 69 6f 6e 20 50 72 6f 74 65 63 74 65 64 20  egion Protected 
1cf60 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
1cf70 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1cf80 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65          /// Atte
1cf90 6d 70 74 73 20 74 6f 20 63 72 65 61 74 65 20 61  mpts to create a
1cfa0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1cfb0 65 65 20 63 72 65 66 3d 22 55 6e 73 61 66 65 4e  ee cref="UnsafeN
1cfc0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 53 65  ativeMethods.xSe
1cfd0 73 73 69 6f 6e 46 69 6c 74 65 72 22 20 2f 3e 20  ssionFilter" /> 
1cfe0 6e 61 74 69 76 65 20 64 65 6c 65 67 61 74 65 0d  native delegate.
1cff0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 61  .        /// tha
1d000 74 20 69 6e 76 6f 6b 65 73 20 74 68 65 20 73 70  t invokes the sp
1d010 65 63 69 66 69 65 64 0d 0a 20 20 20 20 20 20 20  ecified..       
1d020 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
1d030 53 65 73 73 69 6f 6e 54 61 62 6c 65 46 69 6c 74  SessionTableFilt
1d040 65 72 43 61 6c 6c 62 61 63 6b 22 20 2f 3e 20 64  erCallback" /> d
1d050 65 6c 65 67 61 74 65 2e 0d 0a 20 20 20 20 20 20  elegate...      
1d060 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1d070 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1d080 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65  aram name="table
1d090 46 69 6c 74 65 72 43 61 6c 6c 62 61 63 6b 22 3e  FilterCallback">
1d0a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1d0b0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 65 73  e <see cref="Ses
1d0c0 73 69 6f 6e 54 61 62 6c 65 46 69 6c 74 65 72 43  sionTableFilterC
1d0d0 61 6c 6c 62 61 63 6b 22 20 2f 3e 20 74 6f 20 69  allback" /> to i
1d0e0 6e 76 6f 6b 65 20 77 68 65 6e 20 74 68 65 0d 0a  nvoke when the..
1d0f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
1d100 20 63 72 65 66 3d 22 55 6e 73 61 66 65 4e 61 74   cref="UnsafeNat
1d110 69 76 65 4d 65 74 68 6f 64 73 2e 78 53 65 73 73  iveMethods.xSess
1d120 69 6f 6e 46 69 6c 74 65 72 22 20 2f 3e 20 6e 61  ionFilter" /> na
1d130 74 69 76 65 20 64 65 6c 65 67 61 74 65 0d 0a 20  tive delegate.. 
1d140 20 20 20 20 20 20 20 2f 2f 2f 20 69 73 20 63 61         /// is ca
1d150 6c 6c 65 64 2e 20 20 49 66 20 74 68 69 73 20 76  lled.  If this v
1d160 61 6c 75 65 20 69 73 20 6e 75 6c 6c 20 74 68 65  alue is null the
1d170 6e 20 6e 75 6c 6c 20 69 73 20 72 65 74 75 72 6e  n null is return
1d180 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
1d190 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1d1a0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1d1b0 6d 65 3d 22 63 6c 69 65 6e 74 44 61 74 61 22 3e  me="clientData">
1d1c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1d1d0 65 20 6f 70 74 69 6f 6e 61 6c 20 61 70 70 6c 69  e optional appli
1d1e0 63 61 74 69 6f 6e 2d 64 65 66 69 6e 65 64 20 63  cation-defined c
1d1f0 6f 6e 74 65 78 74 20 64 61 74 61 2e 20 20 54 68  ontext data.  Th
1d200 69 73 20 76 61 6c 75 65 20 6d 61 79 20 62 65 0d  is value may be.
1d210 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 75 6c  .        /// nul
1d220 6c 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  l...        /// 
1d230 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1d240 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
1d250 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1d260 20 63 72 65 61 74 65 64 20 3c 73 65 65 20 63 72   created <see cr
1d270 65 66 3d 22 55 6e 73 61 66 65 4e 61 74 69 76 65  ef="UnsafeNative
1d280 4d 65 74 68 6f 64 73 2e 78 53 65 73 73 69 6f 6e  Methods.xSession
1d290 46 69 6c 74 65 72 22 20 2f 3e 0d 0a 20 20 20 20  Filter" />..    
1d2a0 20 20 20 20 2f 2f 2f 20 6e 61 74 69 76 65 20 64      /// native d
1d2b0 65 6c 65 67 61 74 65 20 2d 4f 52 2d 20 6e 75 6c  elegate -OR- nul
1d2c0 6c 20 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62  l if it cannot b
1d2d0 65 20 63 72 65 61 74 65 64 2e 0d 0a 20 20 20 20  e created...    
1d2e0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
1d2f0 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74  s>..        prot
1d300 65 63 74 65 64 20 55 6e 73 61 66 65 4e 61 74 69  ected UnsafeNati
1d310 76 65 4d 65 74 68 6f 64 73 2e 78 53 65 73 73 69  veMethods.xSessi
1d320 6f 6e 46 69 6c 74 65 72 20 47 65 74 44 65 6c 65  onFilter GetDele
1d330 67 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20  gate(..         
1d340 20 20 20 53 65 73 73 69 6f 6e 54 61 62 6c 65 46     SessionTableF
1d350 69 6c 74 65 72 43 61 6c 6c 62 61 63 6b 20 74 61  ilterCallback ta
1d360 62 6c 65 46 69 6c 74 65 72 43 61 6c 6c 62 61 63  bleFilterCallbac
1d370 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k,..            
1d380 6f 62 6a 65 63 74 20 63 6c 69 65 6e 74 44 61 74  object clientDat
1d390 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  a..            )
1d3a0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
1d3b0 20 20 20 20 20 20 20 20 20 69 66 20 28 74 61 62           if (tab
1d3c0 6c 65 46 69 6c 74 65 72 43 61 6c 6c 62 61 63 6b  leFilterCallback
1d3d0 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
1d3e0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1d3f0 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  n null;....     
1d400 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74         UnsafeNat
1d410 69 76 65 4d 65 74 68 6f 64 73 2e 78 53 65 73 73  iveMethods.xSess
1d420 69 6f 6e 46 69 6c 74 65 72 20 78 46 69 6c 74 65  ionFilter xFilte
1d430 72 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  r;....          
1d440 20 20 78 46 69 6c 74 65 72 20 3d 20 6e 65 77 20    xFilter = new 
1d450 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
1d460 6f 64 73 2e 78 53 65 73 73 69 6f 6e 46 69 6c 74  ods.xSessionFilt
1d470 65 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  er(..           
1d480 20 20 20 20 20 64 65 6c 65 67 61 74 65 28 49 6e       delegate(In
1d490 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 49 6e  tPtr context, In
1d4a0 74 50 74 72 20 70 54 62 6c 4e 61 6d 65 29 0d 0a  tPtr pTblName)..
1d4b0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1d4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
1d4d0 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
1d4e0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1d4f0 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
1d500 67 20 6e 61 6d 65 20 3d 20 53 51 4c 69 74 65 53  g name = SQLiteS
1d510 74 72 69 6e 67 2e 53 74 72 69 6e 67 46 72 6f 6d  tring.StringFrom
1d520 55 74 66 38 49 6e 74 50 74 72 28 0d 0a 20 20 20  Utf8IntPtr(..   
1d530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d540 20 20 20 20 20 70 54 62 6c 4e 61 6d 65 29 3b 0d       pTblName);.
1d550 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1d560 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 61         return ta
1d570 62 6c 65 46 69 6c 74 65 72 43 61 6c 6c 62 61 63  bleFilterCallbac
1d580 6b 28 63 6c 69 65 6e 74 44 61 74 61 2c 20 6e 61  k(clientData, na
1d590 6d 65 29 20 3f 20 31 20 3a 20 30 3b 0d 0a 20 20  me) ? 1 : 0;..  
1d5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1d5b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d5c0 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f   catch (Exceptio
1d5d0 6e 20 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20  n e)..          
1d5e0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1d5f0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
1d600 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d610 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1d620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d630 20 69 66 20 28 48 65 6c 70 65 72 4d 65 74 68 6f   if (HelperMetho
1d640 64 73 2e 4c 6f 67 43 61 6c 6c 62 61 63 6b 45 78  ds.LogCallbackEx
1d650 63 65 70 74 69 6f 6e 73 28 47 65 74 46 6c 61 67  ceptions(GetFlag
1d660 73 28 29 29 29 0d 0a 20 20 20 20 20 20 20 20 20  s()))..         
1d670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1d680 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
1d6a0 4c 69 74 65 4c 6f 67 2e 4c 6f 67 4d 65 73 73 61  LiteLog.LogMessa
1d6b0 67 65 28 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  ge( /* throw */.
1d6c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d6d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d6e0 20 53 51 4c 69 74 65 42 61 73 65 2e 43 4f 52 5f   SQLiteBase.COR_
1d6f0 45 5f 45 58 43 45 50 54 49 4f 4e 2c 0d 0a 20 20  E_EXCEPTION,..  
1d700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 48 65                He
1d720 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
1d730 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
1d740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d750 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
1d760 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
1d770 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
1d780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d790 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61          UnsafeNa
1d7a0 74 69 76 65 4d 65 74 68 6f 64 73 2e 45 78 63 65  tiveMethods.Exce
1d7b0 70 74 69 6f 6e 4d 65 73 73 61 67 65 46 6f 72 6d  ptionMessageForm
1d7c0 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at,..           
1d7d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d7e0 20 20 20 20 20 22 78 53 65 73 73 69 6f 6e 46 69       "xSessionFi
1d7f0 6c 74 65 72 22 2c 20 65 29 29 3b 0d 0a 20 20 20  lter", e));..   
1d800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d810 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1d820 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1d830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d840 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
1d850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1d860 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d870 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
1d880 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
1d890 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1d8a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d8b0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
1d8c0 20 20 20 20 20 72 65 74 75 72 6e 20 30 3b 0d 0a       return 0;..
1d8d0 20 20 20 20 20 20 20 20 20 20 20 20 7d 29 3b 0d              });.
1d8e0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
1d8f0 65 74 75 72 6e 20 78 46 69 6c 74 65 72 3b 0d 0a  eturn xFilter;..
1d900 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1d910 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1d920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1d960 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
1d970 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1d980 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20 63  // Attempts to c
1d990 72 65 61 74 65 20 61 0d 0a 20 20 20 20 20 20 20  reate a..       
1d9a0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
1d9b0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
1d9c0 6f 64 73 2e 78 53 65 73 73 69 6f 6e 43 6f 6e 66  ods.xSessionConf
1d9d0 6c 69 63 74 22 20 2f 3e 20 6e 61 74 69 76 65 20  lict" /> native 
1d9e0 64 65 6c 65 67 61 74 65 0d 0a 20 20 20 20 20 20  delegate..      
1d9f0 20 20 2f 2f 2f 20 74 68 61 74 20 69 6e 76 6f 6b    /// that invok
1da00 65 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64  es the specified
1da10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1da20 65 65 20 63 72 65 66 3d 22 53 65 73 73 69 6f 6e  ee cref="Session
1da30 43 6f 6e 66 6c 69 63 74 43 61 6c 6c 62 61 63 6b  ConflictCallback
1da40 22 20 2f 3e 20 64 65 6c 65 67 61 74 65 2e 0d 0a  " /> delegate...
1da50 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
1da60 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1da70 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1da80 22 63 6f 6e 66 6c 69 63 74 43 61 6c 6c 62 61 63  "conflictCallbac
1da90 6b 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  k">..        ///
1daa0 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
1dab0 53 65 73 73 69 6f 6e 43 6f 6e 66 6c 69 63 74 43  SessionConflictC
1dac0 61 6c 6c 62 61 63 6b 22 20 2f 3e 20 74 6f 20 69  allback" /> to i
1dad0 6e 76 6f 6b 65 20 77 68 65 6e 20 74 68 65 0d 0a  nvoke when the..
1dae0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
1daf0 20 63 72 65 66 3d 22 55 6e 73 61 66 65 4e 61 74   cref="UnsafeNat
1db00 69 76 65 4d 65 74 68 6f 64 73 2e 78 53 65 73 73  iveMethods.xSess
1db10 69 6f 6e 43 6f 6e 66 6c 69 63 74 22 20 2f 3e 20  ionConflict" /> 
1db20 6e 61 74 69 76 65 20 64 65 6c 65 67 61 74 65 0d  native delegate.
1db30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 73 20  .        /// is 
1db40 63 61 6c 6c 65 64 2e 20 20 49 66 20 74 68 69 73  called.  If this
1db50 20 76 61 6c 75 65 20 69 73 20 6e 75 6c 6c 20 74   value is null t
1db60 68 65 6e 20 6e 75 6c 6c 20 69 73 20 72 65 74 75  hen null is retu
1db70 72 6e 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  rned...        /
1db80 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1db90 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1dba0 6e 61 6d 65 3d 22 63 6c 69 65 6e 74 44 61 74 61  name="clientData
1dbb0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1dbc0 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 61 70 70  The optional app
1dbd0 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69 6e 65 64  lication-defined
1dbe0 20 63 6f 6e 74 65 78 74 20 64 61 74 61 2e 20 20   context data.  
1dbf0 54 68 69 73 20 76 61 6c 75 65 20 6d 61 79 20 62  This value may b
1dc00 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e  e..        /// n
1dc10 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ull...        //
1dc20 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1dc30 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
1dc40 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1dc50 68 65 20 63 72 65 61 74 65 64 20 3c 73 65 65 20  he created <see 
1dc60 63 72 65 66 3d 22 55 6e 73 61 66 65 4e 61 74 69  cref="UnsafeNati
1dc70 76 65 4d 65 74 68 6f 64 73 2e 78 53 65 73 73 69  veMethods.xSessi
1dc80 6f 6e 43 6f 6e 66 6c 69 63 74 22 20 2f 3e 0d 0a  onConflict" />..
1dc90 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 61 74 69          /// nati
1dca0 76 65 20 64 65 6c 65 67 61 74 65 20 2d 4f 52 2d  ve delegate -OR-
1dcb0 20 6e 75 6c 6c 20 69 66 20 69 74 20 63 61 6e 6e   null if it cann
1dcc0 6f 74 20 62 65 20 63 72 65 61 74 65 64 2e 0d 0a  ot be created...
1dcd0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
1dce0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1dcf0 70 72 6f 74 65 63 74 65 64 20 55 6e 73 61 66 65  protected Unsafe
1dd00 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 53  NativeMethods.xS
1dd10 65 73 73 69 6f 6e 43 6f 6e 66 6c 69 63 74 20 47  essionConflict G
1dd20 65 74 44 65 6c 65 67 61 74 65 28 0d 0a 20 20 20  etDelegate(..   
1dd30 20 20 20 20 20 20 20 20 20 53 65 73 73 69 6f 6e           Session
1dd40 43 6f 6e 66 6c 69 63 74 43 61 6c 6c 62 61 63 6b  ConflictCallback
1dd50 20 63 6f 6e 66 6c 69 63 74 43 61 6c 6c 62 61 63   conflictCallbac
1dd60 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k,..            
1dd70 6f 62 6a 65 63 74 20 63 6c 69 65 6e 74 44 61 74  object clientDat
1dd80 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  a..            )
1dd90 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
1dda0 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e           if (con
1ddb0 66 6c 69 63 74 43 61 6c 6c 62 61 63 6b 20 3d 3d  flictCallback ==
1ddc0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
1ddd0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
1dde0 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
1ddf0 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
1de00 4d 65 74 68 6f 64 73 2e 78 53 65 73 73 69 6f 6e  Methods.xSession
1de10 43 6f 6e 66 6c 69 63 74 20 78 43 6f 6e 66 6c 69  Conflict xConfli
1de20 63 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ct;....         
1de30 20 20 20 78 43 6f 6e 66 6c 69 63 74 20 3d 20 6e     xConflict = n
1de40 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
1de50 65 74 68 6f 64 73 2e 78 53 65 73 73 69 6f 6e 43  ethods.xSessionC
1de60 6f 6e 66 6c 69 63 74 28 0d 0a 20 20 20 20 20 20  onflict(..      
1de70 20 20 20 20 20 20 20 20 20 20 64 65 6c 65 67 61            delega
1de80 74 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  te(IntPtr contex
1de90 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
1dea0 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
1deb0 69 74 65 43 68 61 6e 67 65 53 65 74 43 6f 6e 66  iteChangeSetConf
1dec0 6c 69 63 74 54 79 70 65 20 74 79 70 65 2c 0d 0a  lictType type,..
1ded0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dee0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
1def0 69 74 65 72 61 74 6f 72 29 0d 0a 20 20 20 20 20  iterator)..     
1df00 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1df10 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
1df20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1df30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1df40 20 20 20 20 20 20 49 53 51 4c 69 74 65 43 68 61        ISQLiteCha
1df50 6e 67 65 53 65 74 4d 65 74 61 64 61 74 61 49 74  ngeSetMetadataIt
1df60 65 6d 20 69 74 65 6d 20 3d 20 43 72 65 61 74 65  em item = Create
1df70 4d 65 74 61 64 61 74 61 49 74 65 6d 28 0d 0a 20  MetadataItem(.. 
1df80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1df90 20 20 20 20 20 20 20 69 74 65 72 61 74 6f 72 29         iterator)
1dfa0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1dfb0 20 20 20 20 20 20 20 20 20 69 66 20 28 69 74 65           if (ite
1dfc0 6d 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  m == null)..    
1dfd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dfe0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1dff0 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
1e000 20 6e 65 77 20 53 51 4c 69 74 65 45 78 63 65 70   new SQLiteExcep
1e010 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  tion(..         
1e020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e030 20 20 20 22 63 6f 75 6c 64 20 6e 6f 74 20 63 72     "could not cr
1e040 65 61 74 65 20 6d 65 74 61 64 61 74 61 20 69 74  eate metadata it
1e050 65 6d 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  em");..         
1e060 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
1e070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e080 20 20 20 20 72 65 74 75 72 6e 20 63 6f 6e 66 6c      return confl
1e090 69 63 74 43 61 6c 6c 62 61 63 6b 28 63 6c 69 65  ictCallback(clie
1e0a0 6e 74 44 61 74 61 2c 20 74 79 70 65 2c 20 69 74  ntData, type, it
1e0b0 65 6d 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  em);..          
1e0c0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1e0d0 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
1e0e0 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 20 20  Exception e)..  
1e0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1e100 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e110 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
1e120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1e130 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e140 20 20 20 20 20 20 20 20 20 69 66 20 28 48 65 6c           if (Hel
1e150 70 65 72 4d 65 74 68 6f 64 73 2e 4c 6f 67 43 61  perMethods.LogCa
1e160 6c 6c 62 61 63 6b 45 78 63 65 70 74 69 6f 6e 73  llbackExceptions
1e170 28 47 65 74 46 6c 61 67 73 28 29 29 29 0d 0a 20  (GetFlags())).. 
1e180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e190 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1e1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e1b0 20 20 20 20 20 20 53 51 4c 69 74 65 4c 6f 67 2e        SQLiteLog.
1e1c0 4c 6f 67 4d 65 73 73 61 67 65 28 20 2f 2a 20 74  LogMessage( /* t
1e1d0 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
1e1e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e1f0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42           SQLiteB
1e200 61 73 65 2e 43 4f 52 5f 45 5f 45 58 43 45 50 54  ase.COR_E_EXCEPT
1e210 49 4f 4e 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ION,..          
1e220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e230 20 20 20 20 20 20 48 65 6c 70 65 72 4d 65 74 68        HelperMeth
1e240 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
1e250 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
1e260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e270 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
1e280 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
1e290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e2b0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
1e2c0 6f 64 73 2e 45 78 63 65 70 74 69 6f 6e 4d 65 73  ods.ExceptionMes
1e2d0 73 61 67 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20  sageFormat,..   
1e2e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e2f0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 78 53               "xS
1e300 65 73 73 69 6f 6e 43 6f 6e 66 6c 69 63 74 22 2c  essionConflict",
1e310 20 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20   e));..         
1e320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1e330 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1e340 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1e350 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
1e360 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
1e370 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1e380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e390 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
1e3a0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1e3b0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1e3c0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
1e3d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1e3e0 65 74 75 72 6e 20 53 51 4c 69 74 65 43 68 61 6e  eturn SQLiteChan
1e3f0 67 65 53 65 74 43 6f 6e 66 6c 69 63 74 52 65 73  geSetConflictRes
1e400 75 6c 74 2e 41 62 6f 72 74 3b 0d 0a 20 20 20 20  ult.Abort;..    
1e410 20 20 20 20 20 20 20 20 7d 29 3b 0d 0a 0d 0a 20          });.... 
1e420 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1e430 6e 20 78 43 6f 6e 66 6c 69 63 74 3b 0d 0a 20 20  n xConflict;..  
1e440 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1e450 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
1e460 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1e470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e4a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1e4b0 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
1e4c0 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20 22 50  n IDisposable "P
1e4d0 61 74 74 65 72 6e 22 20 4d 65 6d 62 65 72 73 0d  attern" Members.
1e4e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
1e4f0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1e500 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
1e510 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74  this object inst
1e520 61 6e 63 65 20 68 61 73 20 62 65 65 6e 20 64 69  ance has been di
1e530 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 20  sposed...       
1e540 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1e550 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
1e560 20 62 6f 6f 6c 20 64 69 73 70 6f 73 65 64 3b 0d   bool disposed;.
1e570 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1e580 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1e590 20 20 2f 2f 2f 20 54 68 72 6f 77 73 20 61 6e 20    /// Throws an 
1e5a0 65 78 63 65 70 74 69 6f 6e 20 69 66 20 74 68 69  exception if thi
1e5b0 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  s object instanc
1e5c0 65 20 68 61 73 20 62 65 65 6e 20 64 69 73 70 6f  e has been dispo
1e5d0 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  sed...        //
1e5e0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1e5f0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 76 6f        private vo
1e600 69 64 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64  id CheckDisposed
1e610 28 29 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  () /* throw */..
1e620 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 54          {..#if T
1e630 48 52 4f 57 5f 4f 4e 5f 44 49 53 50 4f 53 45 44  HROW_ON_DISPOSED
1e640 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
1e650 20 28 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20   (disposed)..   
1e660 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1e670 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
1e680 77 20 6e 65 77 20 4f 62 6a 65 63 74 44 69 73 70  w new ObjectDisp
1e690 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 28 0d 0a  osedException(..
1e6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e6b0 20 20 20 20 74 79 70 65 6f 66 28 53 51 4c 69 74      typeof(SQLit
1e6c0 65 43 68 61 6e 67 65 53 65 74 42 61 73 65 29 2e  eChangeSetBase).
1e6d0 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  Name);..        
1e6e0 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
1e6f0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1e700 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1e710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1e750 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
1e760 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1e770 2f 20 44 69 73 70 6f 73 65 73 20 6f 72 20 66 69  / Disposes or fi
1e780 6e 61 6c 69 7a 65 73 20 74 68 69 73 20 6f 62 6a  nalizes this obj
1e790 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20  ect instance... 
1e7a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
1e7b0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1e7c0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1e7d0 64 69 73 70 6f 73 69 6e 67 22 3e 0d 0a 20 20 20  disposing">..   
1e7e0 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
1e7f0 6f 20 69 66 20 74 68 69 73 20 6f 62 6a 65 63 74  o if this object
1e800 20 69 73 20 62 65 69 6e 67 20 64 69 73 70 6f 73   is being dispos
1e810 65 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 74  ed; otherwise, t
1e820 68 69 73 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20  his object..    
1e830 20 20 20 20 2f 2f 2f 20 69 73 20 62 65 69 6e 67      /// is being
1e840 20 66 69 6e 61 6c 69 7a 65 64 2e 0d 0a 20 20 20   finalized...   
1e850 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1e860 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65  >..        prote
1e870 63 74 65 64 20 6f 76 65 72 72 69 64 65 20 76 6f  cted override vo
1e880 69 64 20 44 69 73 70 6f 73 65 28 62 6f 6f 6c 20  id Dispose(bool 
1e890 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20  disposing)..    
1e8a0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1e8b0 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
1e8c0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1e8d0 20 20 20 20 20 20 20 69 66 20 28 21 64 69 73 70         if (!disp
1e8e0 6f 73 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20  osed)..         
1e8f0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1e900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1e910 20 28 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20   (disposing)..  
1e920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e930 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1e940 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f               ///
1e950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e970 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1e980 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 69             // di
1e990 73 70 6f 73 65 20 6d 61 6e 61 67 65 64 20 72 65  spose managed re
1e9a0 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d  sources here....
1e9b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e9c0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
1e9d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e9e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
1e9f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ea00 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1ea10 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
1ea20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ea30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ea40 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
1ea50 20 20 20 20 20 20 20 20 2f 2f 20 72 65 6c 65 61          // relea
1ea60 73 65 20 75 6e 6d 61 6e 61 67 65 64 20 72 65 73  se unmanaged res
1ea70 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a  ources here.....
1ea80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ea90 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1eaa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1eac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ead0 20 20 55 6e 6c 6f 63 6b 28 29 3b 0d 0a 20 20 20    Unlock();..   
1eae0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1eaf0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1eb00 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c             final
1eb10 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ly..            
1eb20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1eb30 20 20 20 62 61 73 65 2e 44 69 73 70 6f 73 65 28     base.Dispose(
1eb40 64 69 73 70 6f 73 69 6e 67 29 3b 0d 0a 0d 0a 20  disposing);.... 
1eb50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
1eb60 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1eb70 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 45 76 65 72     // NOTE: Ever
1eb80 79 74 68 69 6e 67 20 73 68 6f 75 6c 64 20 62 65  ything should be
1eb90 20 66 75 6c 6c 79 20 64 69 73 70 6f 73 65 64 20   fully disposed 
1eba0 61 74 20 74 68 69 73 20 70 6f 69 6e 74 2e 0d 0a  at this point...
1ebb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ebc0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
1ebd0 20 20 20 20 64 69 73 70 6f 73 65 64 20 3d 20 74      disposed = t
1ebe0 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
1ebf0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
1ec00 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
1ec10 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  on..    }..    #
1ec20 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
1ec30 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1ec40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ec50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ec60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ec70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1ec80 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69      #region SQLi
1ec90 74 65 4d 65 6d 6f 72 79 43 68 61 6e 67 65 53 65  teMemoryChangeSe
1eca0 74 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f  t Class..    ///
1ecb0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1ecc0 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 72  /// This class r
1ecd0 65 70 72 65 73 65 6e 74 73 20 61 20 73 65 74 20  epresents a set 
1ece0 6f 66 20 63 68 61 6e 67 65 73 20 63 6f 6e 74 61  of changes conta
1ecf0 69 6e 65 64 20 65 6e 74 69 72 65 6c 79 20 69 6e  ined entirely in
1ed00 20 6d 65 6d 6f 72 79 2e 0d 0a 20 20 20 20 2f 2f   memory...    //
1ed10 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1ed20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65    internal seale
1ed30 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 4d 65  d class SQLiteMe
1ed40 6d 6f 72 79 43 68 61 6e 67 65 53 65 74 20 3a 0d  moryChangeSet :.
1ed50 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43  .        SQLiteC
1ed60 68 61 6e 67 65 53 65 74 42 61 73 65 2c 20 49 53  hangeSetBase, IS
1ed70 51 4c 69 74 65 43 68 61 6e 67 65 53 65 74 0d 0a  QLiteChangeSet..
1ed80 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23      {..        #
1ed90 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44  region Private D
1eda0 61 74 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ata..        ///
1edb0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1edc0 20 20 20 20 2f 2f 2f 20 54 68 65 20 72 61 77 20      /// The raw 
1edd0 62 79 74 65 20 64 61 74 61 20 66 6f 72 20 74 68  byte data for th
1ede0 69 73 20 73 65 74 20 6f 66 20 63 68 61 6e 67 65  is set of change
1edf0 73 2e 20 20 53 69 6e 63 65 20 74 68 69 73 20 64  s.  Since this d
1ee00 61 74 61 20 6d 75 73 74 0d 0a 20 20 20 20 20 20  ata must..      
1ee10 20 20 2f 2f 2f 20 62 65 20 6d 61 72 73 68 61 6c    /// be marshal
1ee20 6c 65 64 20 74 6f 20 61 20 6e 61 74 69 76 65 20  led to a native 
1ee30 6d 65 6d 6f 72 79 20 62 75 66 66 65 72 20 62 65  memory buffer be
1ee40 66 6f 72 65 20 62 65 69 6e 67 20 75 73 65 64 2c  fore being used,
1ee50 20 74 68 65 72 65 0d 0a 20 20 20 20 20 20 20 20   there..        
1ee60 2f 2f 2f 20 6d 75 73 74 20 62 65 20 65 6e 6f 75  /// must be enou
1ee70 67 68 20 6d 65 6d 6f 72 79 20 61 76 61 69 6c 61  gh memory availa
1ee80 62 6c 65 20 74 6f 20 73 74 6f 72 65 20 61 74 20  ble to store at 
1ee90 6c 65 61 73 74 20 74 77 6f 20 74 69 6d 65 73 20  least two times 
1eea0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
1eeb0 20 61 6d 6f 75 6e 74 20 6f 66 20 64 61 74 61 20   amount of data 
1eec0 63 6f 6e 74 61 69 6e 65 64 20 77 69 74 68 69 6e  contained within
1eed0 20 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f   it...        //
1eee0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1eef0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62 79        private by
1ef00 74 65 5b 5d 20 72 61 77 44 61 74 61 3b 0d 0a 20  te[] rawData;.. 
1ef10 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
1ef20 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
1ef30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ef40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ef50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ef60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ef70 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1ef80 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
1ef90 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20  Constructors..  
1efa0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1efb0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1efc0 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69   Constructs an i
1efd0 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20  nstance of this 
1efe0 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68 65 20  class using the 
1eff0 73 70 65 63 69 66 69 65 64 20 72 61 77 20 62 79  specified raw by
1f000 74 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  te..        /// 
1f010 64 61 74 61 20 61 6e 64 20 77 72 61 70 70 65 64  data and wrapped
1f020 20 6e 61 74 69 76 65 20 63 6f 6e 6e 65 63 74 69   native connecti
1f030 6f 6e 20 68 61 6e 64 6c 65 2e 0d 0a 20 20 20 20  on handle...    
1f040 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1f050 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1f060 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 72 61 77  <param name="raw
1f070 44 61 74 61 22 3e 0d 0a 20 20 20 20 20 20 20 20  Data">..        
1f080 2f 2f 2f 20 54 68 65 20 72 61 77 20 62 79 74 65  /// The raw byte
1f090 20 64 61 74 61 20 66 6f 72 20 74 68 65 20 73 70   data for the sp
1f0a0 65 63 69 66 69 65 64 20 63 68 61 6e 67 65 20 73  ecified change s
1f0b0 65 74 20 28 6f 72 20 70 61 74 63 68 20 73 65 74  et (or patch set
1f0c0 29 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  )...        /// 
1f0d0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1f0e0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1f0f0 65 3d 22 68 61 6e 64 6c 65 22 3e 0d 0a 20 20 20  e="handle">..   
1f100 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 77 72 61       /// The wra
1f110 70 70 65 64 20 6e 61 74 69 76 65 20 63 6f 6e 6e  pped native conn
1f120 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65 20 74 6f  ection handle to
1f130 20 62 65 20 61 73 73 6f 63 69 61 74 65 64 20 77   be associated w
1f140 69 74 68 20 74 68 69 73 0d 0a 20 20 20 20 20 20  ith this..      
1f150 20 20 2f 2f 2f 20 73 65 74 20 6f 66 20 63 68 61    /// set of cha
1f160 6e 67 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  nges...        /
1f170 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1f180 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1f190 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a 20  name="flags">.. 
1f1a0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66         /// The f
1f1b0 6c 61 67 73 20 61 73 73 6f 63 69 61 74 65 64 20  lags associated 
1f1c0 77 69 74 68 20 74 68 65 20 63 6f 6e 6e 65 63 74  with the connect
1f1d0 69 6f 6e 20 72 65 70 72 65 73 65 6e 74 65 64 20  ion represented 
1f1e0 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  by the..        
1f1f0 2f 2f 2f 20 3c 70 61 72 61 6d 72 65 66 20 6e 61  /// <paramref na
1f200 6d 65 3d 22 68 61 6e 64 6c 65 22 20 2f 3e 20 76  me="handle" /> v
1f210 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  alue...        /
1f220 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1f230 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51       internal SQ
1f240 4c 69 74 65 4d 65 6d 6f 72 79 43 68 61 6e 67 65  LiteMemoryChange
1f250 53 65 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Set(..          
1f260 20 20 62 79 74 65 5b 5d 20 72 61 77 44 61 74 61    byte[] rawData
1f270 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  ,..            S
1f280 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
1f290 61 6e 64 6c 65 20 68 61 6e 64 6c 65 2c 0d 0a 20  andle handle,.. 
1f2a0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
1f2b0 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
1f2c0 20 66 6c 61 67 73 0d 0a 20 20 20 20 20 20 20 20   flags..        
1f2d0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
1f2e0 20 20 20 3a 20 62 61 73 65 28 68 61 6e 64 6c 65     : base(handle
1f2f0 2c 20 66 6c 61 67 73 29 0d 0a 20 20 20 20 20 20  , flags)..      
1f300 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1f310 20 74 68 69 73 2e 72 61 77 44 61 74 61 20 3d 20   this.rawData = 
1f320 72 61 77 44 61 74 61 3b 0d 0a 20 20 20 20 20 20  rawData;..      
1f330 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
1f340 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
1f350 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1f360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1f3a0 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 53        #region IS
1f3b0 51 4c 69 74 65 43 68 61 6e 67 65 53 65 74 20 4d  QLiteChangeSet M
1f3c0 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20  embers..        
1f3d0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1f3e0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
1f3f0 6d 65 74 68 6f 64 20 22 69 6e 76 65 72 74 73 22  method "inverts"
1f400 20 74 68 65 20 73 65 74 20 6f 66 20 63 68 61 6e   the set of chan
1f410 67 65 73 20 77 69 74 68 69 6e 20 74 68 69 73 20  ges within this 
1f420 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
1f430 20 20 20 2f 2f 2f 20 41 70 70 6c 79 69 6e 67 20     /// Applying 
1f440 61 6e 20 69 6e 76 65 72 74 65 64 20 73 65 74 20  an inverted set 
1f450 6f 66 20 63 68 61 6e 67 65 73 20 74 6f 20 61 20  of changes to a 
1f460 64 61 74 61 62 61 73 65 20 72 65 76 65 72 73 65  database reverse
1f470 73 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  s the..        /
1f480 2f 2f 20 65 66 66 65 63 74 73 20 6f 66 20 61 70  // effects of ap
1f490 70 6c 79 69 6e 67 20 74 68 65 20 75 6e 69 6e 76  plying the uninv
1f4a0 65 72 74 65 64 20 63 68 61 6e 67 65 73 2e 20 20  erted changes.  
1f4b0 53 70 65 63 69 66 69 63 61 6c 6c 79 3a 0d 0a 20  Specifically:.. 
1f4c0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 21 5b 43 44         /// <![CD
1f4d0 41 54 41 5b 3c 75 6c 3e 5d 5d 3e 3c 21 5b 43 44  ATA[<ul>]]><![CD
1f4e0 41 54 41 5b 3c 6c 69 3e 5d 5d 3e 0d 0a 20 20 20  ATA[<li>]]>..   
1f4f0 20 20 20 20 20 2f 2f 2f 20 45 61 63 68 20 44 45       /// Each DE
1f500 4c 45 54 45 20 63 68 61 6e 67 65 20 69 73 20 63  LETE change is c
1f510 68 61 6e 67 65 64 20 74 6f 20 61 6e 20 49 4e 53  hanged to an INS
1f520 45 52 54 2c 20 61 6e 64 0d 0a 20 20 20 20 20 20  ERT, and..      
1f530 20 20 2f 2f 2f 20 3c 21 5b 43 44 41 54 41 5b 3c    /// <![CDATA[<
1f540 2f 6c 69 3e 5d 5d 3e 3c 21 5b 43 44 41 54 41 5b  /li>]]><![CDATA[
1f550 3c 6c 69 3e 5d 5d 3e 0d 0a 20 20 20 20 20 20 20  <li>]]>..       
1f560 20 2f 2f 2f 20 45 61 63 68 20 49 4e 53 45 52 54   /// Each INSERT
1f570 20 63 68 61 6e 67 65 20 69 73 20 63 68 61 6e 67   change is chang
1f580 65 64 20 74 6f 20 61 20 44 45 4c 45 54 45 2c 20  ed to a DELETE, 
1f590 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  and..        ///
1f5a0 20 3c 21 5b 43 44 41 54 41 5b 3c 2f 6c 69 3e 5d   <![CDATA[</li>]
1f5b0 5d 3e 3c 21 5b 43 44 41 54 41 5b 3c 6c 69 3e 5d  ]><![CDATA[<li>]
1f5c0 5d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ]>..        /// 
1f5d0 46 6f 72 20 65 61 63 68 20 55 50 44 41 54 45 20  For each UPDATE 
1f5e0 63 68 61 6e 67 65 2c 20 74 68 65 20 6f 6c 64 2e  change, the old.
1f5f0 2a 20 61 6e 64 20 6e 65 77 2e 2a 20 76 61 6c 75  * and new.* valu
1f600 65 73 20 61 72 65 20 65 78 63 68 61 6e 67 65 64  es are exchanged
1f610 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1f620 21 5b 43 44 41 54 41 5b 3c 2f 6c 69 3e 5d 5d 3e  ![CDATA[</li>]]>
1f630 3c 21 5b 43 44 41 54 41 5b 3c 2f 75 6c 3e 5d 5d  <![CDATA[</ul>]]
1f640 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1f650 68 69 73 20 6d 65 74 68 6f 64 20 64 6f 65 73 20  his method does 
1f660 6e 6f 74 20 63 68 61 6e 67 65 20 74 68 65 20 6f  not change the o
1f670 72 64 65 72 20 69 6e 20 77 68 69 63 68 20 63 68  rder in which ch
1f680 61 6e 67 65 73 20 61 70 70 65 61 72 0d 0a 20 20  anges appear..  
1f690 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 69 6e        /// within
1f6a0 20 74 68 65 20 73 65 74 20 6f 66 20 63 68 61 6e   the set of chan
1f6b0 67 65 73 2e 20 49 74 20 6d 65 72 65 6c 79 20 72  ges. It merely r
1f6c0 65 76 65 72 73 65 73 20 74 68 65 20 73 65 6e 73  everses the sens
1f6d0 65 20 6f 66 20 65 61 63 68 0d 0a 20 20 20 20 20  e of each..     
1f6e0 20 20 20 2f 2f 2f 20 69 6e 64 69 76 69 64 75 61     /// individua
1f6f0 6c 20 63 68 61 6e 67 65 2e 0d 0a 20 20 20 20 20  l change...     
1f700 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1f710 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1f720 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1f730 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77 20 3c 73    /// The new <s
1f740 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
1f750 43 68 61 6e 67 65 53 65 74 22 20 2f 3e 20 69 6e  ChangeSet" /> in
1f760 73 74 61 6e 63 65 20 74 68 61 74 20 72 65 70 72  stance that repr
1f770 65 73 65 6e 74 73 0d 0a 20 20 20 20 20 20 20 20  esents..        
1f780 2f 2f 2f 20 74 68 65 20 72 65 73 75 6c 74 69 6e  /// the resultin
1f790 67 20 73 65 74 20 6f 66 20 63 68 61 6e 67 65 73  g set of changes
1f7a0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1f7b0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
1f7c0 20 20 20 70 75 62 6c 69 63 20 49 53 51 4c 69 74     public ISQLit
1f7d0 65 43 68 61 6e 67 65 53 65 74 20 49 6e 76 65 72  eChangeSet Inver
1f7e0 74 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  t()..        {..
1f7f0 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63              Chec
1f800 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a  kDisposed();....
1f810 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
1f820 74 65 53 65 73 73 69 6f 6e 48 65 6c 70 65 72 73  teSessionHelpers
1f830 2e 43 68 65 63 6b 52 61 77 44 61 74 61 28 72 61  .CheckRawData(ra
1f840 77 44 61 74 61 29 3b 0d 0a 0d 0a 20 20 20 20 20  wData);....     
1f850 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 49         IntPtr pI
1f860 6e 44 61 74 61 20 3d 20 49 6e 74 50 74 72 2e 5a  nData = IntPtr.Z
1f870 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ero;..          
1f880 20 20 49 6e 74 50 74 72 20 70 4f 75 74 44 61 74    IntPtr pOutDat
1f890 61 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  a = IntPtr.Zero;
1f8a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1f8b0 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
1f8c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1f8d0 20 20 20 20 69 6e 74 20 6e 49 6e 44 61 74 61 20      int nInData 
1f8e0 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  = 0;....        
1f8f0 20 20 20 20 20 20 20 20 70 49 6e 44 61 74 61 20          pInData 
1f900 3d 20 53 51 4c 69 74 65 42 79 74 65 73 2e 54 6f  = SQLiteBytes.To
1f910 49 6e 74 50 74 72 28 72 61 77 44 61 74 61 2c 20  IntPtr(rawData, 
1f920 72 65 66 20 6e 49 6e 44 61 74 61 29 3b 0d 0a 0d  ref nInData);...
1f930 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f940 20 69 6e 74 20 6e 4f 75 74 44 61 74 61 20 3d 20   int nOutData = 
1f950 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  0;....          
1f960 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f        SQLiteErro
1f970 72 43 6f 64 65 20 72 63 20 3d 20 55 6e 73 61 66  rCode rc = Unsaf
1f980 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
1f990 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f  qlite3changeset_
1f9a0 69 6e 76 65 72 74 28 0d 0a 20 20 20 20 20 20 20  invert(..       
1f9b0 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 49 6e               nIn
1f9c0 44 61 74 61 2c 20 70 49 6e 44 61 74 61 2c 20 72  Data, pInData, r
1f9d0 65 66 20 6e 4f 75 74 44 61 74 61 2c 20 72 65 66  ef nOutData, ref
1f9e0 20 70 4f 75 74 44 61 74 61 29 3b 0d 0a 0d 0a 20   pOutData);.... 
1f9f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1fa00 66 20 28 72 63 20 21 3d 20 53 51 4c 69 74 65 45  f (rc != SQLiteE
1fa10 72 72 6f 72 43 6f 64 65 2e 4f 6b 29 0d 0a 20 20  rrorCode.Ok)..  
1fa20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fa30 20 20 74 68 72 6f 77 20 6e 65 77 20 53 51 4c 69    throw new SQLi
1fa40 74 65 45 78 63 65 70 74 69 6f 6e 28 72 63 2c 20  teException(rc, 
1fa50 22 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65  "sqlite3changese
1fa60 74 5f 69 6e 76 65 72 74 22 29 3b 0d 0a 0d 0a 20  t_invert");.... 
1fa70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
1fa80 79 74 65 5b 5d 20 6e 65 77 44 61 74 61 20 3d 20  yte[] newData = 
1fa90 53 51 4c 69 74 65 42 79 74 65 73 2e 46 72 6f 6d  SQLiteBytes.From
1faa0 49 6e 74 50 74 72 28 70 4f 75 74 44 61 74 61 2c  IntPtr(pOutData,
1fab0 20 6e 4f 75 74 44 61 74 61 29 3b 0d 0a 0d 0a 20   nOutData);.... 
1fac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1fad0 65 74 75 72 6e 20 6e 65 77 20 53 51 4c 69 74 65  eturn new SQLite
1fae0 4d 65 6d 6f 72 79 43 68 61 6e 67 65 53 65 74 28  MemoryChangeSet(
1faf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1fb00 20 20 20 20 20 20 6e 65 77 44 61 74 61 2c 20 47        newData, G
1fb10 65 74 48 61 6e 64 6c 65 28 29 2c 20 47 65 74 46  etHandle(), GetF
1fb20 6c 61 67 73 28 29 29 3b 0d 0a 20 20 20 20 20 20  lags());..      
1fb30 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1fb40 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20       finally..  
1fb50 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1fb60 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1fb70 28 70 4f 75 74 44 61 74 61 20 21 3d 20 49 6e 74  (pOutData != Int
1fb80 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
1fb90 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1fba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fbb0 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46    SQLiteMemory.F
1fbc0 72 65 65 55 6e 74 72 61 63 6b 65 64 28 70 4f 75  reeUntracked(pOu
1fbd0 74 44 61 74 61 29 3b 0d 0a 20 20 20 20 20 20 20  tData);..       
1fbe0 20 20 20 20 20 20 20 20 20 20 20 20 20 70 4f 75               pOu
1fbf0 74 44 61 74 61 20 3d 20 49 6e 74 50 74 72 2e 5a  tData = IntPtr.Z
1fc00 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ero;..          
1fc10 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1fc20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
1fc30 49 6e 44 61 74 61 20 21 3d 20 49 6e 74 50 74 72  InData != IntPtr
1fc40 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
1fc50 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1fc60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
1fc70 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65  QLiteMemory.Free
1fc80 28 70 49 6e 44 61 74 61 29 3b 0d 0a 20 20 20 20  (pInData);..    
1fc90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fca0 70 49 6e 44 61 74 61 20 3d 20 49 6e 74 50 74 72  pInData = IntPtr
1fcb0 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20  .Zero;..        
1fcc0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1fcd0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1fce0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
1fcf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fd00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fd10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fd20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fd30 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1fd40 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1fd50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
1fd60 73 20 6d 65 74 68 6f 64 20 63 6f 6d 62 69 6e 65  s method combine
1fd70 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  s the specified 
1fd80 73 65 74 20 6f 66 20 63 68 61 6e 67 65 73 20 77  set of changes w
1fd90 69 74 68 20 74 68 65 20 6f 6e 65 73 0d 0a 20 20  ith the ones..  
1fda0 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 74 61 69        /// contai
1fdb0 6e 65 64 20 69 6e 20 74 68 69 73 20 69 6e 73 74  ned in this inst
1fdc0 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ance...        /
1fdd0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1fde0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1fdf0 6d 20 6e 61 6d 65 3d 22 63 68 61 6e 67 65 53 65  m name="changeSe
1fe00 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  t">..        ///
1fe10 20 54 68 65 20 63 68 61 6e 67 65 73 20 74 6f 20   The changes to 
1fe20 62 65 20 63 6f 6d 62 69 6e 65 64 20 77 69 74 68  be combined with
1fe30 20 74 68 6f 73 65 20 69 6e 20 74 68 69 73 20 69   those in this i
1fe40 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20  nstance...      
1fe50 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1fe60 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
1fe70 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
1fe80 2f 2f 20 54 68 65 20 6e 65 77 20 3c 73 65 65 20  // The new <see 
1fe90 63 72 65 66 3d 22 49 53 51 4c 69 74 65 43 68 61  cref="ISQLiteCha
1fea0 6e 67 65 53 65 74 22 20 2f 3e 20 69 6e 73 74 61  ngeSet" /> insta
1feb0 6e 63 65 20 74 68 61 74 20 72 65 70 72 65 73 65  nce that represe
1fec0 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  nts..        ///
1fed0 20 74 68 65 20 72 65 73 75 6c 74 69 6e 67 20 73   the resulting s
1fee0 65 74 20 6f 66 20 63 68 61 6e 67 65 73 2e 0d 0a  et of changes...
1fef0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
1ff00 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1ff10 70 75 62 6c 69 63 20 49 53 51 4c 69 74 65 43 68  public ISQLiteCh
1ff20 61 6e 67 65 53 65 74 20 43 6f 6d 62 69 6e 65 57  angeSet CombineW
1ff30 69 74 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ith(..          
1ff40 20 20 49 53 51 4c 69 74 65 43 68 61 6e 67 65 53    ISQLiteChangeS
1ff50 65 74 20 63 68 61 6e 67 65 53 65 74 0d 0a 20 20  et changeSet..  
1ff60 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
1ff70 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1ff80 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65      CheckDispose
1ff90 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  d();....        
1ffa0 20 20 20 20 53 51 4c 69 74 65 53 65 73 73 69 6f      SQLiteSessio
1ffb0 6e 48 65 6c 70 65 72 73 2e 43 68 65 63 6b 52 61  nHelpers.CheckRa
1ffc0 77 44 61 74 61 28 72 61 77 44 61 74 61 29 3b 0d  wData(rawData);.
1ffd0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  ...            S
1ffe0 51 4c 69 74 65 4d 65 6d 6f 72 79 43 68 61 6e 67  QLiteMemoryChang
1fff0 65 53 65 74 20 6d 65 6d 6f 72 79 43 68 61 6e 67  eSet memoryChang
20000 65 53 65 74 20 3d 0d 0a 20 20 20 20 20 20 20 20  eSet =..        
20010 20 20 20 20 20 20 20 20 63 68 61 6e 67 65 53 65          changeSe
20020 74 20 61 73 20 53 51 4c 69 74 65 4d 65 6d 6f 72  t as SQLiteMemor
20030 79 43 68 61 6e 67 65 53 65 74 3b 0d 0a 0d 0a 20  yChangeSet;.... 
20040 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d             if (m
20050 65 6d 6f 72 79 43 68 61 6e 67 65 53 65 74 20 3d  emoryChangeSet =
20060 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
20070 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
20080 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65          throw ne
20090 77 20 41 72 67 75 6d 65 6e 74 45 78 63 65 70 74  w ArgumentExcept
200a0 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ion(..          
200b0 20 20 20 20 20 20 20 20 20 20 22 6e 6f 74 20 61            "not a
200c0 20 6d 65 6d 6f 72 79 20 62 61 73 65 64 20 63 68   memory based ch
200d0 61 6e 67 65 20 73 65 74 22 2c 20 22 63 68 61 6e  ange set", "chan
200e0 67 65 53 65 74 22 29 3b 0d 0a 20 20 20 20 20 20  geSet");..      
200f0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
20100 20 20 20 20 20 20 20 53 51 4c 69 74 65 53 65 73         SQLiteSes
20110 73 69 6f 6e 48 65 6c 70 65 72 73 2e 43 68 65 63  sionHelpers.Chec
20120 6b 52 61 77 44 61 74 61 28 6d 65 6d 6f 72 79 43  kRawData(memoryC
20130 68 61 6e 67 65 53 65 74 2e 72 61 77 44 61 74 61  hangeSet.rawData
20140 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
20150 20 20 49 6e 74 50 74 72 20 70 49 6e 44 61 74 61    IntPtr pInData
20160 31 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  1 = IntPtr.Zero;
20170 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
20180 74 50 74 72 20 70 49 6e 44 61 74 61 32 20 3d 20  tPtr pInData2 = 
20190 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
201a0 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
201b0 20 70 4f 75 74 44 61 74 61 20 3d 20 49 6e 74 50   pOutData = IntP
201c0 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20  tr.Zero;....    
201d0 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
201e0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
201f0 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
20200 6e 49 6e 44 61 74 61 31 20 3d 20 30 3b 0d 0a 0d  nInData1 = 0;...
20210 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
20220 20 70 49 6e 44 61 74 61 31 20 3d 20 53 51 4c 69   pInData1 = SQLi
20230 74 65 42 79 74 65 73 2e 54 6f 49 6e 74 50 74 72  teBytes.ToIntPtr
20240 28 72 61 77 44 61 74 61 2c 20 72 65 66 20 6e 49  (rawData, ref nI
20250 6e 44 61 74 61 31 29 3b 0d 0a 0d 0a 20 20 20 20  nData1);....    
20260 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
20270 6e 49 6e 44 61 74 61 32 20 3d 20 30 3b 0d 0a 0d  nInData2 = 0;...
20280 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
20290 20 70 49 6e 44 61 74 61 32 20 3d 20 53 51 4c 69   pInData2 = SQLi
202a0 74 65 42 79 74 65 73 2e 54 6f 49 6e 74 50 74 72  teBytes.ToIntPtr
202b0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
202c0 20 20 20 20 20 20 20 6d 65 6d 6f 72 79 43 68 61         memoryCha
202d0 6e 67 65 53 65 74 2e 72 61 77 44 61 74 61 2c 20  ngeSet.rawData, 
202e0 72 65 66 20 6e 49 6e 44 61 74 61 32 29 3b 0d 0a  ref nInData2);..
202f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
20300 20 20 69 6e 74 20 6e 4f 75 74 44 61 74 61 20 3d    int nOutData =
20310 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   0;....         
20320 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
20330 6f 72 43 6f 64 65 20 72 63 20 3d 20 55 6e 73 61  orCode rc = Unsa
20340 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
20350 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74  sqlite3changeset
20360 5f 63 6f 6e 63 61 74 28 0d 0a 20 20 20 20 20 20  _concat(..      
20370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 49                nI
20380 6e 44 61 74 61 31 2c 20 70 49 6e 44 61 74 61 31  nData1, pInData1
20390 2c 20 6e 49 6e 44 61 74 61 32 2c 20 70 49 6e 44  , nInData2, pInD
203a0 61 74 61 32 2c 20 72 65 66 20 6e 4f 75 74 44 61  ata2, ref nOutDa
203b0 74 61 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ta,..           
203c0 20 20 20 20 20 20 20 20 20 72 65 66 20 70 4f 75           ref pOu
203d0 74 44 61 74 61 29 3b 0d 0a 0d 0a 20 20 20 20 20  tData);....     
203e0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72             if (r
203f0 63 20 21 3d 20 53 51 4c 69 74 65 45 72 72 6f 72  c != SQLiteError
20400 43 6f 64 65 2e 4f 6b 29 0d 0a 20 20 20 20 20 20  Code.Ok)..      
20410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
20420 72 6f 77 20 6e 65 77 20 53 51 4c 69 74 65 45 78  row new SQLiteEx
20430 63 65 70 74 69 6f 6e 28 72 63 2c 20 22 73 71 6c  ception(rc, "sql
20440 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 63 6f  ite3changeset_co
20450 6e 63 61 74 22 29 3b 0d 0a 0d 0a 20 20 20 20 20  ncat");....     
20460 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65 5b             byte[
20470 5d 20 6e 65 77 44 61 74 61 20 3d 20 53 51 4c 69  ] newData = SQLi
20480 74 65 42 79 74 65 73 2e 46 72 6f 6d 49 6e 74 50  teBytes.FromIntP
20490 74 72 28 70 4f 75 74 44 61 74 61 2c 20 6e 4f 75  tr(pOutData, nOu
204a0 74 44 61 74 61 29 3b 0d 0a 0d 0a 20 20 20 20 20  tData);....     
204b0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
204c0 6e 20 6e 65 77 20 53 51 4c 69 74 65 4d 65 6d 6f  n new SQLiteMemo
204d0 72 79 43 68 61 6e 67 65 53 65 74 28 0d 0a 20 20  ryChangeSet(..  
204e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
204f0 20 20 6e 65 77 44 61 74 61 2c 20 47 65 74 48 61    newData, GetHa
20500 6e 64 6c 65 28 29 2c 20 47 65 74 46 6c 61 67 73  ndle(), GetFlags
20510 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ());..          
20520 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
20530 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20   finally..      
20540 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
20550 20 20 20 20 20 20 20 20 20 69 66 20 28 70 4f 75           if (pOu
20560 74 44 61 74 61 20 21 3d 20 49 6e 74 50 74 72 2e  tData != IntPtr.
20570 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
20580 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
20590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
205a0 4c 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65 55  LiteMemory.FreeU
205b0 6e 74 72 61 63 6b 65 64 28 70 4f 75 74 44 61 74  ntracked(pOutDat
205c0 61 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  a);..           
205d0 20 20 20 20 20 20 20 20 20 70 4f 75 74 44 61 74           pOutDat
205e0 61 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  a = IntPtr.Zero;
205f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
20600 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
20610 20 20 20 20 20 20 20 69 66 20 28 70 49 6e 44 61         if (pInDa
20620 74 61 32 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  ta2 != IntPtr.Ze
20630 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
20640 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
20650 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
20660 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70 49  teMemory.Free(pI
20670 6e 44 61 74 61 32 29 3b 0d 0a 20 20 20 20 20 20  nData2);..      
20680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49                pI
20690 6e 44 61 74 61 32 20 3d 20 49 6e 74 50 74 72 2e  nData2 = IntPtr.
206a0 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20  Zero;..         
206b0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
206c0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
206d0 70 49 6e 44 61 74 61 31 20 21 3d 20 49 6e 74 50  pInData1 != IntP
206e0 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
206f0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
20700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20710 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46 72   SQLiteMemory.Fr
20720 65 65 28 70 49 6e 44 61 74 61 31 29 3b 0d 0a 20  ee(pInData1);.. 
20730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20740 20 20 20 70 49 6e 44 61 74 61 31 20 3d 20 49 6e     pInData1 = In
20750 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20  tPtr.Zero;..    
20760 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
20770 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
20780 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
20790 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
207a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
207b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
207c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
207d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
207e0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
207f0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
20800 20 41 74 74 65 6d 70 74 73 20 74 6f 20 61 70 70   Attempts to app
20810 6c 79 20 74 68 65 20 73 65 74 20 6f 66 20 63 68  ly the set of ch
20820 61 6e 67 65 73 20 69 6e 20 74 68 69 73 20 69 6e  anges in this in
20830 73 74 61 6e 63 65 20 74 6f 20 74 68 65 0d 0a 20  stance to the.. 
20840 20 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63         /// assoc
20850 69 61 74 65 64 20 64 61 74 61 62 61 73 65 2e 0d  iated database..
20860 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
20870 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
20880 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
20890 3d 22 63 6f 6e 66 6c 69 63 74 43 61 6c 6c 62 61  ="conflictCallba
208a0 63 6b 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ck">..        //
208b0 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
208c0 22 53 65 73 73 69 6f 6e 43 6f 6e 66 6c 69 63 74  "SessionConflict
208d0 43 61 6c 6c 62 61 63 6b 22 20 2f 3e 20 64 65 6c  Callback" /> del
208e0 65 67 61 74 65 20 74 68 61 74 20 77 69 6c 6c 20  egate that will 
208f0 6e 65 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  need..        //
20900 2f 20 74 6f 20 68 61 6e 64 6c 65 20 61 6e 79 20  / to handle any 
20910 63 6f 6e 66 6c 69 63 74 69 6e 67 20 63 68 61 6e  conflicting chan
20920 67 65 73 20 74 68 61 74 20 6d 61 79 20 61 72 69  ges that may ari
20930 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  se...        ///
20940 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
20950 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
20960 6d 65 3d 22 63 6c 69 65 6e 74 44 61 74 61 22 3e  me="clientData">
20970 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
20980 65 20 6f 70 74 69 6f 6e 61 6c 20 61 70 70 6c 69  e optional appli
20990 63 61 74 69 6f 6e 2d 64 65 66 69 6e 65 64 20 63  cation-defined c
209a0 6f 6e 74 65 78 74 20 64 61 74 61 2e 20 20 54 68  ontext data.  Th
209b0 69 73 20 76 61 6c 75 65 20 6d 61 79 20 62 65 0d  is value may be.
209c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 75 6c  .        /// nul
209d0 6c 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  l...        /// 
209e0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
209f0 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 41 70    public void Ap
20a00 70 6c 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ply(..          
20a10 20 20 53 65 73 73 69 6f 6e 43 6f 6e 66 6c 69 63    SessionConflic
20a20 74 43 61 6c 6c 62 61 63 6b 20 63 6f 6e 66 6c 69  tCallback confli
20a30 63 74 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20  ctCallback,..   
20a40 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20           object 
20a50 63 6c 69 65 6e 74 44 61 74 61 0d 0a 20 20 20 20  clientData..    
20a60 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
20a70 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
20a80 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28    CheckDisposed(
20a90 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
20aa0 20 20 41 70 70 6c 79 28 63 6f 6e 66 6c 69 63 74    Apply(conflict
20ab0 43 61 6c 6c 62 61 63 6b 2c 20 6e 75 6c 6c 2c 20  Callback, null, 
20ac0 63 6c 69 65 6e 74 44 61 74 61 29 3b 0d 0a 20 20  clientData);..  
20ad0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
20ae0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
20af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
20b30 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
20b40 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
20b50 20 41 74 74 65 6d 70 74 73 20 74 6f 20 61 70 70   Attempts to app
20b60 6c 79 20 74 68 65 20 73 65 74 20 6f 66 20 63 68  ly the set of ch
20b70 61 6e 67 65 73 20 69 6e 20 74 68 69 73 20 69 6e  anges in this in
20b80 73 74 61 6e 63 65 20 74 6f 20 74 68 65 0d 0a 20  stance to the.. 
20b90 20 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63         /// assoc
20ba0 69 61 74 65 64 20 64 61 74 61 62 61 73 65 2e 0d  iated database..
20bb0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
20bc0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
20bd0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
20be0 3d 22 63 6f 6e 66 6c 69 63 74 43 61 6c 6c 62 61  ="conflictCallba
20bf0 63 6b 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ck">..        //
20c00 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
20c10 22 53 65 73 73 69 6f 6e 43 6f 6e 66 6c 69 63 74  "SessionConflict
20c20 43 61 6c 6c 62 61 63 6b 22 20 2f 3e 20 64 65 6c  Callback" /> del
20c30 65 67 61 74 65 20 74 68 61 74 20 77 69 6c 6c 20  egate that will 
20c40 6e 65 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  need..        //
20c50 2f 20 74 6f 20 68 61 6e 64 6c 65 20 61 6e 79 20  / to handle any 
20c60 63 6f 6e 66 6c 69 63 74 69 6e 67 20 63 68 61 6e  conflicting chan
20c70 67 65 73 20 74 68 61 74 20 6d 61 79 20 61 72 69  ges that may ari
20c80 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  se...        ///
20c90 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
20ca0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
20cb0 6d 65 3d 22 74 61 62 6c 65 46 69 6c 74 65 72 43  me="tableFilterC
20cc0 61 6c 6c 62 61 63 6b 22 3e 0d 0a 20 20 20 20 20  allback">..     
20cd0 20 20 20 2f 2f 2f 20 54 68 65 20 6f 70 74 69 6f     /// The optio
20ce0 6e 61 6c 20 3c 73 65 65 20 63 72 65 66 3d 22 53  nal <see cref="S
20cf0 65 73 73 69 6f 6e 54 61 62 6c 65 46 69 6c 74 65  essionTableFilte
20d00 72 43 61 6c 6c 62 61 63 6b 22 20 2f 3e 20 64 65  rCallback" /> de
20d10 6c 65 67 61 74 65 0d 0a 20 20 20 20 20 20 20 20  legate..        
20d20 2f 2f 2f 20 74 68 61 74 20 63 61 6e 20 62 65 20  /// that can be 
20d30 75 73 65 64 20 74 6f 20 66 69 6c 74 65 72 20 74  used to filter t
20d40 68 65 20 6c 69 73 74 20 6f 66 20 74 61 62 6c 65  he list of table
20d50 73 20 69 6d 70 61 63 74 65 64 20 62 79 20 74 68  s impacted by th
20d60 65 20 73 65 74 0d 0a 20 20 20 20 20 20 20 20 2f  e set..        /
20d70 2f 2f 20 6f 66 20 63 68 61 6e 67 65 73 2e 0d 0a  // of changes...
20d80 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
20d90 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
20da0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63  / <param name="c
20db0 6c 69 65 6e 74 44 61 74 61 22 3e 0d 0a 20 20 20  lientData">..   
20dc0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 70 74       /// The opt
20dd0 69 6f 6e 61 6c 20 61 70 70 6c 69 63 61 74 69 6f  ional applicatio
20de0 6e 2d 64 65 66 69 6e 65 64 20 63 6f 6e 74 65 78  n-defined contex
20df0 74 20 64 61 74 61 2e 20 20 54 68 69 73 20 76 61  t data.  This va
20e00 6c 75 65 20 6d 61 79 20 62 65 0d 0a 20 20 20 20  lue may be..    
20e10 20 20 20 20 2f 2f 2f 20 6e 75 6c 6c 2e 0d 0a 20      /// null... 
20e20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
20e30 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  am>..        pub
20e40 6c 69 63 20 76 6f 69 64 20 41 70 70 6c 79 28 0d  lic void Apply(.
20e50 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 65 73  .            Ses
20e60 73 69 6f 6e 43 6f 6e 66 6c 69 63 74 43 61 6c 6c  sionConflictCall
20e70 62 61 63 6b 20 63 6f 6e 66 6c 69 63 74 43 61 6c  back conflictCal
20e80 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20  lback,..        
20e90 20 20 20 20 53 65 73 73 69 6f 6e 54 61 62 6c 65      SessionTable
20ea0 46 69 6c 74 65 72 43 61 6c 6c 62 61 63 6b 20 74  FilterCallback t
20eb0 61 62 6c 65 46 69 6c 74 65 72 43 61 6c 6c 62 61  ableFilterCallba
20ec0 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ck,..           
20ed0 20 6f 62 6a 65 63 74 20 63 6c 69 65 6e 74 44 61   object clientDa
20ee0 74 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ta..            
20ef0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
20f00 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44            CheckD
20f10 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20  isposed();....  
20f20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
20f30 53 65 73 73 69 6f 6e 48 65 6c 70 65 72 73 2e 43  SessionHelpers.C
20f40 68 65 63 6b 52 61 77 44 61 74 61 28 72 61 77 44  heckRawData(rawD
20f50 61 74 61 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ata);....       
20f60 20 20 20 20 20 69 66 20 28 63 6f 6e 66 6c 69 63       if (conflic
20f70 74 43 61 6c 6c 62 61 63 6b 20 3d 3d 20 6e 75 6c  tCallback == nul
20f80 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
20f90 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72      throw new Ar
20fa0 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65 70 74  gumentNullExcept
20fb0 69 6f 6e 28 22 63 6f 6e 66 6c 69 63 74 43 61 6c  ion("conflictCal
20fc0 6c 62 61 63 6b 22 29 3b 0d 0a 0d 0a 20 20 20 20  lback");....    
20fd0 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61          UnsafeNa
20fe0 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 53 65 73  tiveMethods.xSes
20ff0 73 69 6f 6e 46 69 6c 74 65 72 20 78 46 69 6c 74  sionFilter xFilt
21000 65 72 20 3d 20 47 65 74 44 65 6c 65 67 61 74 65  er = GetDelegate
21010 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
21020 20 20 20 74 61 62 6c 65 46 69 6c 74 65 72 43 61     tableFilterCa
21030 6c 6c 62 61 63 6b 2c 20 63 6c 69 65 6e 74 44 61  llback, clientDa
21040 74 61 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ta);....        
21050 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
21060 4d 65 74 68 6f 64 73 2e 78 53 65 73 73 69 6f 6e  Methods.xSession
21070 43 6f 6e 66 6c 69 63 74 20 78 43 6f 6e 66 6c 69  Conflict xConfli
21080 63 74 20 3d 20 47 65 74 44 65 6c 65 67 61 74 65  ct = GetDelegate
21090 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
210a0 20 20 20 63 6f 6e 66 6c 69 63 74 43 61 6c 6c 62     conflictCallb
210b0 61 63 6b 2c 20 63 6c 69 65 6e 74 44 61 74 61 29  ack, clientData)
210c0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
210d0 20 49 6e 74 50 74 72 20 70 44 61 74 61 20 3d 20   IntPtr pData = 
210e0 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a  IntPtr.Zero;....
210f0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
21100 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
21110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21120 69 6e 74 20 6e 44 61 74 61 20 3d 20 30 3b 0d 0a  int nData = 0;..
21130 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21140 20 20 70 44 61 74 61 20 3d 20 53 51 4c 69 74 65    pData = SQLite
21150 42 79 74 65 73 2e 54 6f 49 6e 74 50 74 72 28 72  Bytes.ToIntPtr(r
21160 61 77 44 61 74 61 2c 20 72 65 66 20 6e 44 61 74  awData, ref nDat
21170 61 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  a);....         
21180 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
21190 6f 72 43 6f 64 65 20 72 63 20 3d 20 55 6e 73 61  orCode rc = Unsa
211a0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
211b0 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74  sqlite3changeset
211c0 5f 61 70 70 6c 79 28 0d 0a 20 20 20 20 20 20 20  _apply(..       
211d0 20 20 20 20 20 20 20 20 20 20 20 20 20 47 65 74               Get
211e0 49 6e 74 50 74 72 28 29 2c 20 6e 44 61 74 61 2c  IntPtr(), nData,
211f0 20 70 44 61 74 61 2c 20 78 46 69 6c 74 65 72 2c   pData, xFilter,
21200 20 78 43 6f 6e 66 6c 69 63 74 2c 20 49 6e 74 50   xConflict, IntP
21210 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20  tr.Zero);....   
21220 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
21230 28 72 63 20 21 3d 20 53 51 4c 69 74 65 45 72 72  (rc != SQLiteErr
21240 6f 72 43 6f 64 65 2e 4f 6b 29 0d 0a 20 20 20 20  orCode.Ok)..    
21250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21260 74 68 72 6f 77 20 6e 65 77 20 53 51 4c 69 74 65  throw new SQLite
21270 45 78 63 65 70 74 69 6f 6e 28 72 63 2c 20 22 73  Exception(rc, "s
21280 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f  qlite3changeset_
21290 61 70 70 6c 79 22 29 3b 0d 0a 20 20 20 20 20 20  apply");..      
212a0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
212b0 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20       finally..  
212c0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
212d0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
212e0 28 70 44 61 74 61 20 21 3d 20 49 6e 74 50 74 72  (pData != IntPtr
212f0 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
21300 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
21310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
21320 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65  QLiteMemory.Free
21330 28 70 44 61 74 61 29 3b 0d 0a 20 20 20 20 20 20  (pData);..      
21340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 44                pD
21350 61 74 61 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72  ata = IntPtr.Zer
21360 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o;..            
21370 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
21380 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
21390 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
213a0 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
213b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
213c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
213d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
213e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
213f0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
21400 20 20 23 72 65 67 69 6f 6e 20 49 45 6e 75 6d 65    #region IEnume
21410 72 61 62 6c 65 3c 49 53 51 4c 69 74 65 43 68 61  rable<ISQLiteCha
21420 6e 67 65 53 65 74 4d 65 74 61 64 61 74 61 49 74  ngeSetMetadataIt
21430 65 6d 3e 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20  em> Members..   
21440 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
21450 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
21460 43 72 65 61 74 65 73 20 61 6e 20 3c 73 65 65 20  Creates an <see 
21470 63 72 65 66 3d 22 49 45 6e 75 6d 65 72 61 74 6f  cref="IEnumerato
21480 72 22 20 2f 3e 20 63 61 70 61 62 6c 65 20 6f 66  r" /> capable of
21490 20 69 74 65 72 61 74 69 6e 67 20 6f 76 65 72 20   iterating over 
214a0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
214b0 20 69 74 65 6d 73 20 77 69 74 68 69 6e 20 74 68   items within th
214c0 69 73 20 73 65 74 20 6f 66 20 63 68 61 6e 67 65  is set of change
214d0 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
214e0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
214f0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
21500 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
21510 68 65 20 6e 65 77 20 3c 73 65 65 20 63 72 65 66  he new <see cref
21520 3d 22 49 45 6e 75 6d 65 72 61 74 6f 72 7b 49 53  ="IEnumerator{IS
21530 51 4c 69 74 65 43 68 61 6e 67 65 53 65 74 4d 65  QLiteChangeSetMe
21540 74 61 64 61 74 61 49 74 65 6d 7d 22 20 2f 3e 0d  tadataItem}" />.
21550 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73  .        /// ins
21560 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20  tance...        
21570 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
21580 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49          public I
21590 45 6e 75 6d 65 72 61 74 6f 72 3c 49 53 51 4c 69  Enumerator<ISQLi
215a0 74 65 43 68 61 6e 67 65 53 65 74 4d 65 74 61 64  teChangeSetMetad
215b0 61 74 61 49 74 65 6d 3e 20 47 65 74 45 6e 75 6d  ataItem> GetEnum
215c0 65 72 61 74 6f 72 28 29 0d 0a 20 20 20 20 20 20  erator()..      
215d0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
215e0 20 72 65 74 75 72 6e 20 6e 65 77 20 53 51 4c 69   return new SQLi
215f0 74 65 4d 65 6d 6f 72 79 43 68 61 6e 67 65 53 65  teMemoryChangeSe
21600 74 45 6e 75 6d 65 72 61 74 6f 72 28 72 61 77 44  tEnumerator(rawD
21610 61 74 61 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  ata);..        }
21620 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
21630 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
21640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21680 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
21690 20 20 20 23 72 65 67 69 6f 6e 20 49 45 6e 75 6d     #region IEnum
216a0 65 72 61 62 6c 65 20 4d 65 6d 62 65 72 73 0d 0a  erable Members..
216b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
216c0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
216d0 2f 2f 20 43 72 65 61 74 65 73 20 61 6e 20 3c 73  // Creates an <s
216e0 65 65 20 63 72 65 66 3d 22 49 45 6e 75 6d 65 72  ee cref="IEnumer
216f0 61 74 6f 72 22 20 2f 3e 20 63 61 70 61 62 6c 65  ator" /> capable
21700 20 6f 66 20 69 74 65 72 61 74 69 6e 67 20 6f 76   of iterating ov
21710 65 72 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  er the..        
21720 2f 2f 2f 20 69 74 65 6d 73 20 77 69 74 68 69 6e  /// items within
21730 20 74 68 69 73 20 73 65 74 20 6f 66 20 63 68 61   this set of cha
21740 6e 67 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  nges...        /
21750 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
21760 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
21770 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
21780 2f 20 54 68 65 20 6e 65 77 20 3c 73 65 65 20 63  / The new <see c
21790 72 65 66 3d 22 49 45 6e 75 6d 65 72 61 74 6f 72  ref="IEnumerator
217a0 22 20 2f 3e 20 69 6e 73 74 61 6e 63 65 2e 0d 0a  " /> instance...
217b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
217c0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
217d0 49 45 6e 75 6d 65 72 61 74 6f 72 20 53 79 73 74  IEnumerator Syst
217e0 65 6d 2e 43 6f 6c 6c 65 63 74 69 6f 6e 73 2e 49  em.Collections.I
217f0 45 6e 75 6d 65 72 61 62 6c 65 2e 47 65 74 45 6e  Enumerable.GetEn
21800 75 6d 65 72 61 74 6f 72 28 29 0d 0a 20 20 20 20  umerator()..    
21810 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
21820 20 20 20 72 65 74 75 72 6e 20 47 65 74 45 6e 75     return GetEnu
21830 6d 65 72 61 74 6f 72 28 29 3b 0d 0a 20 20 20 20  merator();..    
21840 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
21850 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
21860 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
21870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
218a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
218b0 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
218c0 49 44 69 73 70 6f 73 61 62 6c 65 20 22 50 61 74  IDisposable "Pat
218d0 74 65 72 6e 22 20 4d 65 6d 62 65 72 73 0d 0a 20  tern" Members.. 
218e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
218f0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
21900 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68  / Non-zero if th
21910 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  is object instan
21920 63 65 20 68 61 73 20 62 65 65 6e 20 64 69 73 70  ce has been disp
21930 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  osed...        /
21940 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
21950 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62         private b
21960 6f 6f 6c 20 64 69 73 70 6f 73 65 64 3b 0d 0a 0d  ool disposed;...
21970 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
21980 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
21990 2f 2f 2f 20 54 68 72 6f 77 73 20 61 6e 20 65 78  /// Throws an ex
219a0 63 65 70 74 69 6f 6e 20 69 66 20 74 68 69 73 20  ception if this 
219b0 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
219c0 68 61 73 20 62 65 65 6e 20 64 69 73 70 6f 73 65  has been dispose
219d0 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
219e0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
219f0 20 20 20 20 70 72 69 76 61 74 65 20 76 6f 69 64      private void
21a00 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
21a10 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
21a20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 54 48 52        {..#if THR
21a30 4f 57 5f 4f 4e 5f 44 49 53 50 4f 53 45 44 0d 0a  OW_ON_DISPOSED..
21a40 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
21a50 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20  disposed)..     
21a60 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
21a70 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
21a80 6e 65 77 20 4f 62 6a 65 63 74 44 69 73 70 6f 73  new ObjectDispos
21a90 65 64 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20  edException(..  
21aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21ab0 20 20 74 79 70 65 6f 66 28 53 51 4c 69 74 65 4d    typeof(SQLiteM
21ac0 65 6d 6f 72 79 43 68 61 6e 67 65 53 65 74 29 2e  emoryChangeSet).
21ad0 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  Name);..        
21ae0 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
21af0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
21b00 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
21b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
21b50 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
21b60 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
21b70 2f 20 44 69 73 70 6f 73 65 73 20 6f 72 20 66 69  / Disposes or fi
21b80 6e 61 6c 69 7a 65 73 20 74 68 69 73 20 6f 62 6a  nalizes this obj
21b90 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20  ect instance... 
21ba0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
21bb0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
21bc0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
21bd0 64 69 73 70 6f 73 69 6e 67 22 3e 0d 0a 20 20 20  disposing">..   
21be0 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
21bf0 6f 20 69 66 20 74 68 69 73 20 6f 62 6a 65 63 74  o if this object
21c00 20 69 73 20 62 65 69 6e 67 20 64 69 73 70 6f 73   is being dispos
21c10 65 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 74  ed; otherwise, t
21c20 68 69 73 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20  his object..    
21c30 20 20 20 20 2f 2f 2f 20 69 73 20 62 65 69 6e 67      /// is being
21c40 20 66 69 6e 61 6c 69 7a 65 64 2e 0d 0a 20 20 20   finalized...   
21c50 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
21c60 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65  >..        prote
21c70 63 74 65 64 20 6f 76 65 72 72 69 64 65 20 76 6f  cted override vo
21c80 69 64 20 44 69 73 70 6f 73 65 28 62 6f 6f 6c 20  id Dispose(bool 
21c90 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20  disposing)..    
21ca0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
21cb0 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
21cc0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
21cd0 20 20 20 20 20 20 20 69 66 20 28 21 64 69 73 70         if (!disp
21ce0 6f 73 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20  osed)..         
21cf0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
21d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
21d10 20 28 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20   (disposing)..  
21d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21d30 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
21d40 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f               ///
21d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21d70 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
21d80 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 69             // di
21d90 73 70 6f 73 65 20 6d 61 6e 61 67 65 64 20 72 65  spose managed re
21da0 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d  sources here....
21db0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21dc0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
21dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
21df0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21e00 20 20 20 20 20 20 20 20 20 69 66 20 28 72 61 77           if (raw
21e10 44 61 74 61 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  Data != null).. 
21e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21e30 20 20 20 20 20 20 20 20 20 20 20 72 61 77 44 61             rawDa
21e40 74 61 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  ta = null;..    
21e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21e60 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
21e70 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
21e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
21ea0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21eb0 20 20 20 20 20 2f 2f 20 72 65 6c 65 61 73 65 20       // release 
21ec0 75 6e 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72  unmanaged resour
21ed0 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20  ces here.....   
21ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21ef0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
21f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21f10 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20  ///////..       
21f20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
21f30 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
21f40 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a         finally..
21f50 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
21f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
21f70 61 73 65 2e 44 69 73 70 6f 73 65 28 64 69 73 70  ase.Dispose(disp
21f80 6f 73 69 6e 67 29 3b 0d 0a 0d 0a 20 20 20 20 20  osing);....     
21f90 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
21fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
21fb0 2f 20 4e 4f 54 45 3a 20 45 76 65 72 79 74 68 69  / NOTE: Everythi
21fc0 6e 67 20 73 68 6f 75 6c 64 20 62 65 20 66 75 6c  ng should be ful
21fd0 6c 79 20 64 69 73 70 6f 73 65 64 20 61 74 20 74  ly disposed at t
21fe0 68 69 73 20 70 6f 69 6e 74 2e 0d 0a 20 20 20 20  his point...    
21ff0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
22000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22010 64 69 73 70 6f 73 65 64 20 3d 20 74 72 75 65 3b  disposed = true;
22020 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
22030 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
22040 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
22050 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
22060 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
22070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
220a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
220b0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
220c0 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 53 74  #region SQLiteSt
220d0 72 65 61 6d 43 68 61 6e 67 65 53 65 74 20 43 6c  reamChangeSet Cl
220e0 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  ass..    /// <su
220f0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
22100 54 68 69 73 20 63 6c 61 73 73 20 72 65 70 72 65  This class repre
22110 73 65 6e 74 73 20 61 20 73 65 74 20 6f 66 20 63  sents a set of c
22120 68 61 6e 67 65 73 20 74 68 61 74 20 61 72 65 20  hanges that are 
22130 62 61 63 6b 65 64 20 62 79 20 61 0d 0a 20 20 20  backed by a..   
22140 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
22150 53 74 72 65 61 6d 22 20 2f 3e 20 69 6e 73 74 61  Stream" /> insta
22160 6e 63 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  nce...    /// </
22170 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e  summary>..    in
22180 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c  ternal sealed cl
22190 61 73 73 20 53 51 4c 69 74 65 53 74 72 65 61 6d  ass SQLiteStream
221a0 43 68 61 6e 67 65 53 65 74 20 3a 0d 0a 20 20 20  ChangeSet :..   
221b0 20 20 20 20 20 53 51 4c 69 74 65 43 68 61 6e 67       SQLiteChang
221c0 65 53 65 74 42 61 73 65 2c 20 49 53 51 4c 69 74  eSetBase, ISQLit
221d0 65 43 68 61 6e 67 65 53 65 74 0d 0a 20 20 20 20  eChangeSet..    
221e0 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  {..        #regi
221f0 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74 61 0d  on Private Data.
22200 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
22210 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
22220 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
22230 66 3d 22 53 51 4c 69 74 65 53 74 72 65 61 6d 41  f="SQLiteStreamA
22240 64 61 70 74 65 72 22 20 2f 3e 20 69 6e 73 74 61  dapter" /> insta
22250 6e 63 65 20 74 68 61 74 20 69 73 20 6d 61 6e 61  nce that is mana
22260 67 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ging..        //
22270 2f 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67  / the underlying
22280 20 69 6e 70 75 74 20 3c 73 65 65 20 63 72 65 66   input <see cref
22290 3d 22 53 74 72 65 61 6d 22 20 2f 3e 20 75 73 65  ="Stream" /> use
222a0 64 20 61 73 20 74 68 65 20 62 61 63 6b 69 6e 67  d as the backing
222b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74  ..        /// st
222c0 6f 72 65 20 66 6f 72 20 74 68 65 20 73 65 74 20  ore for the set 
222d0 6f 66 20 63 68 61 6e 67 65 73 20 61 73 73 6f 63  of changes assoc
222e0 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20  iated with this 
222f0 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
22300 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
22310 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
22320 74 65 20 53 51 4c 69 74 65 53 74 72 65 61 6d 41  te SQLiteStreamA
22330 64 61 70 74 65 72 20 69 6e 70 75 74 53 74 72 65  dapter inputStre
22340 61 6d 41 64 61 70 74 65 72 3b 0d 0a 0d 0a 20 20  amAdapter;....  
22350 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
22360 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
22370 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
22380 53 51 4c 69 74 65 53 74 72 65 61 6d 41 64 61 70  SQLiteStreamAdap
22390 74 65 72 22 20 2f 3e 20 69 6e 73 74 61 6e 63 65  ter" /> instance
223a0 20 74 68 61 74 20 69 73 20 6d 61 6e 61 67 69 6e   that is managin
223b0 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  g..        /// t
223c0 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 6f 75  he underlying ou
223d0 74 70 75 74 20 3c 73 65 65 20 63 72 65 66 3d 22  tput <see cref="
223e0 53 74 72 65 61 6d 22 20 2f 3e 20 75 73 65 64 20  Stream" /> used 
223f0 61 73 20 74 68 65 20 62 61 63 6b 69 6e 67 0d 0a  as the backing..
22400 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 6f 72          /// stor
22410 65 20 66 6f 72 20 74 68 65 20 73 65 74 20 6f 66  e for the set of
22420 20 63 68 61 6e 67 65 73 20 67 65 6e 65 72 61 74   changes generat
22430 65 64 20 62 79 20 74 68 65 20 3c 73 65 65 20 63  ed by the <see c
22440 72 65 66 3d 22 49 6e 76 65 72 74 22 20 2f 3e 0d  ref="Invert" />.
22450 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20  .        /// or 
22460 3c 73 65 65 20 63 72 65 66 3d 22 43 6f 6d 62 69  <see cref="Combi
22470 6e 65 57 69 74 68 22 20 2f 3e 20 6d 65 74 68 6f  neWith" /> metho
22480 64 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ds...        ///
22490 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
224a0 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c       private SQL
224b0 69 74 65 53 74 72 65 61 6d 41 64 61 70 74 65 72  iteStreamAdapter
224c0 20 6f 75 74 70 75 74 53 74 72 65 61 6d 41 64 61   outputStreamAda
224d0 70 74 65 72 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  pter;....       
224e0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
224f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
22500 3c 73 65 65 20 63 72 65 66 3d 22 53 74 72 65 61  <see cref="Strea
22510 6d 22 20 2f 3e 20 69 6e 73 74 61 6e 63 65 20 75  m" /> instance u
22520 73 65 64 20 61 73 20 74 68 65 20 62 61 63 6b 69  sed as the backi
22530 6e 67 20 73 74 6f 72 65 20 66 6f 72 0d 0a 20 20  ng store for..  
22540 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 73 65        /// the se
22550 74 20 6f 66 20 63 68 61 6e 67 65 73 20 61 73 73  t of changes ass
22560 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69  ociated with thi
22570 73 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  s instance...   
22580 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
22590 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
225a0 76 61 74 65 20 53 74 72 65 61 6d 20 69 6e 70 75  vate Stream inpu
225b0 74 53 74 72 65 61 6d 3b 0d 0a 0d 0a 20 20 20 20  tStream;....    
225c0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
225d0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
225e0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 74  he <see cref="St
225f0 72 65 61 6d 22 20 2f 3e 20 69 6e 73 74 61 6e 63  ream" /> instanc
22600 65 20 75 73 65 64 20 61 73 20 74 68 65 20 62 61  e used as the ba
22610 63 6b 69 6e 67 20 73 74 6f 72 65 20 66 6f 72 0d  cking store for.
22620 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  .        /// the
22630 20 73 65 74 20 6f 66 20 63 68 61 6e 67 65 73 20   set of changes 
22640 67 65 6e 65 72 61 74 65 64 20 62 79 20 74 68 65  generated by the
22650 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 76 65   <see cref="Inve
22660 72 74 22 20 2f 3e 20 6f 72 0d 0a 20 20 20 20 20  rt" /> or..     
22670 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
22680 3d 22 43 6f 6d 62 69 6e 65 57 69 74 68 22 20 2f  ="CombineWith" /
22690 3e 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20 20  > methods...    
226a0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
226b0 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
226c0 61 74 65 20 53 74 72 65 61 6d 20 6f 75 74 70 75  ate Stream outpu
226d0 74 53 74 72 65 61 6d 3b 0d 0a 20 20 20 20 20 20  tStream;..      
226e0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
226f0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
22700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
22740 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
22750 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74  on Private Const
22760 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20  ructors..       
22770 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
22780 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73          /// Cons
22790 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e  tructs an instan
227a0 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73  ce of this class
227b0 20 75 73 69 6e 67 20 74 68 65 20 73 70 65 63 69   using the speci
227c0 66 69 65 64 20 73 74 72 65 61 6d 73 0d 0a 20 20  fied streams..  
227d0 20 20 20 20 20 20 2f 2f 2f 20 61 6e 64 20 77 72        /// and wr
227e0 61 70 70 65 64 20 6e 61 74 69 76 65 20 63 6f 6e  apped native con
227f0 6e 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65 2e 0d  nection handle..
22800 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
22810 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
22820 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
22830 3d 22 69 6e 70 75 74 53 74 72 65 61 6d 22 3e 0d  ="inputStream">.
22840 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
22850 20 3c 73 65 65 20 63 72 65 66 3d 22 53 74 72 65   <see cref="Stre
22860 61 6d 22 20 2f 3e 20 77 68 65 72 65 20 74 68 65  am" /> where the
22870 20 72 61 77 20 62 79 74 65 20 64 61 74 61 20 66   raw byte data f
22880 6f 72 20 74 68 65 20 73 65 74 20 6f 66 0d 0a 20  or the set of.. 
22890 20 20 20 20 20 20 20 2f 2f 2f 20 63 68 61 6e 67         /// chang
228a0 65 73 20 6d 61 79 20 62 65 20 72 65 61 64 2e 0d  es may be read..
228b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
228c0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
228d0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
228e0 6f 75 74 70 75 74 53 74 72 65 61 6d 22 3e 0d 0a  outputStream">..
228f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
22900 3c 73 65 65 20 63 72 65 66 3d 22 53 74 72 65 61  <see cref="Strea
22910 6d 22 20 2f 3e 20 77 68 65 72 65 20 74 68 65 20  m" /> where the 
22920 72 61 77 20 62 79 74 65 20 64 61 74 61 20 66 6f  raw byte data fo
22930 72 20 72 65 73 75 6c 74 69 6e 67 0d 0a 20 20 20  r resulting..   
22940 20 20 20 20 20 2f 2f 2f 20 73 65 74 73 20 6f 66       /// sets of
22950 20 63 68 61 6e 67 65 73 20 6d 61 79 20 62 65 20   changes may be 
22960 77 72 69 74 74 65 6e 2e 0d 0a 20 20 20 20 20 20  written...      
22970 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
22980 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
22990 61 6d 20 6e 61 6d 65 3d 22 68 61 6e 64 6c 65 22  am name="handle"
229a0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
229b0 68 65 20 77 72 61 70 70 65 64 20 6e 61 74 69 76  he wrapped nativ
229c0 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 6e  e connection han
229d0 64 6c 65 20 74 6f 20 62 65 20 61 73 73 6f 63 69  dle to be associ
229e0 61 74 65 64 20 77 69 74 68 20 74 68 69 73 0d 0a  ated with this..
229f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 65 74 20          /// set 
22a00 6f 66 20 63 68 61 6e 67 65 73 2e 0d 0a 20 20 20  of changes...   
22a10 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
22a20 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
22a30 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67  param name="flag
22a40 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  s">..        ///
22a50 20 54 68 65 20 66 6c 61 67 73 20 61 73 73 6f 63   The flags assoc
22a60 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20 63  iated with the c
22a70 6f 6e 6e 65 63 74 69 6f 6e 20 72 65 70 72 65 73  onnection repres
22a80 65 6e 74 65 64 20 62 79 20 74 68 65 0d 0a 20 20  ented by the..  
22a90 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
22aa0 72 65 66 20 6e 61 6d 65 3d 22 68 61 6e 64 6c 65  ref name="handle
22ab0 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20  " /> value...   
22ac0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
22ad0 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72  >..        inter
22ae0 6e 61 6c 20 53 51 4c 69 74 65 53 74 72 65 61 6d  nal SQLiteStream
22af0 43 68 61 6e 67 65 53 65 74 28 0d 0a 20 20 20 20  ChangeSet(..    
22b00 20 20 20 20 20 20 20 20 53 74 72 65 61 6d 20 69          Stream i
22b10 6e 70 75 74 53 74 72 65 61 6d 2c 0d 0a 20 20 20  nputStream,..   
22b20 20 20 20 20 20 20 20 20 20 53 74 72 65 61 6d 20           Stream 
22b30 6f 75 74 70 75 74 53 74 72 65 61 6d 2c 0d 0a 20  outputStream,.. 
22b40 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
22b50 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
22b60 65 20 68 61 6e 64 6c 65 2c 0d 0a 20 20 20 20 20  e handle,..     
22b70 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e         SQLiteCon
22b80 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61  nectionFlags fla
22b90 67 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  gs..            
22ba0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a  )..            :
22bb0 20 62 61 73 65 28 68 61 6e 64 6c 65 2c 20 66 6c   base(handle, fl
22bc0 61 67 73 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ags)..        {.
22bd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
22be0 73 2e 69 6e 70 75 74 53 74 72 65 61 6d 20 3d 20  s.inputStream = 
22bf0 69 6e 70 75 74 53 74 72 65 61 6d 3b 0d 0a 20 20  inputStream;..  
22c00 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f            this.o
22c10 75 74 70 75 74 53 74 72 65 61 6d 20 3d 20 6f 75  utputStream = ou
22c20 74 70 75 74 53 74 72 65 61 6d 3b 0d 0a 20 20 20  tputStream;..   
22c30 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
22c40 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
22c50 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
22c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
22ca0 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
22cb0 20 50 72 69 76 61 74 65 20 4d 65 74 68 6f 64 73   Private Methods
22cc0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
22cd0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
22ce0 20 2f 2f 2f 20 54 68 72 6f 77 73 20 61 6e 20 65   /// Throws an e
22cf0 78 63 65 70 74 69 6f 6e 20 69 66 20 74 68 65 20  xception if the 
22d00 69 6e 70 75 74 20 73 74 72 65 61 6d 20 6f 72 20  input stream or 
22d10 69 74 73 20 61 73 73 6f 63 69 61 74 65 64 20 73  its associated s
22d20 74 72 65 61 6d 0d 0a 20 20 20 20 20 20 20 20 2f  tream..        /
22d30 2f 2f 20 61 64 61 70 74 65 72 20 61 72 65 20 69  // adapter are i
22d40 6e 76 61 6c 69 64 2e 0d 0a 20 20 20 20 20 20 20  nvalid...       
22d50 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
22d60 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
22d70 20 76 6f 69 64 20 43 68 65 63 6b 49 6e 70 75 74   void CheckInput
22d80 53 74 72 65 61 6d 28 29 0d 0a 20 20 20 20 20 20  Stream()..      
22d90 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
22da0 20 69 66 20 28 69 6e 70 75 74 53 74 72 65 61 6d   if (inputStream
22db0 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
22dc0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
22dd0 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
22de0 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72 61  new InvalidOpera
22df0 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 0d 0a  tionException(..
22e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22e10 20 20 20 20 22 69 6e 70 75 74 20 73 74 72 65 61      "input strea
22e20 6d 20 75 6e 61 76 61 69 6c 61 62 6c 65 22 29 3b  m unavailable");
22e30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
22e40 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
22e50 66 20 28 69 6e 70 75 74 53 74 72 65 61 6d 41 64  f (inputStreamAd
22e60 61 70 74 65 72 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  apter == null)..
22e70 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
22e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
22e90 6e 70 75 74 53 74 72 65 61 6d 41 64 61 70 74 65  nputStreamAdapte
22ea0 72 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 53 74  r = new SQLiteSt
22eb0 72 65 61 6d 41 64 61 70 74 65 72 28 0d 0a 20 20  reamAdapter(..  
22ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22ed0 20 20 69 6e 70 75 74 53 74 72 65 61 6d 2c 20 47    inputStream, G
22ee0 65 74 46 6c 61 67 73 28 29 29 3b 0d 0a 20 20 20  etFlags());..   
22ef0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
22f00 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
22f10 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
22f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22f50 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
22f60 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
22f70 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
22f80 68 72 6f 77 73 20 61 6e 20 65 78 63 65 70 74 69  hrows an excepti
22f90 6f 6e 20 69 66 20 74 68 65 20 6f 75 74 70 75 74  on if the output
22fa0 20 73 74 72 65 61 6d 20 6f 72 20 69 74 73 20 61   stream or its a
22fb0 73 73 6f 63 69 61 74 65 64 20 73 74 72 65 61 6d  ssociated stream
22fc0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 64  ..        /// ad
22fd0 61 70 74 65 72 20 61 72 65 20 69 6e 76 61 6c 69  apter are invali
22fe0 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
22ff0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
23000 20 20 20 20 70 72 69 76 61 74 65 20 76 6f 69 64      private void
23010 20 43 68 65 63 6b 4f 75 74 70 75 74 53 74 72 65   CheckOutputStre
23020 61 6d 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  am()..        {.
23030 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
23040 28 6f 75 74 70 75 74 53 74 72 65 61 6d 20 3d 3d  (outputStream ==
23050 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
23060 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
23070 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
23080 20 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f   InvalidOperatio
23090 6e 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20  nException(..   
230a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
230b0 20 22 6f 75 74 70 75 74 20 73 74 72 65 61 6d 20   "output stream 
230c0 75 6e 61 76 61 69 6c 61 62 6c 65 22 29 3b 0d 0a  unavailable");..
230d0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
230e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
230f0 28 6f 75 74 70 75 74 53 74 72 65 61 6d 41 64 61  (outputStreamAda
23100 70 74 65 72 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  pter == null).. 
23110 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
23120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 75                ou
23130 74 70 75 74 53 74 72 65 61 6d 41 64 61 70 74 65  tputStreamAdapte
23140 72 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 53 74  r = new SQLiteSt
23150 72 65 61 6d 41 64 61 70 74 65 72 28 0d 0a 20 20  reamAdapter(..  
23160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23170 20 20 6f 75 74 70 75 74 53 74 72 65 61 6d 2c 20    outputStream, 
23180 47 65 74 46 6c 61 67 73 28 29 29 3b 0d 0a 20 20  GetFlags());..  
23190 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
231a0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
231b0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
231c0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
231d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
231e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
231f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
23210 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
23220 20 49 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65   ISQLiteChangeSe
23230 74 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20  t Members..     
23240 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
23250 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
23260 69 73 20 6d 65 74 68 6f 64 20 22 69 6e 76 65 72  is method "inver
23270 74 73 22 20 74 68 65 20 73 65 74 20 6f 66 20 63  ts" the set of c
23280 68 61 6e 67 65 73 20 77 69 74 68 69 6e 20 74 68  hanges within th
23290 69 73 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  is instance...  
232a0 20 20 20 20 20 20 2f 2f 2f 20 41 70 70 6c 79 69        /// Applyi
232b0 6e 67 20 61 6e 20 69 6e 76 65 72 74 65 64 20 73  ng an inverted s
232c0 65 74 20 6f 66 20 63 68 61 6e 67 65 73 20 74 6f  et of changes to
232d0 20 61 20 64 61 74 61 62 61 73 65 20 72 65 76 65   a database reve
232e0 72 73 65 73 20 74 68 65 0d 0a 20 20 20 20 20 20  rses the..      
232f0 20 20 2f 2f 2f 20 65 66 66 65 63 74 73 20 6f 66    /// effects of
23300 20 61 70 70 6c 79 69 6e 67 20 74 68 65 20 75 6e   applying the un
23310 69 6e 76 65 72 74 65 64 20 63 68 61 6e 67 65 73  inverted changes
23320 2e 20 20 53 70 65 63 69 66 69 63 61 6c 6c 79 3a  .  Specifically:
23330 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 21  ..        /// <!
23340 5b 43 44 41 54 41 5b 3c 75 6c 3e 5d 5d 3e 3c 21  [CDATA[<ul>]]><!
23350 5b 43 44 41 54 41 5b 3c 6c 69 3e 5d 5d 3e 0d 0a  [CDATA[<li>]]>..
23360 20 20 20 20 20 20 20 20 2f 2f 2f 20 45 61 63 68          /// Each
23370 20 44 45 4c 45 54 45 20 63 68 61 6e 67 65 20 69   DELETE change i
23380 73 20 63 68 61 6e 67 65 64 20 74 6f 20 61 6e 20  s changed to an 
23390 49 4e 53 45 52 54 2c 20 61 6e 64 0d 0a 20 20 20  INSERT, and..   
233a0 20 20 20 20 20 2f 2f 2f 20 3c 21 5b 43 44 41 54       /// <![CDAT
233b0 41 5b 3c 2f 6c 69 3e 5d 5d 3e 3c 21 5b 43 44 41  A[</li>]]><![CDA
233c0 54 41 5b 3c 6c 69 3e 5d 5d 3e 0d 0a 20 20 20 20  TA[<li>]]>..    
233d0 20 20 20 20 2f 2f 2f 20 45 61 63 68 20 49 4e 53      /// Each INS
233e0 45 52 54 20 63 68 61 6e 67 65 20 69 73 20 63 68  ERT change is ch
233f0 61 6e 67 65 64 20 74 6f 20 61 20 44 45 4c 45 54  anged to a DELET
23400 45 2c 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20  E, and..        
23410 2f 2f 2f 20 3c 21 5b 43 44 41 54 41 5b 3c 2f 6c  /// <![CDATA[</l
23420 69 3e 5d 5d 3e 3c 21 5b 43 44 41 54 41 5b 3c 6c  i>]]><![CDATA[<l
23430 69 3e 5d 5d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  i>]]>..        /
23440 2f 2f 20 46 6f 72 20 65 61 63 68 20 55 50 44 41  // For each UPDA
23450 54 45 20 63 68 61 6e 67 65 2c 20 74 68 65 20 6f  TE change, the o
23460 6c 64 2e 2a 20 61 6e 64 20 6e 65 77 2e 2a 20 76  ld.* and new.* v
23470 61 6c 75 65 73 20 61 72 65 20 65 78 63 68 61 6e  alues are exchan
23480 67 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ged...        //
23490 2f 20 3c 21 5b 43 44 41 54 41 5b 3c 2f 6c 69 3e  / <![CDATA[</li>
234a0 5d 5d 3e 3c 21 5b 43 44 41 54 41 5b 3c 2f 75 6c  ]]><![CDATA[</ul
234b0 3e 5d 5d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  >]]>..        //
234c0 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 64 6f  / This method do
234d0 65 73 20 6e 6f 74 20 63 68 61 6e 67 65 20 74 68  es not change th
234e0 65 20 6f 72 64 65 72 20 69 6e 20 77 68 69 63 68  e order in which
234f0 20 63 68 61 6e 67 65 73 20 61 70 70 65 61 72 0d   changes appear.
23500 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74  .        /// wit
23510 68 69 6e 20 74 68 65 20 73 65 74 20 6f 66 20 63  hin the set of c
23520 68 61 6e 67 65 73 2e 20 49 74 20 6d 65 72 65 6c  hanges. It merel
23530 79 20 72 65 76 65 72 73 65 73 20 74 68 65 20 73  y reverses the s
23540 65 6e 73 65 20 6f 66 20 65 61 63 68 0d 0a 20 20  ense of each..  
23550 20 20 20 20 20 20 2f 2f 2f 20 69 6e 64 69 76 69        /// indivi
23560 64 75 61 6c 20 63 68 61 6e 67 65 2e 0d 0a 20 20  dual change...  
23570 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
23580 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
23590 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
235a0 20 20 20 20 20 2f 2f 2f 20 53 69 6e 63 65 20 74       /// Since t
235b0 68 65 20 72 65 73 75 6c 74 69 6e 67 20 73 65 74  he resulting set
235c0 20 6f 66 20 63 68 61 6e 67 65 73 20 69 73 20 77   of changes is w
235d0 72 69 74 74 65 6e 20 74 6f 20 74 68 65 20 6f 75  ritten to the ou
235e0 74 70 75 74 20 73 74 72 65 61 6d 2c 0d 0a 20 20  tput stream,..  
235f0 20 20 20 20 20 20 2f 2f 2f 20 74 68 69 73 20 6d        /// this m
23600 65 74 68 6f 64 20 61 6c 77 61 79 73 20 72 65 74  ethod always ret
23610 75 72 6e 73 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20  urns null...    
23620 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
23630 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  s>..        publ
23640 69 63 20 49 53 51 4c 69 74 65 43 68 61 6e 67 65  ic ISQLiteChange
23650 53 65 74 20 49 6e 76 65 72 74 28 29 0d 0a 20 20  Set Invert()..  
23660 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
23670 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
23680 65 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ed();..         
23690 20 20 20 43 68 65 63 6b 49 6e 70 75 74 53 74 72     CheckInputStr
236a0 65 61 6d 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  eam();..        
236b0 20 20 20 20 43 68 65 63 6b 4f 75 74 70 75 74 53      CheckOutputS
236c0 74 72 65 61 6d 28 29 3b 0d 0a 0d 0a 20 20 20 20  tream();....    
236d0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72          SQLiteEr
236e0 72 6f 72 43 6f 64 65 20 72 63 20 3d 20 55 6e 73  rorCode rc = Uns
236f0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
23700 2e 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65  .sqlite3changese
23710 74 5f 69 6e 76 65 72 74 5f 73 74 72 6d 28 0d 0a  t_invert_strm(..
23720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23730 69 6e 70 75 74 53 74 72 65 61 6d 41 64 61 70 74  inputStreamAdapt
23740 65 72 2e 47 65 74 49 6e 70 75 74 44 65 6c 65 67  er.GetInputDeleg
23750 61 74 65 28 29 2c 20 49 6e 74 50 74 72 2e 5a 65  ate(), IntPtr.Ze
23760 72 6f 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro,..           
23770 20 20 20 20 20 6f 75 74 70 75 74 53 74 72 65 61       outputStrea
23780 6d 41 64 61 70 74 65 72 2e 47 65 74 4f 75 74 70  mAdapter.GetOutp
23790 75 74 44 65 6c 65 67 61 74 65 28 29 2c 20 49 6e  utDelegate(), In
237a0 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20  tPtr.Zero);.... 
237b0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72             if (r
237c0 63 20 21 3d 20 53 51 4c 69 74 65 45 72 72 6f 72  c != SQLiteError
237d0 43 6f 64 65 2e 4f 6b 29 0d 0a 20 20 20 20 20 20  Code.Ok)..      
237e0 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
237f0 6e 65 77 20 53 51 4c 69 74 65 45 78 63 65 70 74  new SQLiteExcept
23800 69 6f 6e 28 72 63 2c 20 22 73 71 6c 69 74 65 33  ion(rc, "sqlite3
23810 63 68 61 6e 67 65 73 65 74 5f 69 6e 76 65 72 74  changeset_invert
23820 5f 73 74 72 6d 22 29 3b 0d 0a 0d 0a 20 20 20 20  _strm");....    
23830 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
23840 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ull;..        }.
23850 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
23860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
238a0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
238b0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
238c0 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65       /// This me
238d0 74 68 6f 64 20 63 6f 6d 62 69 6e 65 73 20 74 68  thod combines th
238e0 65 20 73 70 65 63 69 66 69 65 64 20 73 65 74 20  e specified set 
238f0 6f 66 20 63 68 61 6e 67 65 73 20 77 69 74 68 20  of changes with 
23900 74 68 65 20 6f 6e 65 73 0d 0a 20 20 20 20 20 20  the ones..      
23910 20 20 2f 2f 2f 20 63 6f 6e 74 61 69 6e 65 64 20    /// contained 
23920 69 6e 20 74 68 69 73 20 69 6e 73 74 61 6e 63 65  in this instance
23930 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
23940 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
23950 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
23960 6d 65 3d 22 63 68 61 6e 67 65 53 65 74 22 3e 0d  me="changeSet">.
23970 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
23980 20 63 68 61 6e 67 65 73 20 74 6f 20 62 65 20 63   changes to be c
23990 6f 6d 62 69 6e 65 64 20 77 69 74 68 20 74 68 6f  ombined with tho
239a0 73 65 20 69 6e 20 74 68 69 73 20 69 6e 73 74 61  se in this insta
239b0 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nce...        //
239c0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
239d0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
239e0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53  >..        /// S
239f0 69 6e 63 65 20 74 68 65 20 72 65 73 75 6c 74 69  ince the resulti
23a00 6e 67 20 73 65 74 20 6f 66 20 63 68 61 6e 67 65  ng set of change
23a10 73 20 69 73 20 77 72 69 74 74 65 6e 20 74 6f 20  s is written to 
23a20 74 68 65 20 6f 75 74 70 75 74 20 73 74 72 65 61  the output strea
23a30 6d 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m,..        /// 
23a40 74 68 69 73 20 6d 65 74 68 6f 64 20 61 6c 77 61  this method alwa
23a50 79 73 20 72 65 74 75 72 6e 73 20 6e 75 6c 6c 2e  ys returns null.
23a60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
23a70 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
23a80 20 20 70 75 62 6c 69 63 20 49 53 51 4c 69 74 65    public ISQLite
23a90 43 68 61 6e 67 65 53 65 74 20 43 6f 6d 62 69 6e  ChangeSet Combin
23aa0 65 57 69 74 68 28 0d 0a 20 20 20 20 20 20 20 20  eWith(..        
23ab0 20 20 20 20 49 53 51 4c 69 74 65 43 68 61 6e 67      ISQLiteChang
23ac0 65 53 65 74 20 63 68 61 6e 67 65 53 65 74 0d 0a  eSet changeSet..
23ad0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
23ae0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
23af0 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f        CheckDispo
23b00 73 65 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  sed();..        
23b10 20 20 20 20 43 68 65 63 6b 49 6e 70 75 74 53 74      CheckInputSt
23b20 72 65 61 6d 28 29 3b 0d 0a 20 20 20 20 20 20 20  ream();..       
23b30 20 20 20 20 20 43 68 65 63 6b 4f 75 74 70 75 74       CheckOutput
23b40 53 74 72 65 61 6d 28 29 3b 0d 0a 0d 0a 20 20 20  Stream();....   
23b50 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 53           SQLiteS
23b60 74 72 65 61 6d 43 68 61 6e 67 65 53 65 74 20 73  treamChangeSet s
23b70 74 72 65 61 6d 43 68 61 6e 67 65 53 65 74 20 3d  treamChangeSet =
23b80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23b90 20 20 63 68 61 6e 67 65 53 65 74 20 61 73 20 53    changeSet as S
23ba0 51 4c 69 74 65 53 74 72 65 61 6d 43 68 61 6e 67  QLiteStreamChang
23bb0 65 53 65 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  eSet;....       
23bc0 20 20 20 20 20 69 66 20 28 73 74 72 65 61 6d 43       if (streamC
23bd0 68 61 6e 67 65 53 65 74 20 3d 3d 20 6e 75 6c 6c  hangeSet == null
23be0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
23bf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23c00 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75    throw new Argu
23c10 6d 65 6e 74 45 78 63 65 70 74 69 6f 6e 28 0d 0a  mentException(..
23c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23c30 20 20 20 20 22 6e 6f 74 20 61 20 73 74 72 65 61      "not a strea
23c40 6d 20 62 61 73 65 64 20 63 68 61 6e 67 65 20 73  m based change s
23c50 65 74 22 2c 20 22 63 68 61 6e 67 65 53 65 74 22  et", "changeSet"
23c60 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
23c70 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
23c80 20 73 74 72 65 61 6d 43 68 61 6e 67 65 53 65 74   streamChangeSet
23c90 2e 43 68 65 63 6b 49 6e 70 75 74 53 74 72 65 61  .CheckInputStrea
23ca0 6d 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  m();....        
23cb0 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43      SQLiteErrorC
23cc0 6f 64 65 20 72 63 20 3d 20 55 6e 73 61 66 65 4e  ode rc = UnsafeN
23cd0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
23ce0 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 63 6f  ite3changeset_co
23cf0 6e 63 61 74 5f 73 74 72 6d 28 0d 0a 20 20 20 20  ncat_strm(..    
23d00 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 70 75              inpu
23d10 74 53 74 72 65 61 6d 41 64 61 70 74 65 72 2e 47  tStreamAdapter.G
23d20 65 74 49 6e 70 75 74 44 65 6c 65 67 61 74 65 28  etInputDelegate(
23d30 29 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2c 0d  ), IntPtr.Zero,.
23d40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23d50 20 73 74 72 65 61 6d 43 68 61 6e 67 65 53 65 74   streamChangeSet
23d60 2e 69 6e 70 75 74 53 74 72 65 61 6d 41 64 61 70  .inputStreamAdap
23d70 74 65 72 2e 47 65 74 49 6e 70 75 74 44 65 6c 65  ter.GetInputDele
23d80 67 61 74 65 28 29 2c 0d 0a 20 20 20 20 20 20 20  gate(),..       
23d90 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 2e           IntPtr.
23da0 5a 65 72 6f 2c 20 6f 75 74 70 75 74 53 74 72 65  Zero, outputStre
23db0 61 6d 41 64 61 70 74 65 72 2e 47 65 74 4f 75 74  amAdapter.GetOut
23dc0 70 75 74 44 65 6c 65 67 61 74 65 28 29 2c 0d 0a  putDelegate(),..
23dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23de0 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d  IntPtr.Zero);...
23df0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
23e00 28 72 63 20 21 3d 20 53 51 4c 69 74 65 45 72 72  (rc != SQLiteErr
23e10 6f 72 43 6f 64 65 2e 4f 6b 29 0d 0a 20 20 20 20  orCode.Ok)..    
23e20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
23e30 77 20 6e 65 77 20 53 51 4c 69 74 65 45 78 63 65  w new SQLiteExce
23e40 70 74 69 6f 6e 28 72 63 2c 20 22 73 71 6c 69 74  ption(rc, "sqlit
23e50 65 33 63 68 61 6e 67 65 73 65 74 5f 63 6f 6e 63  e3changeset_conc
23e60 61 74 5f 73 74 72 6d 22 29 3b 0d 0a 0d 0a 20 20  at_strm");....  
23e70 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
23e80 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20   null;..        
23e90 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
23ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23ee0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
23ef0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
23f00 20 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d         /// Attem
23f10 70 74 73 20 74 6f 20 61 70 70 6c 79 20 74 68 65  pts to apply the
23f20 20 73 65 74 20 6f 66 20 63 68 61 6e 67 65 73 20   set of changes 
23f30 69 6e 20 74 68 69 73 20 69 6e 73 74 61 6e 63 65  in this instance
23f40 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20   to the..       
23f50 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20   /// associated 
23f60 64 61 74 61 62 61 73 65 2e 0d 0a 20 20 20 20 20  database...     
23f70 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
23f80 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
23f90 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 66  param name="conf
23fa0 6c 69 63 74 43 61 6c 6c 62 61 63 6b 22 3e 0d 0a  lictCallback">..
23fb0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
23fc0 3c 73 65 65 20 63 72 65 66 3d 22 53 65 73 73 69  <see cref="Sessi
23fd0 6f 6e 43 6f 6e 66 6c 69 63 74 43 61 6c 6c 62 61  onConflictCallba
23fe0 63 6b 22 20 2f 3e 20 64 65 6c 65 67 61 74 65 20  ck" /> delegate 
23ff0 74 68 61 74 20 77 69 6c 6c 20 6e 65 65 64 0d 0a  that will need..
24000 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20 68          /// to h
24010 61 6e 64 6c 65 20 61 6e 79 20 63 6f 6e 66 6c 69  andle any confli
24020 63 74 69 6e 67 20 63 68 61 6e 67 65 73 20 74 68  cting changes th
24030 61 74 20 6d 61 79 20 61 72 69 73 65 2e 0d 0a 20  at may arise... 
24040 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
24050 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
24060 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6c   <param name="cl
24070 69 65 6e 74 44 61 74 61 22 3e 0d 0a 20 20 20 20  ientData">..    
24080 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 70 74 69      /// The opti
24090 6f 6e 61 6c 20 61 70 70 6c 69 63 61 74 69 6f 6e  onal application
240a0 2d 64 65 66 69 6e 65 64 20 63 6f 6e 74 65 78 74  -defined context
240b0 20 64 61 74 61 2e 20 20 54 68 69 73 20 76 61 6c   data.  This val
240c0 75 65 20 6d 61 79 20 62 65 0d 0a 20 20 20 20 20  ue may be..     
240d0 20 20 20 2f 2f 2f 20 6e 75 6c 6c 2e 0d 0a 20 20     /// null...  
240e0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
240f0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  m>..        publ
24100 69 63 20 76 6f 69 64 20 41 70 70 6c 79 28 0d 0a  ic void Apply(..
24110 20 20 20 20 20 20 20 20 20 20 20 20 53 65 73 73              Sess
24120 69 6f 6e 43 6f 6e 66 6c 69 63 74 43 61 6c 6c 62  ionConflictCallb
24130 61 63 6b 20 63 6f 6e 66 6c 69 63 74 43 61 6c 6c  ack conflictCall
24140 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20  back,..         
24150 20 20 20 6f 62 6a 65 63 74 20 63 6c 69 65 6e 74     object client
24160 44 61 74 61 0d 0a 20 20 20 20 20 20 20 20 20 20  Data..          
24170 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
24180 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63              Chec
24190 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a  kDisposed();....
241a0 20 20 20 20 20 20 20 20 20 20 20 20 41 70 70 6c              Appl
241b0 79 28 63 6f 6e 66 6c 69 63 74 43 61 6c 6c 62 61  y(conflictCallba
241c0 63 6b 2c 20 6e 75 6c 6c 2c 20 63 6c 69 65 6e 74  ck, null, client
241d0 44 61 74 61 29 3b 0d 0a 20 20 20 20 20 20 20 20  Data);..        
241e0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
241f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24230 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
24240 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
24250 20 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d         /// Attem
24260 70 74 73 20 74 6f 20 61 70 70 6c 79 20 74 68 65  pts to apply the
24270 20 73 65 74 20 6f 66 20 63 68 61 6e 67 65 73 20   set of changes 
24280 69 6e 20 74 68 69 73 20 69 6e 73 74 61 6e 63 65  in this instance
24290 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20   to the..       
242a0 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20   /// associated 
242b0 64 61 74 61 62 61 73 65 2e 0d 0a 20 20 20 20 20  database...     
242c0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
242d0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
242e0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 66  param name="conf
242f0 6c 69 63 74 43 61 6c 6c 62 61 63 6b 22 3e 0d 0a  lictCallback">..
24300 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
24310 3c 73 65 65 20 63 72 65 66 3d 22 53 65 73 73 69  <see cref="Sessi
24320 6f 6e 43 6f 6e 66 6c 69 63 74 43 61 6c 6c 62 61  onConflictCallba
24330 63 6b 22 20 2f 3e 20 64 65 6c 65 67 61 74 65 20  ck" /> delegate 
24340 74 68 61 74 20 77 69 6c 6c 20 6e 65 65 64 0d 0a  that will need..
24350 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20 68          /// to h
24360 61 6e 64 6c 65 20 61 6e 79 20 63 6f 6e 66 6c 69  andle any confli
24370 63 74 69 6e 67 20 63 68 61 6e 67 65 73 20 74 68  cting changes th
24380 61 74 20 6d 61 79 20 61 72 69 73 65 2e 0d 0a 20  at may arise... 
24390 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
243a0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
243b0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61   <param name="ta
243c0 62 6c 65 46 69 6c 74 65 72 43 61 6c 6c 62 61 63  bleFilterCallbac
243d0 6b 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  k">..        ///
243e0 20 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 3c 73   The optional <s
243f0 65 65 20 63 72 65 66 3d 22 53 65 73 73 69 6f 6e  ee cref="Session
24400 54 61 62 6c 65 46 69 6c 74 65 72 43 61 6c 6c 62  TableFilterCallb
24410 61 63 6b 22 20 2f 3e 20 64 65 6c 65 67 61 74 65  ack" /> delegate
24420 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68  ..        /// th
24430 61 74 20 63 61 6e 20 62 65 20 75 73 65 64 20 74  at can be used t
24440 6f 20 66 69 6c 74 65 72 20 74 68 65 20 6c 69 73  o filter the lis
24450 74 20 6f 66 20 74 61 62 6c 65 73 20 69 6d 70 61  t of tables impa
24460 63 74 65 64 20 62 79 20 74 68 65 20 73 65 74 0d  cted by the set.
24470 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 66 20  .        /// of 
24480 63 68 61 6e 67 65 73 2e 0d 0a 20 20 20 20 20 20  changes...      
24490 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
244a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
244b0 61 6d 20 6e 61 6d 65 3d 22 63 6c 69 65 6e 74 44  am name="clientD
244c0 61 74 61 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ata">..        /
244d0 2f 2f 20 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20  // The optional 
244e0 61 70 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69  application-defi
244f0 6e 65 64 20 63 6f 6e 74 65 78 74 20 64 61 74 61  ned context data
24500 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20 6d 61  .  This value ma
24510 79 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  y be..        //
24520 2f 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 20  / null...       
24530 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
24540 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f         public vo
24550 69 64 20 41 70 70 6c 79 28 0d 0a 20 20 20 20 20  id Apply(..     
24560 20 20 20 20 20 20 20 53 65 73 73 69 6f 6e 43 6f         SessionCo
24570 6e 66 6c 69 63 74 43 61 6c 6c 62 61 63 6b 20 63  nflictCallback c
24580 6f 6e 66 6c 69 63 74 43 61 6c 6c 62 61 63 6b 2c  onflictCallback,
24590 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 65  ..            Se
245a0 73 73 69 6f 6e 54 61 62 6c 65 46 69 6c 74 65 72  ssionTableFilter
245b0 43 61 6c 6c 62 61 63 6b 20 74 61 62 6c 65 46 69  Callback tableFi
245c0 6c 74 65 72 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20  lterCallback,.. 
245d0 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63             objec
245e0 74 20 63 6c 69 65 6e 74 44 61 74 61 0d 0a 20 20  t clientData..  
245f0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
24600 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
24610 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65      CheckDispose
24620 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  d();..          
24630 20 20 43 68 65 63 6b 49 6e 70 75 74 53 74 72 65    CheckInputStre
24640 61 6d 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  am();....       
24650 20 20 20 20 20 69 66 20 28 63 6f 6e 66 6c 69 63       if (conflic
24660 74 43 61 6c 6c 62 61 63 6b 20 3d 3d 20 6e 75 6c  tCallback == nul
24670 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
24680 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72      throw new Ar
24690 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65 70 74  gumentNullExcept
246a0 69 6f 6e 28 22 63 6f 6e 66 6c 69 63 74 43 61 6c  ion("conflictCal
246b0 6c 62 61 63 6b 22 29 3b 0d 0a 0d 0a 20 20 20 20  lback");....    
246c0 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61          UnsafeNa
246d0 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 53 65 73  tiveMethods.xSes
246e0 73 69 6f 6e 46 69 6c 74 65 72 20 78 46 69 6c 74  sionFilter xFilt
246f0 65 72 20 3d 20 47 65 74 44 65 6c 65 67 61 74 65  er = GetDelegate
24700 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
24710 20 20 20 74 61 62 6c 65 46 69 6c 74 65 72 43 61     tableFilterCa
24720 6c 6c 62 61 63 6b 2c 20 63 6c 69 65 6e 74 44 61  llback, clientDa
24730 74 61 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ta);....        
24740 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
24750 4d 65 74 68 6f 64 73 2e 78 53 65 73 73 69 6f 6e  Methods.xSession
24760 43 6f 6e 66 6c 69 63 74 20 78 43 6f 6e 66 6c 69  Conflict xConfli
24770 63 74 20 3d 20 47 65 74 44 65 6c 65 67 61 74 65  ct = GetDelegate
24780 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
24790 20 20 20 63 6f 6e 66 6c 69 63 74 43 61 6c 6c 62     conflictCallb
247a0 61 63 6b 2c 20 63 6c 69 65 6e 74 44 61 74 61 29  ack, clientData)
247b0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
247c0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
247d0 20 72 63 20 3d 20 55 6e 73 61 66 65 4e 61 74 69   rc = UnsafeNati
247e0 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
247f0 33 63 68 61 6e 67 65 73 65 74 5f 61 70 70 6c 79  3changeset_apply
24800 5f 73 74 72 6d 28 0d 0a 20 20 20 20 20 20 20 20  _strm(..        
24810 20 20 20 20 20 20 20 20 47 65 74 49 6e 74 50 74          GetIntPt
24820 72 28 29 2c 20 69 6e 70 75 74 53 74 72 65 61 6d  r(), inputStream
24830 41 64 61 70 74 65 72 2e 47 65 74 49 6e 70 75 74  Adapter.GetInput
24840 44 65 6c 65 67 61 74 65 28 29 2c 20 49 6e 74 50  Delegate(), IntP
24850 74 72 2e 5a 65 72 6f 2c 0d 0a 20 20 20 20 20 20  tr.Zero,..      
24860 20 20 20 20 20 20 20 20 20 20 78 46 69 6c 74 65            xFilte
24870 72 2c 20 78 43 6f 6e 66 6c 69 63 74 2c 20 49 6e  r, xConflict, In
24880 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20  tPtr.Zero);.... 
24890 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72             if (r
248a0 63 20 21 3d 20 53 51 4c 69 74 65 45 72 72 6f 72  c != SQLiteError
248b0 43 6f 64 65 2e 4f 6b 29 0d 0a 20 20 20 20 20 20  Code.Ok)..      
248c0 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
248d0 6e 65 77 20 53 51 4c 69 74 65 45 78 63 65 70 74  new SQLiteExcept
248e0 69 6f 6e 28 72 63 2c 20 22 73 71 6c 69 74 65 33  ion(rc, "sqlite3
248f0 63 68 61 6e 67 65 73 65 74 5f 61 70 70 6c 79 5f  changeset_apply_
24900 73 74 72 6d 22 29 3b 0d 0a 20 20 20 20 20 20 20  strm");..       
24910 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
24920 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
24930 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
24940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24970 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
24980 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 45 6e       #region IEn
24990 75 6d 65 72 61 62 6c 65 3c 49 53 51 4c 69 74 65  umerable<ISQLite
249a0 43 68 61 6e 67 65 53 65 74 4d 65 74 61 64 61 74  ChangeSetMetadat
249b0 61 49 74 65 6d 3e 20 4d 65 6d 62 65 72 73 0d 0a  aItem> Members..
249c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
249d0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
249e0 2f 2f 20 43 72 65 61 74 65 73 20 61 6e 20 3c 73  // Creates an <s
249f0 65 65 20 63 72 65 66 3d 22 49 45 6e 75 6d 65 72  ee cref="IEnumer
24a00 61 74 6f 72 22 20 2f 3e 20 63 61 70 61 62 6c 65  ator" /> capable
24a10 20 6f 66 20 69 74 65 72 61 74 69 6e 67 20 6f 76   of iterating ov
24a20 65 72 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  er the..        
24a30 2f 2f 2f 20 69 74 65 6d 73 20 77 69 74 68 69 6e  /// items within
24a40 20 74 68 69 73 20 73 65 74 20 6f 66 20 63 68 61   this set of cha
24a50 6e 67 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  nges...        /
24a60 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
24a70 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
24a80 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
24a90 2f 20 54 68 65 20 6e 65 77 20 3c 73 65 65 20 63  / The new <see c
24aa0 72 65 66 3d 22 49 45 6e 75 6d 65 72 61 74 6f 72  ref="IEnumerator
24ab0 7b 49 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65  {ISQLiteChangeSe
24ac0 74 4d 65 74 61 64 61 74 61 49 74 65 6d 7d 22 20  tMetadataItem}" 
24ad0 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  />..        /// 
24ae0 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
24af0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
24b00 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
24b10 63 20 49 45 6e 75 6d 65 72 61 74 6f 72 3c 49 53  c IEnumerator<IS
24b20 51 4c 69 74 65 43 68 61 6e 67 65 53 65 74 4d 65  QLiteChangeSetMe
24b30 74 61 64 61 74 61 49 74 65 6d 3e 20 47 65 74 45  tadataItem> GetE
24b40 6e 75 6d 65 72 61 74 6f 72 28 29 0d 0a 20 20 20  numerator()..   
24b50 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
24b60 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20 53      return new S
24b70 51 4c 69 74 65 53 74 72 65 61 6d 43 68 61 6e 67  QLiteStreamChang
24b80 65 53 65 74 45 6e 75 6d 65 72 61 74 6f 72 28 0d  eSetEnumerator(.
24b90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24ba0 20 69 6e 70 75 74 53 74 72 65 61 6d 2c 20 47 65   inputStream, Ge
24bb0 74 46 6c 61 67 73 28 29 29 3b 0d 0a 20 20 20 20  tFlags());..    
24bc0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
24bd0 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
24be0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
24bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
24c30 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
24c40 49 45 6e 75 6d 65 72 61 62 6c 65 20 4d 65 6d 62  IEnumerable Memb
24c50 65 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ers..        ///
24c60 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
24c70 20 20 20 20 2f 2f 2f 20 43 72 65 61 74 65 73 20      /// Creates 
24c80 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 49 45  an <see cref="IE
24c90 6e 75 6d 65 72 61 74 6f 72 22 20 2f 3e 20 63 61  numerator" /> ca
24ca0 70 61 62 6c 65 20 6f 66 20 69 74 65 72 61 74 69  pable of iterati
24cb0 6e 67 20 6f 76 65 72 20 74 68 65 0d 0a 20 20 20  ng over the..   
24cc0 20 20 20 20 20 2f 2f 2f 20 69 74 65 6d 73 20 77       /// items w
24cd0 69 74 68 69 6e 20 74 68 69 73 20 73 65 74 20 6f  ithin this set o
24ce0 66 20 63 68 61 6e 67 65 73 2e 0d 0a 20 20 20 20  f changes...    
24cf0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
24d00 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
24d10 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
24d20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77 20 3c     /// The new <
24d30 73 65 65 20 63 72 65 66 3d 22 49 45 6e 75 6d 65  see cref="IEnume
24d40 72 61 74 6f 72 22 20 2f 3e 20 69 6e 73 74 61 6e  rator" /> instan
24d50 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ce...        ///
24d60 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
24d70 20 20 20 20 20 49 45 6e 75 6d 65 72 61 74 6f 72       IEnumerator
24d80 20 53 79 73 74 65 6d 2e 43 6f 6c 6c 65 63 74 69   System.Collecti
24d90 6f 6e 73 2e 49 45 6e 75 6d 65 72 61 62 6c 65 2e  ons.IEnumerable.
24da0 47 65 74 45 6e 75 6d 65 72 61 74 6f 72 28 29 0d  GetEnumerator().
24db0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
24dc0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 47          return G
24dd0 65 74 45 6e 75 6d 65 72 61 74 6f 72 28 29 3b 0d  etEnumerator();.
24de0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
24df0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
24e00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
24e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24e50 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
24e60 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65  gion IDisposable
24e70 20 22 50 61 74 74 65 72 6e 22 20 4d 65 6d 62 65   "Pattern" Membe
24e80 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  rs..        /// 
24e90 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
24ea0 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
24eb0 69 66 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69  if this object i
24ec0 6e 73 74 61 6e 63 65 20 68 61 73 20 62 65 65 6e  nstance has been
24ed0 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20   disposed...    
24ee0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
24ef0 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
24f00 61 74 65 20 62 6f 6f 6c 20 64 69 73 70 6f 73 65  ate bool dispose
24f10 64 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  d;....        //
24f20 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
24f30 20 20 20 20 20 2f 2f 2f 20 54 68 72 6f 77 73 20       /// Throws 
24f40 61 6e 20 65 78 63 65 70 74 69 6f 6e 20 69 66 20  an exception if 
24f50 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74  this object inst
24f60 61 6e 63 65 20 68 61 73 20 62 65 65 6e 20 64 69  ance has been di
24f70 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 20  sposed...       
24f80 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
24f90 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
24fa0 20 76 6f 69 64 20 43 68 65 63 6b 44 69 73 70 6f   void CheckDispo
24fb0 73 65 64 28 29 20 2f 2a 20 74 68 72 6f 77 20 2a  sed() /* throw *
24fc0 2f 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  /..        {..#i
24fd0 66 20 54 48 52 4f 57 5f 4f 4e 5f 44 49 53 50 4f  f THROW_ON_DISPO
24fe0 53 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  SED..           
24ff0 20 69 66 20 28 64 69 73 70 6f 73 65 64 29 0d 0a   if (disposed)..
25000 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
25010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
25020 68 72 6f 77 20 6e 65 77 20 4f 62 6a 65 63 74 44  hrow new ObjectD
25030 69 73 70 6f 73 65 64 45 78 63 65 70 74 69 6f 6e  isposedException
25040 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
25050 20 20 20 20 20 20 20 74 79 70 65 6f 66 28 53 51         typeof(SQ
25060 4c 69 74 65 53 74 72 65 61 6d 43 68 61 6e 67 65  LiteStreamChange
25070 53 65 74 29 2e 4e 61 6d 65 29 3b 0d 0a 20 20 20  Set).Name);..   
25080 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
25090 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  if..        }...
250a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
250b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
250c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
250d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
250e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
250f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
25100 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
25110 20 20 20 2f 2f 2f 20 44 69 73 70 6f 73 65 73 20     /// Disposes 
25120 6f 72 20 66 69 6e 61 6c 69 7a 65 73 20 74 68 69  or finalizes thi
25130 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  s object instanc
25140 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
25150 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
25160 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
25170 61 6d 65 3d 22 64 69 73 70 6f 73 69 6e 67 22 3e  ame="disposing">
25180 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  ..        /// No
25190 6e 2d 7a 65 72 6f 20 69 66 20 74 68 69 73 20 6f  n-zero if this o
251a0 62 6a 65 63 74 20 69 73 20 62 65 69 6e 67 20 64  bject is being d
251b0 69 73 70 6f 73 65 64 3b 20 6f 74 68 65 72 77 69  isposed; otherwi
251c0 73 65 2c 20 74 68 69 73 20 6f 62 6a 65 63 74 0d  se, this object.
251d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 73 20  .        /// is 
251e0 62 65 69 6e 67 20 66 69 6e 61 6c 69 7a 65 64 2e  being finalized.
251f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
25200 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
25210 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69  protected overri
25220 64 65 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28  de void Dispose(
25230 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d  bool disposing).
25240 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
25250 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
25260 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
25270 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
25280 21 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20  !disposed)..    
25290 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
252a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
252b0 20 20 20 69 66 20 28 64 69 73 70 6f 73 69 6e 67     if (disposing
252c0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
252d0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
252e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
252f0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
25300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25310 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20  //////..        
25320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25330 2f 2f 20 64 69 73 70 6f 73 65 20 6d 61 6e 61 67  // dispose manag
25340 65 64 20 72 65 73 6f 75 72 63 65 73 20 68 65 72  ed resources her
25350 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  e.....          
25360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
25370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25390 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
253a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
253b0 20 28 6f 75 74 70 75 74 53 74 72 65 61 6d 41 64   (outputStreamAd
253c0 61 70 74 65 72 20 21 3d 20 6e 75 6c 6c 29 0d 0a  apter != null)..
253d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
253e0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
253f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25400 20 20 20 20 20 20 20 6f 75 74 70 75 74 53 74 72         outputStr
25410 65 61 6d 41 64 61 70 74 65 72 2e 44 69 73 70 6f  eamAdapter.Dispo
25420 73 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  se();..         
25430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25440 20 20 20 6f 75 74 70 75 74 53 74 72 65 61 6d 41     outputStreamA
25450 64 61 70 74 65 72 20 3d 20 6e 75 6c 6c 3b 0d 0a  dapter = null;..
25460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25470 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
25480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25490 20 20 20 20 20 69 66 20 28 69 6e 70 75 74 53 74       if (inputSt
254a0 72 65 61 6d 41 64 61 70 74 65 72 20 21 3d 20 6e  reamAdapter != n
254b0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
254c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
254d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
254e0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 70               inp
254f0 75 74 53 74 72 65 61 6d 41 64 61 70 74 65 72 2e  utStreamAdapter.
25500 44 69 73 70 6f 73 65 28 29 3b 0d 0a 20 20 20 20  Dispose();..    
25510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25520 20 20 20 20 20 20 20 20 69 6e 70 75 74 53 74 72          inputStr
25530 65 61 6d 41 64 61 70 74 65 72 20 3d 20 6e 75 6c  eamAdapter = nul
25540 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l;..            
25550 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
25560 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25570 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 75 74           if (out
25580 70 75 74 53 74 72 65 61 6d 20 21 3d 20 6e 75 6c  putStream != nul
25590 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
255a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
255b0 6f 75 74 70 75 74 53 74 72 65 61 6d 20 3d 20 6e  outputStream = n
255c0 75 6c 6c 3b 20 2f 2a 20 4e 4f 54 20 4f 57 4e 45  ull; /* NOT OWNE
255d0 44 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  D */....        
255e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
255f0 69 66 20 28 69 6e 70 75 74 53 74 72 65 61 6d 20  if (inputStream 
25600 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
25610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25620 20 20 20 20 20 20 69 6e 70 75 74 53 74 72 65 61        inputStrea
25630 6d 20 3d 20 6e 75 6c 6c 3b 20 2f 2a 20 4e 4f 54  m = null; /* NOT
25640 20 4f 57 4e 45 44 20 2a 2f 0d 0a 20 20 20 20 20   OWNED */..     
25650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
25660 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
25670 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
25680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
256a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
256b0 20 20 20 20 2f 2f 20 72 65 6c 65 61 73 65 20 75      // release u
256c0 6e 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63  nmanaged resourc
256d0 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20  es here.....    
256e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
256f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25710 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20  //////..        
25720 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
25730 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
25740 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20        finally.. 
25750 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
25760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 61                ba
25770 73 65 2e 44 69 73 70 6f 73 65 28 64 69 73 70 6f  se.Dispose(dispo
25780 73 69 6e 67 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  sing);....      
25790 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
257a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
257b0 20 4e 4f 54 45 3a 20 45 76 65 72 79 74 68 69 6e   NOTE: Everythin
257c0 67 20 73 68 6f 75 6c 64 20 62 65 20 66 75 6c 6c  g should be full
257d0 79 20 64 69 73 70 6f 73 65 64 20 61 74 20 74 68  y disposed at th
257e0 69 73 20 70 6f 69 6e 74 2e 0d 0a 20 20 20 20 20  is point...     
257f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
25800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
25810 69 73 70 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d  isposed = true;.
25820 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
25830 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
25840 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20     #endregion.. 
25850 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65     }..    #endre
25860 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
25870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
258a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
258b0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
258c0 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 43 68 61  region SQLiteCha
258d0 6e 67 65 53 65 74 45 6e 75 6d 65 72 61 74 6f 72  ngeSetEnumerator
258e0 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20   Class..    /// 
258f0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
25900 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 72 65  // This class re
25910 70 72 65 73 65 6e 74 73 20 61 6e 20 3c 73 65 65  presents an <see
25920 20 63 72 65 66 3d 22 49 45 6e 75 6d 65 72 61 74   cref="IEnumerat
25930 6f 72 22 20 2f 3e 20 74 68 61 74 20 69 73 20 63  or" /> that is c
25940 61 70 61 62 6c 65 20 6f 66 0d 0a 20 20 20 20 2f  apable of..    /
25950 2f 2f 20 65 6e 75 6d 65 72 61 74 69 6e 67 20 6f  // enumerating o
25960 76 65 72 20 61 20 73 65 74 20 6f 66 20 63 68 61  ver a set of cha
25970 6e 67 65 73 2e 20 20 49 74 20 73 65 72 76 65 73  nges.  It serves
25980 20 61 73 20 74 68 65 20 62 61 73 65 20 63 6c 61   as the base cla
25990 73 73 20 66 6f 72 20 74 68 65 0d 0a 20 20 20 20  ss for the..    
259a0 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53  /// <see cref="S
259b0 51 4c 69 74 65 4d 65 6d 6f 72 79 43 68 61 6e 67  QLiteMemoryChang
259c0 65 53 65 74 45 6e 75 6d 65 72 61 74 6f 72 22 20  eSetEnumerator" 
259d0 2f 3e 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 2f 20  /> and..    /// 
259e0 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
259f0 65 53 74 72 65 61 6d 43 68 61 6e 67 65 53 65 74  eStreamChangeSet
25a00 45 6e 75 6d 65 72 61 74 6f 72 22 20 2f 3e 20 63  Enumerator" /> c
25a10 6c 61 73 73 65 73 2e 20 20 49 74 20 6d 61 6e 61  lasses.  It mana
25a20 67 65 73 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 2f  ges and..    ///
25a30 20 6f 77 6e 73 20 61 6e 20 69 6e 73 74 61 6e 63   owns an instanc
25a40 65 20 6f 66 20 74 68 65 20 3c 73 65 65 20 63 72  e of the <see cr
25a50 65 66 3d 22 53 51 4c 69 74 65 43 68 61 6e 67 65  ef="SQLiteChange
25a60 53 65 74 49 74 65 72 61 74 6f 72 22 20 2f 3e 20  SetIterator" /> 
25a70 63 6c 61 73 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20  class...    /// 
25a80 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
25a90 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63  internal abstrac
25aa0 74 20 63 6c 61 73 73 20 53 51 4c 69 74 65 43 68  t class SQLiteCh
25ab0 61 6e 67 65 53 65 74 45 6e 75 6d 65 72 61 74 6f  angeSetEnumerato
25ac0 72 20 3a 0d 0a 20 20 20 20 20 20 20 20 49 45 6e  r :..        IEn
25ad0 75 6d 65 72 61 74 6f 72 3c 49 53 51 4c 69 74 65  umerator<ISQLite
25ae0 43 68 61 6e 67 65 53 65 74 4d 65 74 61 64 61 74  ChangeSetMetadat
25af0 61 49 74 65 6d 3e 0d 0a 20 20 20 20 7b 0d 0a 20  aItem>..    {.. 
25b00 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
25b10 72 69 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20  rivate Data..   
25b20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
25b30 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
25b40 54 68 69 73 20 6d 61 6e 61 67 65 64 20 63 68 61  This managed cha
25b50 6e 67 65 20 73 65 74 20 69 74 65 72 61 74 6f 72  nge set iterator
25b60 20 69 73 20 6d 61 6e 61 67 65 64 20 61 6e 64 20   is managed and 
25b70 6f 77 6e 65 64 20 62 79 20 74 68 69 73 0d 0a 20  owned by this.. 
25b80 20 20 20 20 20 20 20 2f 2f 2f 20 63 6c 61 73 73         /// class
25b90 2e 20 20 49 74 20 77 69 6c 6c 20 62 65 20 64 69  .  It will be di
25ba0 73 70 6f 73 65 64 20 77 68 65 6e 20 74 68 69 73  sposed when this
25bb0 20 63 6c 61 73 73 20 69 73 20 64 69 73 70 6f 73   class is dispos
25bc0 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
25bd0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
25be0 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c       private SQL
25bf0 69 74 65 43 68 61 6e 67 65 53 65 74 49 74 65 72  iteChangeSetIter
25c00 61 74 6f 72 20 69 74 65 72 61 74 6f 72 3b 0d 0a  ator iterator;..
25c10 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
25c20 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
25c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25c70 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
25c80 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
25c90 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20  Constructors..  
25ca0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
25cb0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
25cc0 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69   Constructs an i
25cd0 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20  nstance of this 
25ce0 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68 65 20  class using the 
25cf0 73 70 65 63 69 66 69 65 64 20 6d 61 6e 61 67 65  specified manage
25d00 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  d..        /// c
25d10 68 61 6e 67 65 20 73 65 74 20 69 74 65 72 61 74  hange set iterat
25d20 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  or...        ///
25d30 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
25d40 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
25d50 6e 61 6d 65 3d 22 69 74 65 72 61 74 6f 72 22 3e  name="iterator">
25d60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
25d70 65 20 6d 61 6e 61 67 65 64 20 69 74 65 72 61 74  e managed iterat
25d80 6f 72 20 69 6e 73 74 61 6e 63 65 20 74 6f 20 75  or instance to u
25d90 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  se...        ///
25da0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
25db0 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
25dc0 43 68 61 6e 67 65 53 65 74 45 6e 75 6d 65 72 61  ChangeSetEnumera
25dd0 74 6f 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  tor(..          
25de0 20 20 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65    SQLiteChangeSe
25df0 74 49 74 65 72 61 74 6f 72 20 69 74 65 72 61 74  tIterator iterat
25e00 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  or..            
25e10 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
25e20 20 20 20 20 20 20 20 20 20 20 53 65 74 49 74 65            SetIte
25e30 72 61 74 6f 72 28 69 74 65 72 61 74 6f 72 29 3b  rator(iterator);
25e40 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
25e50 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
25e60 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
25e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25eb0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
25ec0 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 4d 65  egion Private Me
25ed0 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f  thods..        /
25ee0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
25ef0 20 20 20 20 20 20 2f 2f 2f 20 54 68 72 6f 77 73        /// Throws
25f00 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 20 69 66   an exception if
25f10 20 74 68 65 20 6d 61 6e 61 67 65 64 20 69 74 65   the managed ite
25f20 72 61 74 6f 72 20 69 6e 73 74 61 6e 63 65 20 69  rator instance i
25f30 73 20 69 6e 76 61 6c 69 64 2e 0d 0a 20 20 20 20  s invalid...    
25f40 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
25f50 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
25f60 61 74 65 20 76 6f 69 64 20 43 68 65 63 6b 49 74  ate void CheckIt
25f70 65 72 61 74 6f 72 28 29 0d 0a 20 20 20 20 20 20  erator()..      
25f80 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
25f90 20 69 66 20 28 69 74 65 72 61 74 6f 72 20 3d 3d   if (iterator ==
25fa0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
25fb0 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65          throw ne
25fc0 77 20 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69  w InvalidOperati
25fd0 6f 6e 45 78 63 65 70 74 69 6f 6e 28 22 69 74 65  onException("ite
25fe0 72 61 74 6f 72 20 75 6e 61 76 61 69 6c 61 62 6c  rator unavailabl
25ff0 65 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  e");....        
26000 20 20 20 20 69 74 65 72 61 74 6f 72 2e 43 68 65      iterator.Che
26010 63 6b 48 61 6e 64 6c 65 28 29 3b 0d 0a 20 20 20  ckHandle();..   
26020 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
26030 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
26040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26070 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
26080 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
26090 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
260a0 53 65 74 73 20 74 68 65 20 6d 61 6e 61 67 65 64  Sets the managed
260b0 20 69 74 65 72 61 74 6f 72 20 69 6e 73 74 61 6e   iterator instan
260c0 63 65 20 74 6f 20 61 20 6e 65 77 20 76 61 6c 75  ce to a new valu
260d0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
260e0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
260f0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
26100 61 6d 65 3d 22 69 74 65 72 61 74 6f 72 22 3e 0d  ame="iterator">.
26110 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
26120 20 6e 65 77 20 6d 61 6e 61 67 65 64 20 69 74 65   new managed ite
26130 72 61 74 6f 72 20 69 6e 73 74 61 6e 63 65 20 74  rator instance t
26140 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20  o use...        
26150 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
26160 20 20 20 20 20 20 70 72 69 76 61 74 65 20 76 6f        private vo
26170 69 64 20 53 65 74 49 74 65 72 61 74 6f 72 28 0d  id SetIterator(.
26180 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
26190 69 74 65 43 68 61 6e 67 65 53 65 74 49 74 65 72  iteChangeSetIter
261a0 61 74 6f 72 20 69 74 65 72 61 74 6f 72 0d 0a 20  ator iterator.. 
261b0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
261c0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
261d0 20 20 20 20 20 74 68 69 73 2e 69 74 65 72 61 74       this.iterat
261e0 6f 72 20 3d 20 69 74 65 72 61 74 6f 72 3b 0d 0a  or = iterator;..
261f0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
26200 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
26210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
26250 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
26260 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
26270 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20 74  // Disposes of t
26280 68 65 20 6d 61 6e 61 67 65 64 20 69 74 65 72 61  he managed itera
26290 74 6f 72 20 69 6e 73 74 61 6e 63 65 20 61 6e 64  tor instance and
262a0 20 73 65 74 73 20 69 74 73 20 76 61 6c 75 65 20   sets its value 
262b0 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  to..        /// 
262c0 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 20 20 2f  null...        /
262d0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
262e0 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 76         private v
262f0 6f 69 64 20 43 6c 6f 73 65 49 74 65 72 61 74 6f  oid CloseIterato
26300 72 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  r()..        {..
26310 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
26320 69 74 65 72 61 74 6f 72 20 21 3d 20 6e 75 6c 6c  iterator != null
26330 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
26340 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26350 20 20 69 74 65 72 61 74 6f 72 2e 44 69 73 70 6f    iterator.Dispo
26360 73 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  se();..         
26370 20 20 20 20 20 20 20 69 74 65 72 61 74 6f 72 20         iterator 
26380 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  = null;..       
26390 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
263a0 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
263b0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
263c0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
263d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
263e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
263f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26400 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
26410 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 6f 74      #region Prot
26420 65 63 74 65 64 20 4d 65 74 68 6f 64 73 0d 0a 20  ected Methods.. 
26430 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
26440 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
26450 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20 74 68  / Disposes of th
26460 65 20 65 78 69 73 74 69 6e 67 20 6d 61 6e 61 67  e existing manag
26470 65 64 20 69 74 65 72 61 74 6f 72 20 69 6e 73 74  ed iterator inst
26480 61 6e 63 65 20 61 6e 64 20 74 68 65 6e 20 73 65  ance and then se
26490 74 73 20 69 74 0d 0a 20 20 20 20 20 20 20 20 2f  ts it..        /
264a0 2f 2f 20 74 6f 20 61 20 6e 65 77 20 76 61 6c 75  // to a new valu
264b0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
264c0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
264d0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
264e0 61 6d 65 3d 22 69 74 65 72 61 74 6f 72 22 3e 0d  ame="iterator">.
264f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
26500 20 6e 65 77 20 6d 61 6e 61 67 65 64 20 69 74 65   new managed ite
26510 72 61 74 6f 72 20 69 6e 73 74 61 6e 63 65 20 74  rator instance t
26520 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20  o use...        
26530 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
26540 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20        protected 
26550 76 6f 69 64 20 52 65 73 65 74 49 74 65 72 61 74  void ResetIterat
26560 6f 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  or(..           
26570 20 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65 74   SQLiteChangeSet
26580 49 74 65 72 61 74 6f 72 20 69 74 65 72 61 74 6f  Iterator iterato
26590 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  r..            )
265a0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
265b0 20 20 20 20 20 20 20 20 20 43 6c 6f 73 65 49 74           CloseIt
265c0 65 72 61 74 6f 72 28 29 3b 0d 0a 20 20 20 20 20  erator();..     
265d0 20 20 20 20 20 20 20 53 65 74 49 74 65 72 61 74         SetIterat
265e0 6f 72 28 69 74 65 72 61 74 6f 72 29 3b 0d 0a 20  or(iterator);.. 
265f0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
26600 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
26610 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
26620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
26660 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
26670 6f 6e 20 49 45 6e 75 6d 65 72 61 74 6f 72 3c 49  on IEnumerator<I
26680 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65 74 4d  SQLiteChangeSetM
26690 65 74 61 64 61 74 61 49 74 65 6d 3e 20 4d 65 6d  etadataItem> Mem
266a0 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  bers..        //
266b0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
266c0 20 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73       /// Returns
266d0 20 74 68 65 20 63 75 72 72 65 6e 74 20 63 68 61   the current cha
266e0 6e 67 65 20 77 69 74 68 69 6e 20 74 68 65 20 73  nge within the s
266f0 65 74 20 6f 66 20 63 68 61 6e 67 65 73 2c 20 72  et of changes, r
26700 65 70 72 65 73 65 6e 74 65 64 0d 0a 20 20 20 20  epresented..    
26710 20 20 20 20 2f 2f 2f 20 62 79 20 61 20 3c 73 65      /// by a <se
26720 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 43  e cref="ISQLiteC
26730 68 61 6e 67 65 53 65 74 4d 65 74 61 64 61 74 61  hangeSetMetadata
26740 49 74 65 6d 22 20 2f 3e 20 69 6e 73 74 61 6e 63  Item" /> instanc
26750 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
26760 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
26770 20 20 20 20 70 75 62 6c 69 63 20 49 53 51 4c 69      public ISQLi
26780 74 65 43 68 61 6e 67 65 53 65 74 4d 65 74 61 64  teChangeSetMetad
26790 61 74 61 49 74 65 6d 20 43 75 72 72 65 6e 74 0d  ataItem Current.
267a0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
267b0 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20          get..   
267c0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
267d0 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63              Chec
267e0 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a  kDisposed();....
267f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26800 72 65 74 75 72 6e 20 6e 65 77 20 53 51 4c 69 74  return new SQLit
26810 65 43 68 61 6e 67 65 53 65 74 4d 65 74 61 64 61  eChangeSetMetada
26820 74 61 49 74 65 6d 28 69 74 65 72 61 74 6f 72 29  taItem(iterator)
26830 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
26840 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
26850 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
26860 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
26870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
268a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
268b0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
268c0 65 67 69 6f 6e 20 49 45 6e 75 6d 65 72 61 74 6f  egion IEnumerato
268d0 72 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20  r Members..     
268e0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
268f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65  ..        /// Re
26900 74 75 72 6e 73 20 74 68 65 20 63 75 72 72 65 6e  turns the curren
26910 74 20 63 68 61 6e 67 65 20 77 69 74 68 69 6e 20  t change within 
26920 74 68 65 20 73 65 74 20 6f 66 20 63 68 61 6e 67  the set of chang
26930 65 73 2c 20 72 65 70 72 65 73 65 6e 74 65 64 0d  es, represented.
26940 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 79 20  .        /// by 
26950 61 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  a <see cref="ISQ
26960 4c 69 74 65 43 68 61 6e 67 65 53 65 74 4d 65 74  LiteChangeSetMet
26970 61 64 61 74 61 49 74 65 6d 22 20 2f 3e 20 69 6e  adataItem" /> in
26980 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20  stance...       
26990 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
269a0 0a 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20  .        object 
269b0 43 6f 6c 6c 65 63 74 69 6f 6e 73 2e 49 45 6e 75  Collections.IEnu
269c0 6d 65 72 61 74 6f 72 2e 43 75 72 72 65 6e 74 0d  merator.Current.
269d0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
269e0 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20          get..   
269f0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
26a00 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63              Chec
26a10 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a  kDisposed();....
26a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26a30 72 65 74 75 72 6e 20 43 75 72 72 65 6e 74 3b 0d  return Current;.
26a40 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
26a50 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
26a60 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
26a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
26ab0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
26ac0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
26ad0 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20 61  // Attempts to a
26ae0 64 76 61 6e 63 65 20 74 6f 20 74 68 65 20 6e 65  dvance to the ne
26af0 78 74 20 69 74 65 6d 20 69 6e 20 74 68 65 20 73  xt item in the s
26b00 65 74 20 6f 66 20 63 68 61 6e 67 65 73 2e 0d 0a  et of changes...
26b10 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
26b20 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
26b30 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
26b40 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a         /// Non-z
26b50 65 72 6f 20 69 66 20 6d 6f 72 65 20 69 74 65 6d  ero if more item
26b60 73 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65 3b  s are available;
26b70 20 6f 74 68 65 72 77 69 73 65 2c 20 7a 65 72 6f   otherwise, zero
26b80 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
26b90 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
26ba0 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4d     public bool M
26bb0 6f 76 65 4e 65 78 74 28 29 0d 0a 20 20 20 20 20  oveNext()..     
26bc0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
26bd0 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28    CheckDisposed(
26be0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
26bf0 43 68 65 63 6b 49 74 65 72 61 74 6f 72 28 29 3b  CheckIterator();
26c00 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
26c10 72 65 74 75 72 6e 20 69 74 65 72 61 74 6f 72 2e  return iterator.
26c20 4e 65 78 74 28 29 3b 0d 0a 20 20 20 20 20 20 20  Next();..       
26c30 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
26c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c80 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
26c90 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
26ca0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 72 6f          /// Thro
26cb0 77 73 20 3c 73 65 65 20 63 72 65 66 3d 22 4e 6f  ws <see cref="No
26cc0 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78 63 65  tImplementedExce
26cd0 70 74 69 6f 6e 22 20 2f 3e 20 62 65 63 61 75 73  ption" /> becaus
26ce0 65 20 6e 6f 74 20 61 6c 6c 20 74 68 65 0d 0a 20  e not all the.. 
26cf0 20 20 20 20 20 20 20 2f 2f 2f 20 64 65 72 69 76         /// deriv
26d00 65 64 20 63 6c 61 73 73 65 73 20 61 72 65 20 61  ed classes are a
26d10 62 6c 65 20 74 6f 20 73 75 70 70 6f 72 74 20 72  ble to support r
26d20 65 73 65 74 20 66 75 6e 63 74 69 6f 6e 61 6c 69  eset functionali
26d30 74 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ty...        ///
26d40 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
26d50 20 20 20 20 20 70 75 62 6c 69 63 20 76 69 72 74       public virt
26d60 75 61 6c 20 76 6f 69 64 20 52 65 73 65 74 28 29  ual void Reset()
26d70 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
26d80 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69           CheckDi
26d90 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20  sposed();....   
26da0 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e           throw n
26db0 65 77 20 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65  ew NotImplemente
26dc0 64 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 20  dException();.. 
26dd0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
26de0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
26df0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
26e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
26e40 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
26e50 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20 4d  on IDisposable M
26e60 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20  embers..        
26e70 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
26e80 20 20 20 20 20 20 20 2f 2f 2f 20 44 69 73 70 6f         /// Dispo
26e90 73 65 73 20 6f 66 20 74 68 69 73 20 6f 62 6a 65  ses of this obje
26ea0 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  ct instance...  
26eb0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
26ec0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
26ed0 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f 73  blic void Dispos
26ee0 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  e()..        {..
26ef0 20 20 20 20 20 20 20 20 20 20 20 20 44 69 73 70              Disp
26f00 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20 20  ose(true);..    
26f10 20 20 20 20 20 20 20 20 47 43 2e 53 75 70 70 72          GC.Suppr
26f20 65 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73  essFinalize(this
26f30 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
26f40 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
26f50 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
26f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26fa0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
26fb0 23 72 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61  #region IDisposa
26fc0 62 6c 65 20 22 50 61 74 74 65 72 6e 22 20 4d 65  ble "Pattern" Me
26fd0 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 2f  mbers..        /
26fe0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
26ff0 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
27000 72 6f 20 69 66 20 74 68 69 73 20 6f 62 6a 65 63  ro if this objec
27010 74 20 69 6e 73 74 61 6e 63 65 20 68 61 73 20 62  t instance has b
27020 65 65 6e 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20  een disposed... 
27030 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
27040 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
27050 72 69 76 61 74 65 20 62 6f 6f 6c 20 64 69 73 70  rivate bool disp
27060 6f 73 65 64 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  osed;....       
27070 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
27080 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 72 6f          /// Thro
27090 77 73 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 20  ws an exception 
270a0 69 66 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69  if this object i
270b0 6e 73 74 61 6e 63 65 20 68 61 73 20 62 65 65 6e  nstance has been
270c0 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20   disposed...    
270d0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
270e0 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
270f0 61 74 65 20 76 6f 69 64 20 43 68 65 63 6b 44 69  ate void CheckDi
27100 73 70 6f 73 65 64 28 29 20 2f 2a 20 74 68 72 6f  sposed() /* thro
27110 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7b 0d  w */..        {.
27120 0a 23 69 66 20 54 48 52 4f 57 5f 4f 4e 5f 44 49  .#if THROW_ON_DI
27130 53 50 4f 53 45 44 0d 0a 20 20 20 20 20 20 20 20  SPOSED..        
27140 20 20 20 20 69 66 20 28 64 69 73 70 6f 73 65 64      if (disposed
27150 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
27160 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27170 20 20 74 68 72 6f 77 20 6e 65 77 20 4f 62 6a 65    throw new Obje
27180 63 74 44 69 73 70 6f 73 65 64 45 78 63 65 70 74  ctDisposedExcept
27190 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ion(..          
271a0 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66            typeof
271b0 28 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65 74  (SQLiteChangeSet
271c0 45 6e 75 6d 65 72 61 74 6f 72 29 2e 4e 61 6d 65  Enumerator).Name
271d0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
271e0 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  }..#endif..     
271f0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
27200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27240 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
27250 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
27260 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 69  ..        /// Di
27270 73 70 6f 73 65 73 20 6f 72 20 66 69 6e 61 6c 69  sposes or finali
27280 7a 65 73 20 74 68 69 73 20 6f 62 6a 65 63 74 20  zes this object 
27290 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
272a0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
272b0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
272c0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 69 73 70  param name="disp
272d0 6f 73 69 6e 67 22 3e 0d 0a 20 20 20 20 20 20 20  osing">..       
272e0 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
272f0 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69 73 20   this object is 
27300 62 65 69 6e 67 20 64 69 73 70 6f 73 65 64 3b 20  being disposed; 
27310 6f 74 68 65 72 77 69 73 65 2c 20 74 68 69 73 20  otherwise, this 
27320 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20  object..        
27330 2f 2f 2f 20 69 73 20 62 65 69 6e 67 20 66 69 6e  /// is being fin
27340 61 6c 69 7a 65 64 2e 0d 0a 20 20 20 20 20 20 20  alized...       
27350 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
27360 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64         protected
27370 20 76 69 72 74 75 61 6c 20 76 6f 69 64 20 44 69   virtual void Di
27380 73 70 6f 73 65 28 62 6f 6f 6c 20 64 69 73 70 6f  spose(bool dispo
27390 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 7b  sing)..        {
273a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72  ..            tr
273b0 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
273c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
273d0 20 20 69 66 20 28 21 64 69 73 70 6f 73 65 64 29    if (!disposed)
273e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
273f0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
27400 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69 73           if (dis
27410 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20  posing)..       
27420 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
27430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27440 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
27450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
27470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27480 20 20 20 20 20 20 2f 2f 20 64 69 73 70 6f 73 65        // dispose
27490 20 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63   managed resourc
274a0 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20  es here.....    
274b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
274c0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
274d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
274e0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
274f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27500 20 20 20 20 43 6c 6f 73 65 49 74 65 72 61 74 6f      CloseIterato
27510 72 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  r();..          
27520 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
27530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27540 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
27550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27560 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
27570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
27580 2f 20 72 65 6c 65 61 73 65 20 75 6e 6d 61 6e 61  / release unmana
27590 67 65 64 20 72 65 73 6f 75 72 63 65 73 20 68 65  ged resources he
275a0 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20  re.....         
275b0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
275c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
275d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
275e0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
275f0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
27600 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
27610 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20   finally..      
27620 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
27630 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
27640 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
27650 4e 4f 54 45 3a 20 45 76 65 72 79 74 68 69 6e 67  NOTE: Everything
27660 20 73 68 6f 75 6c 64 20 62 65 20 66 75 6c 6c 79   should be fully
27670 20 64 69 73 70 6f 73 65 64 20 61 74 20 74 68 69   disposed at thi
27680 73 20 70 6f 69 6e 74 2e 0d 0a 20 20 20 20 20 20  s point...      
27690 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
276a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69                di
276b0 73 70 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a  sposed = true;..
276c0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
276d0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
276e0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
276f0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
27700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
27740 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
27750 6f 6e 20 44 65 73 74 72 75 63 74 6f 72 0d 0a 20  on Destructor.. 
27760 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
27770 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
27780 2f 20 46 69 6e 61 6c 69 7a 65 73 20 74 68 69 73  / Finalizes this
27790 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
277a0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
277b0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
277c0 20 20 20 7e 53 51 4c 69 74 65 43 68 61 6e 67 65     ~SQLiteChange
277d0 53 65 74 45 6e 75 6d 65 72 61 74 6f 72 28 29 0d  SetEnumerator().
277e0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
277f0 20 20 20 20 20 20 20 20 44 69 73 70 6f 73 65 28          Dispose(
27800 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20 20  false);..       
27810 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
27820 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20  region..    }.. 
27830 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
27840 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
27850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27890 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
278a0 53 51 4c 69 74 65 4d 65 6d 6f 72 79 43 68 61 6e  SQLiteMemoryChan
278b0 67 65 53 65 74 45 6e 75 6d 65 72 61 74 6f 72 20  geSetEnumerator 
278c0 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c  Class..    /// <
278d0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
278e0 2f 20 54 68 69 73 20 63 6c 61 73 73 20 72 65 70  / This class rep
278f0 72 65 73 65 6e 74 73 20 61 6e 20 3c 73 65 65 20  resents an <see 
27900 63 72 65 66 3d 22 49 45 6e 75 6d 65 72 61 74 6f  cref="IEnumerato
27910 72 22 20 2f 3e 20 74 68 61 74 20 69 73 20 63 61  r" /> that is ca
27920 70 61 62 6c 65 20 6f 66 0d 0a 20 20 20 20 2f 2f  pable of..    //
27930 2f 20 65 6e 75 6d 65 72 61 74 69 6e 67 20 6f 76  / enumerating ov
27940 65 72 20 61 20 73 65 74 20 6f 66 20 63 68 61 6e  er a set of chan
27950 67 65 73 20 63 6f 6e 74 61 69 6e 65 64 20 65 6e  ges contained en
27960 74 69 72 65 6c 79 20 69 6e 20 6d 65 6d 6f 72 79  tirely in memory
27970 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
27980 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72  mary>..    inter
27990 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73  nal sealed class
279a0 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 43 68 61   SQLiteMemoryCha
279b0 6e 67 65 53 65 74 45 6e 75 6d 65 72 61 74 6f 72  ngeSetEnumerator
279c0 20 3a 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69   :..        SQLi
279d0 74 65 43 68 61 6e 67 65 53 65 74 45 6e 75 6d 65  teChangeSetEnume
279e0 72 61 74 6f 72 0d 0a 20 20 20 20 7b 0d 0a 20 20  rator..    {..  
279f0 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
27a00 69 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20  ivate Data..    
27a10 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
27a20 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
27a30 68 65 20 72 61 77 20 62 79 74 65 20 64 61 74 61  he raw byte data
27a40 20 66 6f 72 20 74 68 69 73 20 73 65 74 20 6f 66   for this set of
27a50 20 63 68 61 6e 67 65 73 2e 20 20 53 69 6e 63 65   changes.  Since
27a60 20 74 68 69 73 20 64 61 74 61 20 6d 75 73 74 0d   this data must.
27a70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 65 20  .        /// be 
27a80 6d 61 72 73 68 61 6c 6c 65 64 20 74 6f 20 61 20  marshalled to a 
27a90 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79 20 62 75  native memory bu
27aa0 66 66 65 72 20 62 65 66 6f 72 65 20 62 65 69 6e  ffer before bein
27ab0 67 20 75 73 65 64 2c 20 74 68 65 72 65 0d 0a 20  g used, there.. 
27ac0 20 20 20 20 20 20 20 2f 2f 2f 20 6d 75 73 74 20         /// must 
27ad0 62 65 20 65 6e 6f 75 67 68 20 6d 65 6d 6f 72 79  be enough memory
27ae0 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 73 74   available to st
27af0 6f 72 65 20 61 74 20 6c 65 61 73 74 20 74 77 6f  ore at least two
27b00 20 74 69 6d 65 73 20 74 68 65 0d 0a 20 20 20 20   times the..    
27b10 20 20 20 20 2f 2f 2f 20 61 6d 6f 75 6e 74 20 6f      /// amount o
27b20 66 20 64 61 74 61 20 63 6f 6e 74 61 69 6e 65 64  f data contained
27b30 20 77 69 74 68 69 6e 20 69 74 2e 0d 0a 20 20 20   within it...   
27b40 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
27b50 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
27b60 76 61 74 65 20 62 79 74 65 5b 5d 20 72 61 77 44  vate byte[] rawD
27b70 61 74 61 3b 0d 0a 20 20 20 20 20 20 20 20 23 65  ata;..        #e
27b80 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
27b90 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
27ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
27be0 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
27bf0 75 62 6c 69 63 20 43 6f 6e 73 74 72 75 63 74 6f  ublic Constructo
27c00 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  rs..        /// 
27c10 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
27c20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74     /// Construct
27c30 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66  s an instance of
27c40 20 74 68 69 73 20 63 6c 61 73 73 20 75 73 69 6e   this class usin
27c50 67 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  g the specified 
27c60 72 61 77 20 62 79 74 65 0d 0a 20 20 20 20 20 20  raw byte..      
27c70 20 20 2f 2f 2f 20 64 61 74 61 2e 0d 0a 20 20 20    /// data...   
27c80 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
27c90 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
27ca0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 72 61   <param name="ra
27cb0 77 44 61 74 61 22 3e 0d 0a 20 20 20 20 20 20 20  wData">..       
27cc0 20 2f 2f 2f 20 54 68 65 20 72 61 77 20 62 79 74   /// The raw byt
27cd0 65 20 64 61 74 61 20 63 6f 6e 74 61 69 6e 69 6e  e data containin
27ce0 67 20 74 68 65 20 73 65 74 20 6f 66 20 63 68 61  g the set of cha
27cf0 6e 67 65 73 20 66 6f 72 20 74 68 69 73 0d 0a 20  nges for this.. 
27d00 20 20 20 20 20 20 20 2f 2f 2f 20 65 6e 75 6d 65         /// enume
27d10 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20  rator...        
27d20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
27d30 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
27d40 69 74 65 4d 65 6d 6f 72 79 43 68 61 6e 67 65 53  iteMemoryChangeS
27d50 65 74 45 6e 75 6d 65 72 61 74 6f 72 28 0d 0a 20  etEnumerator(.. 
27d60 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65 5b             byte[
27d70 5d 20 72 61 77 44 61 74 61 0d 0a 20 20 20 20 20  ] rawData..     
27d80 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
27d90 20 20 20 20 20 20 3a 20 62 61 73 65 28 53 51 4c        : base(SQL
27da0 69 74 65 4d 65 6d 6f 72 79 43 68 61 6e 67 65 53  iteMemoryChangeS
27db0 65 74 49 74 65 72 61 74 6f 72 2e 43 72 65 61 74  etIterator.Creat
27dc0 65 28 72 61 77 44 61 74 61 29 29 0d 0a 20 20 20  e(rawData))..   
27dd0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
27de0 20 20 20 20 74 68 69 73 2e 72 61 77 44 61 74 61      this.rawData
27df0 20 3d 20 72 61 77 44 61 74 61 3b 0d 0a 20 20 20   = rawData;..   
27e00 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
27e10 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
27e20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
27e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
27e70 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
27e80 20 49 45 6e 75 6d 65 72 61 74 6f 72 20 4f 76 65   IEnumerator Ove
27e90 72 72 69 64 65 73 0d 0a 20 20 20 20 20 20 20 20  rrides..        
27ea0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
27eb0 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 73 65 74         /// Reset
27ec0 73 20 74 68 65 20 65 6e 75 6d 65 72 61 74 6f 72  s the enumerator
27ed0 20 74 6f 20 69 74 73 20 69 6e 69 74 69 61 6c 20   to its initial 
27ee0 70 6f 73 69 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  position...     
27ef0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
27f00 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
27f10 63 20 6f 76 65 72 72 69 64 65 20 76 6f 69 64 20  c override void 
27f20 52 65 73 65 74 28 29 0d 0a 20 20 20 20 20 20 20  Reset()..       
27f30 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
27f40 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
27f50 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
27f60 52 65 73 65 74 49 74 65 72 61 74 6f 72 28 53 51  ResetIterator(SQ
27f70 4c 69 74 65 4d 65 6d 6f 72 79 43 68 61 6e 67 65  LiteMemoryChange
27f80 53 65 74 49 74 65 72 61 74 6f 72 2e 43 72 65 61  SetIterator.Crea
27f90 74 65 28 72 61 77 44 61 74 61 29 29 3b 0d 0a 20  te(rawData));.. 
27fa0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
27fb0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
27fc0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
27fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
28010 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
28020 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20 22  on IDisposable "
28030 50 61 74 74 65 72 6e 22 20 4d 65 6d 62 65 72 73  Pattern" Members
28040 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
28050 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
28060 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
28070 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73   this object ins
28080 74 61 6e 63 65 20 68 61 73 20 62 65 65 6e 20 64  tance has been d
28090 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20  isposed...      
280a0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
280b0 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
280c0 65 20 62 6f 6f 6c 20 64 69 73 70 6f 73 65 64 3b  e bool disposed;
280d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
280e0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
280f0 20 20 20 2f 2f 2f 20 54 68 72 6f 77 73 20 61 6e     /// Throws an
28100 20 65 78 63 65 70 74 69 6f 6e 20 69 66 20 74 68   exception if th
28110 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  is object instan
28120 63 65 20 68 61 73 20 62 65 65 6e 20 64 69 73 70  ce has been disp
28130 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  osed...        /
28140 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
28150 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 76         private v
28160 6f 69 64 20 43 68 65 63 6b 44 69 73 70 6f 73 65  oid CheckDispose
28170 64 28 29 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  d() /* throw */.
28180 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
28190 54 48 52 4f 57 5f 4f 4e 5f 44 49 53 50 4f 53 45  THROW_ON_DISPOSE
281a0 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  D..            i
281b0 66 20 28 64 69 73 70 6f 73 65 64 29 0d 0a 20 20  f (disposed)..  
281c0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
281d0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72               thr
281e0 6f 77 20 6e 65 77 20 4f 62 6a 65 63 74 44 69 73  ow new ObjectDis
281f0 70 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 28 0d  posedException(.
28200 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28210 20 20 20 20 20 74 79 70 65 6f 66 28 53 51 4c 69       typeof(SQLi
28220 74 65 4d 65 6d 6f 72 79 43 68 61 6e 67 65 53 65  teMemoryChangeSe
28230 74 45 6e 75 6d 65 72 61 74 6f 72 29 2e 4e 61 6d  tEnumerator).Nam
28240 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
28250 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
28260 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
28270 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
28280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
282a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
282b0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
282c0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
282d0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 44  >..        /// D
282e0 69 73 70 6f 73 65 73 20 6f 72 20 66 69 6e 61 6c  isposes or final
282f0 69 7a 65 73 20 74 68 69 73 20 6f 62 6a 65 63 74  izes this object
28300 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20   instance...    
28310 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
28320 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
28330 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 69 73  <param name="dis
28340 70 6f 73 69 6e 67 22 3e 0d 0a 20 20 20 20 20 20  posing">..      
28350 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
28360 66 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69 73  f this object is
28370 20 62 65 69 6e 67 20 64 69 73 70 6f 73 65 64 3b   being disposed;
28380 20 6f 74 68 65 72 77 69 73 65 2c 20 74 68 69 73   otherwise, this
28390 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20   object..       
283a0 20 2f 2f 2f 20 69 73 20 62 65 69 6e 67 20 66 69   /// is being fi
283b0 6e 61 6c 69 7a 65 64 2e 0d 0a 20 20 20 20 20 20  nalized...      
283c0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
283d0 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65          protecte
283e0 64 20 6f 76 65 72 72 69 64 65 20 76 6f 69 64 20  d override void 
283f0 44 69 73 70 6f 73 65 28 62 6f 6f 6c 20 64 69 73  Dispose(bool dis
28400 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20  posing)..       
28410 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
28420 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
28430 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
28440 20 20 20 20 69 66 20 28 21 64 69 73 70 6f 73 65      if (!dispose
28450 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d)..            
28460 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
28470 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64             if (d
28480 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20  isposing)..     
28490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
284a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
284b0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
284c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
284d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
284e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
284f0 20 20 20 20 20 20 20 20 2f 2f 20 64 69 73 70 6f          // dispo
28500 73 65 20 6d 61 6e 61 67 65 64 20 72 65 73 6f 75  se managed resou
28510 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20  rces here.....  
28520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28530 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
28540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
28560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28570 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
28580 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
28590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
285a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
285b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
285c0 20 20 20 20 20 2f 2f 20 72 65 6c 65 61 73 65 20       // release 
285d0 75 6e 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72  unmanaged resour
285e0 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20  ces here.....   
285f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28600 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
28610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28620 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20  ///////..       
28630 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
28640 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
28650 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a         finally..
28660 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
28670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
28680 61 73 65 2e 44 69 73 70 6f 73 65 28 64 69 73 70  ase.Dispose(disp
28690 6f 73 69 6e 67 29 3b 0d 0a 0d 0a 20 20 20 20 20  osing);....     
286a0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
286b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
286c0 2f 20 4e 4f 54 45 3a 20 45 76 65 72 79 74 68 69  / NOTE: Everythi
286d0 6e 67 20 73 68 6f 75 6c 64 20 62 65 20 66 75 6c  ng should be ful
286e0 6c 79 20 64 69 73 70 6f 73 65 64 20 61 74 20 74  ly disposed at t
286f0 68 69 73 20 70 6f 69 6e 74 2e 0d 0a 20 20 20 20  his point...    
28700 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
28710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28720 64 69 73 70 6f 73 65 64 20 3d 20 74 72 75 65 3b  disposed = true;
28730 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
28740 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
28750 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
28760 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
28770 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
28780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
287a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
287b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
287c0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
287d0 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 53 74  #region SQLiteSt
287e0 72 65 61 6d 43 68 61 6e 67 65 53 65 74 45 6e 75  reamChangeSetEnu
287f0 6d 65 72 61 74 6f 72 20 43 6c 61 73 73 0d 0a 20  merator Class.. 
28800 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
28810 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63  ..    /// This c
28820 6c 61 73 73 20 72 65 70 72 65 73 65 6e 74 73 20  lass represents 
28830 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 49 45  an <see cref="IE
28840 6e 75 6d 65 72 61 74 6f 72 22 20 2f 3e 20 74 68  numerator" /> th
28850 61 74 20 69 73 20 63 61 70 61 62 6c 65 20 6f 66  at is capable of
28860 0d 0a 20 20 20 20 2f 2f 2f 20 65 6e 75 6d 65 72  ..    /// enumer
28870 61 74 69 6e 67 20 6f 76 65 72 20 61 20 73 65 74  ating over a set
28880 20 6f 66 20 63 68 61 6e 67 65 73 20 62 61 63 6b   of changes back
28890 65 64 20 62 79 20 61 20 3c 73 65 65 20 63 72 65  ed by a <see cre
288a0 66 3d 22 53 74 72 65 61 6d 22 20 2f 3e 0d 0a 20  f="Stream" />.. 
288b0 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 2e     /// instance.
288c0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
288d0 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ary>..    intern
288e0 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20  al sealed class 
288f0 53 51 4c 69 74 65 53 74 72 65 61 6d 43 68 61 6e  SQLiteStreamChan
28900 67 65 53 65 74 45 6e 75 6d 65 72 61 74 6f 72 20  geSetEnumerator 
28910 3a 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  :..        SQLit
28920 65 43 68 61 6e 67 65 53 65 74 45 6e 75 6d 65 72  eChangeSetEnumer
28930 61 74 6f 72 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  ator..    {..   
28940 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
28950 6c 69 63 20 43 6f 6e 73 74 72 75 63 74 6f 72 73  lic Constructors
28960 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
28970 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
28980 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20   /// Constructs 
28990 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74  an instance of t
289a0 68 69 73 20 63 6c 61 73 73 20 75 73 69 6e 67 20  his class using 
289b0 74 68 65 20 73 70 65 63 69 66 69 65 64 20 73 74  the specified st
289c0 72 65 61 6d 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ream...        /
289d0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
289e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
289f0 6d 20 6e 61 6d 65 3d 22 73 74 72 65 61 6d 22 3e  m name="stream">
28a00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
28a10 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 74 72  e <see cref="Str
28a20 65 61 6d 22 20 2f 3e 20 77 68 65 72 65 20 74 68  eam" /> where th
28a30 65 20 72 61 77 20 62 79 74 65 20 64 61 74 61 20  e raw byte data 
28a40 66 6f 72 20 74 68 65 20 73 65 74 20 6f 66 0d 0a  for the set of..
28a50 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 68 61 6e          /// chan
28a60 67 65 73 20 6d 61 79 20 62 65 20 72 65 61 64 2e  ges may be read.
28a70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
28a80 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
28a90 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
28aa0 22 66 6c 61 67 73 22 3e 0d 0a 20 20 20 20 20 20  "flags">..      
28ab0 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73 20    /// The flags 
28ac0 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
28ad0 74 68 65 20 70 61 72 65 6e 74 20 63 6f 6e 6e 65  the parent conne
28ae0 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ction...        
28af0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
28b00 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
28b10 69 74 65 53 74 72 65 61 6d 43 68 61 6e 67 65 53  iteStreamChangeS
28b20 65 74 45 6e 75 6d 65 72 61 74 6f 72 28 0d 0a 20  etEnumerator(.. 
28b30 20 20 20 20 20 20 20 20 20 20 20 53 74 72 65 61             Strea
28b40 6d 20 73 74 72 65 61 6d 2c 0d 0a 20 20 20 20 20  m stream,..     
28b50 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e         SQLiteCon
28b60 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61  nectionFlags fla
28b70 67 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  gs..            
28b80 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a  )..            :
28b90 20 62 61 73 65 28 53 51 4c 69 74 65 53 74 72 65   base(SQLiteStre
28ba0 61 6d 43 68 61 6e 67 65 53 65 74 49 74 65 72 61  amChangeSetItera
28bb0 74 6f 72 2e 43 72 65 61 74 65 28 73 74 72 65 61  tor.Create(strea
28bc0 6d 2c 20 66 6c 61 67 73 29 29 0d 0a 20 20 20 20  m, flags))..    
28bd0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
28be0 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
28bf0 2e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ...        }..  
28c00 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
28c10 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
28c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28c60 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
28c70 72 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62  region IDisposab
28c80 6c 65 20 22 50 61 74 74 65 72 6e 22 20 4d 65 6d  le "Pattern" Mem
28c90 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  bers..        //
28ca0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
28cb0 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
28cc0 6f 20 69 66 20 74 68 69 73 20 6f 62 6a 65 63 74  o if this object
28cd0 20 69 6e 73 74 61 6e 63 65 20 68 61 73 20 62 65   instance has be
28ce0 65 6e 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20  en disposed...  
28cf0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
28d00 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  ary>..        pr
28d10 69 76 61 74 65 20 62 6f 6f 6c 20 64 69 73 70 6f  ivate bool dispo
28d20 73 65 64 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  sed;....        
28d30 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
28d40 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 72 6f 77         /// Throw
28d50 73 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 20 69  s an exception i
28d60 66 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e  f this object in
28d70 73 74 61 6e 63 65 20 68 61 73 20 62 65 65 6e 20  stance has been 
28d80 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20 20  disposed...     
28d90 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
28da0 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
28db0 74 65 20 76 6f 69 64 20 43 68 65 63 6b 44 69 73  te void CheckDis
28dc0 70 6f 73 65 64 28 29 20 2f 2a 20 74 68 72 6f 77  posed() /* throw
28dd0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a   */..        {..
28de0 23 69 66 20 54 48 52 4f 57 5f 4f 4e 5f 44 49 53  #if THROW_ON_DIS
28df0 50 4f 53 45 44 0d 0a 20 20 20 20 20 20 20 20 20  POSED..         
28e00 20 20 20 69 66 20 28 64 69 73 70 6f 73 65 64 29     if (disposed)
28e10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
28e20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28e30 20 74 68 72 6f 77 20 6e 65 77 20 4f 62 6a 65 63   throw new Objec
28e40 74 44 69 73 70 6f 73 65 64 45 78 63 65 70 74 69  tDisposedExcepti
28e50 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
28e60 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66 28           typeof(
28e70 53 51 4c 69 74 65 53 74 72 65 61 6d 43 68 61 6e  SQLiteStreamChan
28e80 67 65 53 65 74 45 6e 75 6d 65 72 61 74 6f 72 29  geSetEnumerator)
28e90 2e 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20  .Name);..       
28ea0 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
28eb0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
28ec0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
28ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
28f10 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
28f20 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
28f30 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 72 20 66  // Disposes or f
28f40 69 6e 61 6c 69 7a 65 73 20 74 68 69 73 20 6f 62  inalizes this ob
28f50 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a  ject instance...
28f60 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
28f70 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
28f80 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
28f90 22 64 69 73 70 6f 73 69 6e 67 22 3e 0d 0a 20 20  "disposing">..  
28fa0 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
28fb0 72 6f 20 69 66 20 74 68 69 73 20 6f 62 6a 65 63  ro if this objec
28fc0 74 20 69 73 20 62 65 69 6e 67 20 64 69 73 70 6f  t is being dispo
28fd0 73 65 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 20  sed; otherwise, 
28fe0 74 68 69 73 20 6f 62 6a 65 63 74 0d 0a 20 20 20  this object..   
28ff0 20 20 20 20 20 2f 2f 2f 20 69 73 20 62 65 69 6e       /// is bein
29000 67 20 66 69 6e 61 6c 69 7a 65 64 2e 0d 0a 20 20  g finalized...  
29010 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
29020 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74  m>..        prot
29030 65 63 74 65 64 20 6f 76 65 72 72 69 64 65 20 76  ected override v
29040 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f 6f 6c  oid Dispose(bool
29050 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20   disposing)..   
29060 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
29070 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
29080 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
29090 20 20 20 20 20 20 20 20 2f 2f 69 66 20 28 21 64          //if (!d
290a0 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20 20  isposed)..      
290b0 20 20 20 20 20 20 20 20 20 20 2f 2f 7b 0d 0a 20            //{.. 
290c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
290d0 2f 20 20 20 20 69 66 20 28 64 69 73 70 6f 73 69  /    if (disposi
290e0 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng)..           
290f0 20 20 20 20 20 2f 2f 20 20 20 20 7b 0d 0a 20 20       //    {..  
29100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
29110 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
29120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
29140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
29150 20 20 20 20 20 20 20 20 2f 2f 20 64 69 73 70 6f          // dispo
29160 73 65 20 6d 61 6e 61 67 65 64 20 72 65 73 6f 75  se managed resou
29170 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20  rces here.....  
29180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
29190 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
291a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
291b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
291c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
291d0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
291e0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 2f           //    /
291f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29210 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20  /////..         
29220 20 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 20         //    // 
29230 72 65 6c 65 61 73 65 20 75 6e 6d 61 6e 61 67 65  release unmanage
29240 64 20 72 65 73 6f 75 72 63 65 73 20 68 65 72 65  d resources here
29250 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  .....           
29260 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f       //    /////
29270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29290 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
292a0 20 20 20 2f 2f 7d 0d 0a 20 20 20 20 20 20 20 20     //}..        
292b0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
292c0 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20     finally..    
292d0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
292e0 20 20 20 20 20 20 20 20 20 20 20 62 61 73 65 2e             base.
292f0 44 69 73 70 6f 73 65 28 64 69 73 70 6f 73 69 6e  Dispose(disposin
29300 67 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  g);....         
29310 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
29320 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
29330 54 45 3a 20 45 76 65 72 79 74 68 69 6e 67 20 73  TE: Everything s
29340 68 6f 75 6c 64 20 62 65 20 66 75 6c 6c 79 20 64  hould be fully d
29350 69 73 70 6f 73 65 64 20 61 74 20 74 68 69 73 20  isposed at this 
29360 70 6f 69 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20  point...        
29370 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
29380 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73 70              disp
29390 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20  osed = true;..  
293a0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
293b0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
293c0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20  #endregion..    
293d0 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  }..    #endregio
293e0 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
293f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29430 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
29440 69 6f 6e 20 53 51 4c 69 74 65 43 68 61 6e 67 65  ion SQLiteChange
29450 53 65 74 4d 65 74 61 64 61 74 61 49 74 65 6d 20  SetMetadataItem 
29460 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c  Class..    /// <
29470 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
29480 2f 20 54 68 69 73 20 69 6e 74 65 72 66 61 63 65  / This interface
29490 20 69 6d 70 6c 65 6d 65 6e 74 73 20 70 72 6f 70   implements prop
294a0 65 72 74 69 65 73 20 61 6e 64 20 6d 65 74 68 6f  erties and metho
294b0 64 73 20 75 73 65 64 20 74 6f 20 66 65 74 63 68  ds used to fetch
294c0 20 6d 65 74 61 64 61 74 61 0d 0a 20 20 20 20 2f   metadata..    /
294d0 2f 2f 20 61 62 6f 75 74 20 6f 6e 65 20 63 68 61  // about one cha
294e0 6e 67 65 20 77 69 74 68 69 6e 20 61 20 73 65 74  nge within a set
294f0 20 6f 66 20 63 68 61 6e 67 65 73 20 66 6f 72 20   of changes for 
29500 61 20 64 61 74 61 62 61 73 65 2e 0d 0a 20 20 20  a database...   
29510 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
29520 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65  .    internal se
29530 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74  aled class SQLit
29540 65 43 68 61 6e 67 65 53 65 74 4d 65 74 61 64 61  eChangeSetMetada
29550 74 61 49 74 65 6d 20 3a 0d 0a 20 20 20 20 20 20  taItem :..      
29560 20 20 49 53 51 4c 69 74 65 43 68 61 6e 67 65 53    ISQLiteChangeS
29570 65 74 4d 65 74 61 64 61 74 61 49 74 65 6d 0d 0a  etMetadataItem..
29580 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23      {..        #
29590 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44  region Private D
295a0 61 74 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ata..        ///
295b0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
295c0 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
295d0 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 68 61   cref="SQLiteCha
295e0 6e 67 65 53 65 74 49 74 65 72 61 74 6f 72 22 20  ngeSetIterator" 
295f0 2f 3e 20 69 6e 73 74 61 6e 63 65 20 74 6f 20 75  /> instance to u
29600 73 65 2e 20 20 54 68 69 73 0d 0a 20 20 20 20 20  se.  This..     
29610 20 20 20 2f 2f 2f 20 77 69 6c 6c 20 4e 4f 54 20     /// will NOT 
29620 62 65 20 6f 77 6e 65 64 20 62 79 20 74 68 69 73  be owned by this
29630 20 63 6c 61 73 73 20 61 6e 64 20 77 69 6c 6c 20   class and will 
29640 6e 6f 74 20 62 65 20 64 69 73 70 6f 73 65 64 20  not be disposed 
29650 75 70 6f 6e 20 74 68 69 73 0d 0a 20 20 20 20 20  upon this..     
29660 20 20 20 2f 2f 2f 20 63 6c 61 73 73 20 62 65 69     /// class bei
29670 6e 67 20 64 69 73 70 6f 73 65 64 20 6f 72 20 66  ng disposed or f
29680 69 6e 61 6c 69 7a 65 64 2e 0d 0a 20 20 20 20 20  inalized...     
29690 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
296a0 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
296b0 74 65 20 53 51 4c 69 74 65 43 68 61 6e 67 65 53  te SQLiteChangeS
296c0 65 74 49 74 65 72 61 74 6f 72 20 69 74 65 72 61  etIterator itera
296d0 74 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 23 65  tor;..        #e
296e0 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
296f0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
29700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
29740 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
29750 75 62 6c 69 63 20 43 6f 6e 73 74 72 75 63 74 6f  ublic Constructo
29760 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  rs..        /// 
29770 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
29780 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74     /// Construct
29790 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66  s an instance of
297a0 20 74 68 69 73 20 63 6c 61 73 73 20 75 73 69 6e   this class usin
297b0 67 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  g the specified 
297c0 69 74 65 72 61 74 6f 72 0d 0a 20 20 20 20 20 20  iterator..      
297d0 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 2e 0d    /// instance..
297e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
297f0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
29800 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
29810 3d 22 69 74 65 72 61 74 6f 72 22 3e 0d 0a 20 20  ="iterator">..  
29820 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61        /// The ma
29830 6e 61 67 65 64 20 69 74 65 72 61 74 6f 72 20 69  naged iterator i
29840 6e 73 74 61 6e 63 65 20 74 6f 20 75 73 65 2e 0d  nstance to use..
29850 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
29860 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70  aram>..        p
29870 75 62 6c 69 63 20 53 51 4c 69 74 65 43 68 61 6e  ublic SQLiteChan
29880 67 65 53 65 74 4d 65 74 61 64 61 74 61 49 74 65  geSetMetadataIte
29890 6d 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m(..            
298a0 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65 74 49  SQLiteChangeSetI
298b0 74 65 72 61 74 6f 72 20 69 74 65 72 61 74 6f 72  terator iterator
298c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
298d0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
298e0 20 20 20 20 20 20 20 20 74 68 69 73 2e 69 74 65          this.ite
298f0 72 61 74 6f 72 20 3d 20 69 74 65 72 61 74 6f 72  rator = iterator
29900 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
29910 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
29920 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
29930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29970 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
29980 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 4d  region Private M
29990 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
299a0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
299b0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 72 6f 77         /// Throw
299c0 73 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 20 69  s an exception i
299d0 66 20 74 68 65 20 6d 61 6e 61 67 65 64 20 69 74  f the managed it
299e0 65 72 61 74 6f 72 20 69 6e 73 74 61 6e 63 65 20  erator instance 
299f0 69 73 20 69 6e 76 61 6c 69 64 2e 0d 0a 20 20 20  is invalid...   
29a00 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
29a10 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
29a20 76 61 74 65 20 76 6f 69 64 20 43 68 65 63 6b 49  vate void CheckI
29a30 74 65 72 61 74 6f 72 28 29 0d 0a 20 20 20 20 20  terator()..     
29a40 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
29a50 20 20 69 66 20 28 69 74 65 72 61 74 6f 72 20 3d    if (iterator =
29a60 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
29a70 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e           throw n
29a80 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72 61 74  ew InvalidOperat
29a90 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 22 69 74  ionException("it
29aa0 65 72 61 74 6f 72 20 75 6e 61 76 61 69 6c 61 62  erator unavailab
29ab0 6c 65 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  le");....       
29ac0 20 20 20 20 20 69 74 65 72 61 74 6f 72 2e 43 68       iterator.Ch
29ad0 65 63 6b 48 61 6e 64 6c 65 28 29 3b 0d 0a 20 20  eckHandle();..  
29ae0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
29af0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
29b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
29b40 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
29b50 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
29b60 20 50 6f 70 75 6c 61 74 65 73 20 74 68 65 20 75   Populates the u
29b70 6e 64 65 72 6c 79 69 6e 67 20 64 61 74 61 20 66  nderlying data f
29b80 6f 72 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  or the <see cref
29b90 3d 22 54 61 62 6c 65 4e 61 6d 65 22 20 2f 3e 2c  ="TableName" />,
29ba0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
29bb0 65 65 20 63 72 65 66 3d 22 4e 75 6d 62 65 72 4f  ee cref="NumberO
29bc0 66 43 6f 6c 75 6d 6e 73 22 20 2f 3e 2c 20 3c 73  fColumns" />, <s
29bd0 65 65 20 63 72 65 66 3d 22 4f 70 65 72 61 74 69  ee cref="Operati
29be0 6f 6e 43 6f 64 65 22 20 2f 3e 2c 20 61 6e 64 0d  onCode" />, and.
29bf0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
29c00 65 20 63 72 65 66 3d 22 49 6e 64 69 72 65 63 74  e cref="Indirect
29c10 22 20 2f 3e 20 70 72 6f 70 65 72 74 69 65 73 2c  " /> properties,
29c20 20 75 73 69 6e 67 20 74 68 65 20 61 70 70 72 6f   using the appro
29c30 70 72 69 61 74 65 20 6e 61 74 69 76 65 0d 0a 20  priate native.. 
29c40 20 20 20 20 20 20 20 2f 2f 2f 20 41 50 49 2e 0d         /// API..
29c50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
29c60 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
29c70 20 70 72 69 76 61 74 65 20 76 6f 69 64 20 50 6f   private void Po
29c80 70 75 6c 61 74 65 4f 70 65 72 61 74 69 6f 6e 4d  pulateOperationM
29c90 65 74 61 64 61 74 61 28 29 0d 0a 20 20 20 20 20  etadata()..     
29ca0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
29cb0 20 20 69 66 20 28 28 74 61 62 6c 65 4e 61 6d 65    if ((tableName
29cc0 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28 6e 75   == null) || (nu
29cd0 6d 62 65 72 4f 66 43 6f 6c 75 6d 6e 73 20 3d 3d  mberOfColumns ==
29ce0 20 6e 75 6c 6c 29 20 7c 7c 0d 0a 20 20 20 20 20   null) ||..     
29cf0 20 20 20 20 20 20 20 20 20 20 20 28 6f 70 65 72             (oper
29d00 61 74 69 6f 6e 43 6f 64 65 20 3d 3d 20 6e 75 6c  ationCode == nul
29d10 6c 29 20 7c 7c 20 28 69 6e 64 69 72 65 63 74 20  l) || (indirect 
29d20 3d 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20  == null))..     
29d30 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
29d40 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 49            CheckI
29d50 74 65 72 61 74 6f 72 28 29 3b 0d 0a 0d 0a 20 20  terator();....  
29d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
29d70 74 50 74 72 20 70 54 62 6c 4e 61 6d 65 20 3d 20  tPtr pTblName = 
29d80 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
29d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
29da0 4c 69 74 65 41 75 74 68 6f 72 69 7a 65 72 41 63  LiteAuthorizerAc
29db0 74 69 6f 6e 43 6f 64 65 20 6f 70 20 3d 20 53 51  tionCode op = SQ
29dc0 4c 69 74 65 41 75 74 68 6f 72 69 7a 65 72 41 63  LiteAuthorizerAc
29dd0 74 69 6f 6e 43 6f 64 65 2e 4e 6f 6e 65 3b 0d 0a  tionCode.None;..
29de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29df0 69 6e 74 20 62 49 6e 64 69 72 65 63 74 20 3d 20  int bIndirect = 
29e00 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0;..            
29e10 20 20 20 20 69 6e 74 20 6e 43 6f 6c 75 6d 6e 73      int nColumns
29e20 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20   = 0;....       
29e30 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45           SQLiteE
29e40 72 72 6f 72 43 6f 64 65 20 72 63 20 3d 20 55 6e  rrorCode rc = Un
29e50 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
29e60 73 2e 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73  s.sqlite3changes
29e70 65 74 5f 6f 70 28 0d 0a 20 20 20 20 20 20 20 20  et_op(..        
29e80 20 20 20 20 20 20 20 20 20 20 20 20 69 74 65 72              iter
29e90 61 74 6f 72 2e 47 65 74 49 6e 74 50 74 72 28 29  ator.GetIntPtr()
29ea0 2c 20 72 65 66 20 70 54 62 6c 4e 61 6d 65 2c 20  , ref pTblName, 
29eb0 72 65 66 20 6e 43 6f 6c 75 6d 6e 73 2c 20 72 65  ref nColumns, re
29ec0 66 20 6f 70 2c 0d 0a 20 20 20 20 20 20 20 20 20  f op,..         
29ed0 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 62             ref b
29ee0 49 6e 64 69 72 65 63 74 29 3b 0d 0a 0d 0a 20 20  Indirect);....  
29ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
29f00 20 28 72 63 20 21 3d 20 53 51 4c 69 74 65 45 72   (rc != SQLiteEr
29f10 72 6f 72 43 6f 64 65 2e 4f 6b 29 0d 0a 20 20 20  rorCode.Ok)..   
29f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29f30 20 74 68 72 6f 77 20 6e 65 77 20 53 51 4c 69 74   throw new SQLit
29f40 65 45 78 63 65 70 74 69 6f 6e 28 72 63 2c 20 22  eException(rc, "
29f50 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74  sqlite3changeset
29f60 5f 6f 70 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  _op");....      
29f70 20 20 20 20 20 20 20 20 20 20 74 61 62 6c 65 4e            tableN
29f80 61 6d 65 20 3d 20 53 51 4c 69 74 65 53 74 72 69  ame = SQLiteStri
29f90 6e 67 2e 53 74 72 69 6e 67 46 72 6f 6d 55 74 66  ng.StringFromUtf
29fa0 38 49 6e 74 50 74 72 28 70 54 62 6c 4e 61 6d 65  8IntPtr(pTblName
29fb0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
29fc0 20 20 20 20 6e 75 6d 62 65 72 4f 66 43 6f 6c 75      numberOfColu
29fd0 6d 6e 73 20 3d 20 6e 43 6f 6c 75 6d 6e 73 3b 0d  mns = nColumns;.
29fe0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29ff0 20 6f 70 65 72 61 74 69 6f 6e 43 6f 64 65 20 3d   operationCode =
2a000 20 6f 70 3b 0d 0a 20 20 20 20 20 20 20 20 20 20   op;..          
2a010 20 20 20 20 20 20 69 6e 64 69 72 65 63 74 20 3d        indirect =
2a020 20 28 62 49 6e 64 69 72 65 63 74 20 21 3d 20 30   (bIndirect != 0
2a030 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2a040 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
2a050 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2a060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2a0a0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2a0b0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2a0c0 20 20 2f 2f 2f 20 50 6f 70 75 6c 61 74 65 73 20    /// Populates 
2a0d0 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 64  the underlying d
2a0e0 61 74 61 20 66 6f 72 20 74 68 65 0d 0a 20 20 20  ata for the..   
2a0f0 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
2a100 65 66 3d 22 50 72 69 6d 61 72 79 4b 65 79 43 6f  ef="PrimaryKeyCo
2a110 6c 75 6d 6e 73 22 20 2f 3e 20 70 72 6f 70 65 72  lumns" /> proper
2a120 74 79 20 75 73 69 6e 67 20 74 68 65 20 61 70 70  ty using the app
2a130 72 6f 70 72 69 61 74 65 0d 0a 20 20 20 20 20 20  ropriate..      
2a140 20 20 2f 2f 2f 20 6e 61 74 69 76 65 20 41 50 49    /// native API
2a150 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2a160 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
2a170 20 20 20 70 72 69 76 61 74 65 20 76 6f 69 64 20     private void 
2a180 50 6f 70 75 6c 61 74 65 50 72 69 6d 61 72 79 4b  PopulatePrimaryK
2a190 65 79 43 6f 6c 75 6d 6e 73 28 29 0d 0a 20 20 20  eyColumns()..   
2a1a0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2a1b0 20 20 20 20 69 66 20 28 70 72 69 6d 61 72 79 4b      if (primaryK
2a1c0 65 79 43 6f 6c 75 6d 6e 73 20 3d 3d 20 6e 75 6c  eyColumns == nul
2a1d0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
2a1e0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2a1f0 20 20 20 43 68 65 63 6b 49 74 65 72 61 74 6f 72     CheckIterator
2a200 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
2a210 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 50         IntPtr pP
2a220 72 69 6d 61 72 79 4b 65 79 73 20 3d 20 49 6e 74  rimaryKeys = Int
2a230 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20  Ptr.Zero;..     
2a240 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6e             int n
2a250 43 6f 6c 75 6d 6e 73 20 3d 20 30 3b 0d 0a 0d 0a  Columns = 0;....
2a260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a270 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
2a280 72 63 20 3d 20 55 6e 73 61 66 65 4e 61 74 69 76  rc = UnsafeNativ
2a290 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
2a2a0 63 68 61 6e 67 65 73 65 74 5f 70 6b 28 0d 0a 20  changeset_pk(.. 
2a2b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a2c0 20 20 20 69 74 65 72 61 74 6f 72 2e 47 65 74 49     iterator.GetI
2a2d0 6e 74 50 74 72 28 29 2c 20 72 65 66 20 70 50 72  ntPtr(), ref pPr
2a2e0 69 6d 61 72 79 4b 65 79 73 2c 20 72 65 66 20 6e  imaryKeys, ref n
2a2f0 43 6f 6c 75 6d 6e 73 29 3b 0d 0a 0d 0a 20 20 20  Columns);....   
2a300 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2a310 28 72 63 20 21 3d 20 53 51 4c 69 74 65 45 72 72  (rc != SQLiteErr
2a320 6f 72 43 6f 64 65 2e 4f 6b 29 0d 0a 20 20 20 20  orCode.Ok)..    
2a330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a340 74 68 72 6f 77 20 6e 65 77 20 53 51 4c 69 74 65  throw new SQLite
2a350 45 78 63 65 70 74 69 6f 6e 28 72 63 2c 20 22 73  Exception(rc, "s
2a360 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f  qlite3changeset_
2a370 70 6b 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  pk");....       
2a380 20 20 20 20 20 20 20 20 20 62 79 74 65 5b 5d 20           byte[] 
2a390 62 79 74 65 73 20 3d 20 53 51 4c 69 74 65 42 79  bytes = SQLiteBy
2a3a0 74 65 73 2e 46 72 6f 6d 49 6e 74 50 74 72 28 70  tes.FromIntPtr(p
2a3b0 50 72 69 6d 61 72 79 4b 65 79 73 2c 20 6e 43 6f  PrimaryKeys, nCo
2a3c0 6c 75 6d 6e 73 29 3b 0d 0a 0d 0a 20 20 20 20 20  lumns);....     
2a3d0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62             if (b
2a3e0 79 74 65 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  ytes != null).. 
2a3f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
2a400 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a410 20 20 20 20 20 20 70 72 69 6d 61 72 79 4b 65 79        primaryKey
2a420 43 6f 6c 75 6d 6e 73 20 3d 20 6e 65 77 20 62 6f  Columns = new bo
2a430 6f 6c 5b 6e 43 6f 6c 75 6d 6e 73 5d 3b 0d 0a 0d  ol[nColumns];...
2a440 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a450 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69 6e       for (int in
2a460 64 65 78 20 3d 20 30 3b 20 69 6e 64 65 78 20 3c  dex = 0; index <
2a470 20 62 79 74 65 73 2e 4c 65 6e 67 74 68 3b 20 69   bytes.Length; i
2a480 6e 64 65 78 2b 2b 29 0d 0a 20 20 20 20 20 20 20  ndex++)..       
2a490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a4a0 20 70 72 69 6d 61 72 79 4b 65 79 43 6f 6c 75 6d   primaryKeyColum
2a4b0 6e 73 5b 69 6e 64 65 78 5d 20 3d 20 28 62 79 74  ns[index] = (byt
2a4c0 65 73 5b 69 6e 64 65 78 5d 20 21 3d 20 30 29 3b  es[index] != 0);
2a4d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a4e0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
2a4f0 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
2a500 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2a510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a550 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
2a560 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2a570 20 20 20 2f 2f 2f 20 50 6f 70 75 6c 61 74 65 73     /// Populates
2a580 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20   the underlying 
2a590 64 61 74 61 20 66 6f 72 20 74 68 65 0d 0a 20 20  data for the..  
2a5a0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
2a5b0 72 65 66 3d 22 4e 75 6d 62 65 72 4f 66 46 6f 72  ref="NumberOfFor
2a5c0 65 69 67 6e 4b 65 79 43 6f 6e 66 6c 69 63 74 73  eignKeyConflicts
2a5d0 22 20 2f 3e 20 70 72 6f 70 65 72 74 79 20 75 73  " /> property us
2a5e0 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ing the..       
2a5f0 20 2f 2f 2f 20 61 70 70 72 6f 70 72 69 61 74 65   /// appropriate
2a600 20 6e 61 74 69 76 65 20 41 50 49 2e 0d 0a 20 20   native API...  
2a610 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
2a620 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  ary>..        pr
2a630 69 76 61 74 65 20 76 6f 69 64 20 50 6f 70 75 6c  ivate void Popul
2a640 61 74 65 4e 75 6d 62 65 72 4f 66 46 6f 72 65 69  ateNumberOfForei
2a650 67 6e 4b 65 79 43 6f 6e 66 6c 69 63 74 73 28 29  gnKeyConflicts()
2a660 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
2a670 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 75 6d           if (num
2a680 62 65 72 4f 66 46 6f 72 65 69 67 6e 4b 65 79 43  berOfForeignKeyC
2a690 6f 6e 66 6c 69 63 74 73 20 3d 3d 20 6e 75 6c 6c  onflicts == null
2a6a0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
2a6b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a6c0 20 20 43 68 65 63 6b 49 74 65 72 61 74 6f 72 28    CheckIterator(
2a6d0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2a6e0 20 20 20 20 20 20 69 6e 74 20 63 6f 6e 66 6c 69        int confli
2a6f0 63 74 73 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20  cts = 0;....    
2a700 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
2a710 74 65 45 72 72 6f 72 43 6f 64 65 20 72 63 20 3d  teErrorCode rc =
2a720 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a730 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
2a740 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
2a750 33 63 68 61 6e 67 65 73 65 74 5f 66 6b 5f 63 6f  3changeset_fk_co
2a760 6e 66 6c 69 63 74 73 28 0d 0a 20 20 20 20 20 20  nflicts(..      
2a770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a780 20 20 69 74 65 72 61 74 6f 72 2e 47 65 74 49 6e    iterator.GetIn
2a790 74 50 74 72 28 29 2c 20 72 65 66 20 63 6f 6e 66  tPtr(), ref conf
2a7a0 6c 69 63 74 73 29 3b 0d 0a 0d 0a 20 20 20 20 20  licts);....     
2a7b0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72             if (r
2a7c0 63 20 21 3d 20 53 51 4c 69 74 65 45 72 72 6f 72  c != SQLiteError
2a7d0 43 6f 64 65 2e 4f 6b 29 0d 0a 20 20 20 20 20 20  Code.Ok)..      
2a7e0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2a7f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a800 20 74 68 72 6f 77 20 6e 65 77 20 53 51 4c 69 74   throw new SQLit
2a810 65 45 78 63 65 70 74 69 6f 6e 28 72 63 2c 0d 0a  eException(rc,..
2a820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a830 20 20 20 20 20 20 20 20 22 73 71 6c 69 74 65 33          "sqlite3
2a840 63 68 61 6e 67 65 73 65 74 5f 66 6b 5f 63 6f 6e  changeset_fk_con
2a850 66 6c 69 63 74 73 22 29 3b 0d 0a 20 20 20 20 20  flicts");..     
2a860 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
2a870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a880 6e 75 6d 62 65 72 4f 66 46 6f 72 65 69 67 6e 4b  numberOfForeignK
2a890 65 79 43 6f 6e 66 6c 69 63 74 73 20 3d 20 63 6f  eyConflicts = co
2a8a0 6e 66 6c 69 63 74 73 3b 0d 0a 20 20 20 20 20 20  nflicts;..      
2a8b0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2a8c0 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
2a8d0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
2a8e0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2a8f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a920 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2a930 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 53 51       #region ISQ
2a940 4c 69 74 65 43 68 61 6e 67 65 53 65 74 4d 65 74  LiteChangeSetMet
2a950 61 64 61 74 61 49 74 65 6d 20 4d 65 6d 62 65 72  adataItem Member
2a960 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
2a970 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2a980 20 20 2f 2f 2f 20 42 61 63 6b 69 6e 67 20 66 69    /// Backing fi
2a990 65 6c 64 20 66 6f 72 20 74 68 65 20 3c 73 65 65  eld for the <see
2a9a0 20 63 72 65 66 3d 22 54 61 62 6c 65 4e 61 6d 65   cref="TableName
2a9b0 22 20 2f 3e 20 70 72 6f 70 65 72 74 79 2e 20 54  " /> property. T
2a9c0 68 69 73 20 76 61 6c 75 65 0d 0a 20 20 20 20 20  his value..     
2a9d0 20 20 20 2f 2f 2f 20 77 69 6c 6c 20 62 65 20 6e     /// will be n
2a9e0 75 6c 6c 20 69 66 20 74 68 69 73 20 66 69 65 6c  ull if this fiel
2a9f0 64 20 68 61 73 20 6e 6f 74 20 79 65 74 20 62 65  d has not yet be
2aa00 65 6e 20 70 6f 70 75 6c 61 74 65 64 20 76 69 61  en populated via
2aa10 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
2aa20 2f 20 75 6e 64 65 72 6c 79 69 6e 67 20 6e 61 74  / underlying nat
2aa30 69 76 65 20 41 50 49 2e 0d 0a 20 20 20 20 20 20  ive API...      
2aa40 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2aa50 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
2aa60 65 20 73 74 72 69 6e 67 20 74 61 62 6c 65 4e 61  e string tableNa
2aa70 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  me;....        /
2aa80 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2aa90 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
2aaa0 6d 65 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20  me of the table 
2aab0 74 68 65 20 63 68 61 6e 67 65 20 77 61 73 20 6d  the change was m
2aac0 61 64 65 20 74 6f 2e 0d 0a 20 20 20 20 20 20 20  ade to...       
2aad0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2aae0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
2aaf0 73 74 72 69 6e 67 20 54 61 62 6c 65 4e 61 6d 65  string TableName
2ab00 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
2ab10 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20           get..  
2ab20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2ab30 20 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65               Che
2ab40 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 20  ckDisposed();.. 
2ab50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50                 P
2ab60 6f 70 75 6c 61 74 65 4f 70 65 72 61 74 69 6f 6e  opulateOperation
2ab70 4d 65 74 61 64 61 74 61 28 29 3b 0d 0a 0d 0a 20  Metadata();.... 
2ab80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2ab90 65 74 75 72 6e 20 74 61 62 6c 65 4e 61 6d 65 3b  eturn tableName;
2aba0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2abb0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
2abc0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2abd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2abe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2abf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ac00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2ac10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
2ac20 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2ac30 2f 2f 2f 20 42 61 63 6b 69 6e 67 20 66 69 65 6c  /// Backing fiel
2ac40 64 20 66 6f 72 20 74 68 65 20 3c 73 65 65 20 63  d for the <see c
2ac50 72 65 66 3d 22 4e 75 6d 62 65 72 4f 66 43 6f 6c  ref="NumberOfCol
2ac60 75 6d 6e 73 22 20 2f 3e 20 70 72 6f 70 65 72 74  umns" /> propert
2ac70 79 2e 20 54 68 69 73 0d 0a 20 20 20 20 20 20 20  y. This..       
2ac80 20 2f 2f 2f 20 76 61 6c 75 65 20 77 69 6c 6c 20   /// value will 
2ac90 62 65 20 6e 75 6c 6c 20 69 66 20 74 68 69 73 20  be null if this 
2aca0 66 69 65 6c 64 20 68 61 73 20 6e 6f 74 20 79 65  field has not ye
2acb0 74 20 62 65 65 6e 20 70 6f 70 75 6c 61 74 65 64  t been populated
2acc0 20 76 69 61 20 74 68 65 0d 0a 20 20 20 20 20 20   via the..      
2acd0 20 20 2f 2f 2f 20 75 6e 64 65 72 6c 79 69 6e 67    /// underlying
2ace0 20 6e 61 74 69 76 65 20 41 50 49 2e 0d 0a 20 20   native API...  
2acf0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
2ad00 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  ary>..        pr
2ad10 69 76 61 74 65 20 69 6e 74 3f 20 6e 75 6d 62 65  ivate int? numbe
2ad20 72 4f 66 43 6f 6c 75 6d 6e 73 3b 0d 0a 0d 0a 20  rOfColumns;.... 
2ad30 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
2ad40 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
2ad50 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  / The number of 
2ad60 63 6f 6c 75 6d 6e 73 20 69 6d 70 61 63 74 65 64  columns impacted
2ad70 20 62 79 20 74 68 69 73 20 63 68 61 6e 67 65 2e   by this change.
2ad80 20 20 54 68 69 73 20 76 61 6c 75 65 20 63 61 6e    This value can
2ad90 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   be..        ///
2ada0 20 75 73 65 64 20 74 6f 20 64 65 74 65 72 6d 69   used to determi
2adb0 6e 65 20 74 68 65 20 68 69 67 68 65 73 74 20 76  ne the highest v
2adc0 61 6c 69 64 20 63 6f 6c 75 6d 6e 20 69 6e 64 65  alid column inde
2add0 78 20 74 68 61 74 20 6d 61 79 20 62 65 20 75 73  x that may be us
2ade0 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
2adf0 77 69 74 68 20 74 68 65 20 3c 73 65 65 20 63 72  with the <see cr
2ae00 65 66 3d 22 47 65 74 4f 6c 64 56 61 6c 75 65 22  ef="GetOldValue"
2ae10 20 2f 3e 2c 20 3c 73 65 65 20 63 72 65 66 3d 22   />, <see cref="
2ae20 47 65 74 4e 65 77 56 61 6c 75 65 22 20 2f 3e 2c  GetNewValue" />,
2ae30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6e  ..        /// an
2ae40 64 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74  d <see cref="Get
2ae50 43 6f 6e 66 6c 69 63 74 56 61 6c 75 65 22 20 2f  ConflictValue" /
2ae60 3e 20 6d 65 74 68 6f 64 73 20 6f 66 20 74 68 69  > methods of thi
2ae70 73 20 69 6e 74 65 72 66 61 63 65 2e 20 20 49 74  s interface.  It
2ae80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69  ..        /// wi
2ae90 6c 6c 20 62 65 20 74 68 69 73 20 76 61 6c 75 65  ll be this value
2aea0 20 6d 69 6e 75 73 20 6f 6e 65 2e 0d 0a 20 20 20   minus one...   
2aeb0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2aec0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
2aed0 6c 69 63 20 69 6e 74 20 4e 75 6d 62 65 72 4f 66  lic int NumberOf
2aee0 43 6f 6c 75 6d 6e 73 0d 0a 20 20 20 20 20 20 20  Columns..       
2aef0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2af00 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  get..           
2af10 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2af20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65      CheckDispose
2af30 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  d();..          
2af40 20 20 20 20 20 20 50 6f 70 75 6c 61 74 65 4f 70        PopulateOp
2af50 65 72 61 74 69 6f 6e 4d 65 74 61 64 61 74 61 28  erationMetadata(
2af60 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2af70 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 69 6e        return (in
2af80 74 29 6e 75 6d 62 65 72 4f 66 43 6f 6c 75 6d 6e  t)numberOfColumn
2af90 73 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s;..            
2afa0 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
2afb0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2afc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2afd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2afe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2b000 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2b010 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2b020 20 20 2f 2f 2f 20 42 61 63 6b 69 6e 67 20 66 69    /// Backing fi
2b030 65 6c 64 20 66 6f 72 20 74 68 65 20 3c 73 65 65  eld for the <see
2b040 20 63 72 65 66 3d 22 4f 70 65 72 61 74 69 6f 6e   cref="Operation
2b050 43 6f 64 65 22 20 2f 3e 20 70 72 6f 70 65 72 74  Code" /> propert
2b060 79 2e 20 20 54 68 69 73 0d 0a 20 20 20 20 20 20  y.  This..      
2b070 20 20 2f 2f 2f 20 76 61 6c 75 65 20 77 69 6c 6c    /// value will
2b080 20 62 65 20 6e 75 6c 6c 20 69 66 20 74 68 69 73   be null if this
2b090 20 66 69 65 6c 64 20 68 61 73 20 6e 6f 74 20 79   field has not y
2b0a0 65 74 20 62 65 65 6e 20 70 6f 70 75 6c 61 74 65  et been populate
2b0b0 64 20 76 69 61 20 74 68 65 0d 0a 20 20 20 20 20  d via the..     
2b0c0 20 20 20 2f 2f 2f 20 75 6e 64 65 72 6c 79 69 6e     /// underlyin
2b0d0 67 20 6e 61 74 69 76 65 20 41 50 49 2e 0d 0a 20  g native API... 
2b0e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
2b0f0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
2b100 72 69 76 61 74 65 20 53 51 4c 69 74 65 41 75 74  rivate SQLiteAut
2b110 68 6f 72 69 7a 65 72 41 63 74 69 6f 6e 43 6f 64  horizerActionCod
2b120 65 3f 20 6f 70 65 72 61 74 69 6f 6e 43 6f 64 65  e? operationCode
2b130 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
2b140 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2b150 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 77 69 6c      /// This wil
2b160 6c 20 63 6f 6e 74 61 69 6e 20 74 68 65 20 76 61  l contain the va
2b170 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  lue..        ///
2b180 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
2b190 74 65 41 75 74 68 6f 72 69 7a 65 72 41 63 74 69  teAuthorizerActi
2b1a0 6f 6e 43 6f 64 65 2e 49 6e 73 65 72 74 22 20 2f  onCode.Insert" /
2b1b0 3e 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  >,..        /// 
2b1c0 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
2b1d0 65 41 75 74 68 6f 72 69 7a 65 72 41 63 74 69 6f  eAuthorizerActio
2b1e0 6e 43 6f 64 65 2e 55 70 64 61 74 65 22 20 2f 3e  nCode.Update" />
2b1f0 2c 20 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f  , or..        //
2b200 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  / <see cref="SQL
2b210 69 74 65 41 75 74 68 6f 72 69 7a 65 72 41 63 74  iteAuthorizerAct
2b220 69 6f 6e 43 6f 64 65 2e 44 65 6c 65 74 65 22 20  ionCode.Delete" 
2b230 2f 3e 2c 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e  />, correspondin
2b240 67 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  g to..        //
2b250 2f 20 74 68 65 20 6f 76 65 72 61 6c 6c 20 74 79  / the overall ty
2b260 70 65 20 6f 66 20 63 68 61 6e 67 65 20 74 68 69  pe of change thi
2b270 73 20 69 74 65 6d 20 72 65 70 72 65 73 65 6e 74  s item represent
2b280 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
2b290 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
2b2a0 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
2b2b0 65 41 75 74 68 6f 72 69 7a 65 72 41 63 74 69 6f  eAuthorizerActio
2b2c0 6e 43 6f 64 65 20 4f 70 65 72 61 74 69 6f 6e 43  nCode OperationC
2b2d0 6f 64 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ode..        {..
2b2e0 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d              get.
2b2f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
2b300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b310 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
2b320 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b330 20 20 50 6f 70 75 6c 61 74 65 4f 70 65 72 61 74    PopulateOperat
2b340 69 6f 6e 4d 65 74 61 64 61 74 61 28 29 3b 0d 0a  ionMetadata();..
2b350 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b360 20 20 72 65 74 75 72 6e 20 28 53 51 4c 69 74 65    return (SQLite
2b370 41 75 74 68 6f 72 69 7a 65 72 41 63 74 69 6f 6e  AuthorizerAction
2b380 43 6f 64 65 29 6f 70 65 72 61 74 69 6f 6e 43 6f  Code)operationCo
2b390 64 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  de;..           
2b3a0 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
2b3b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2b3c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b3d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b3e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b3f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b400 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
2b410 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2b420 20 20 20 2f 2f 2f 20 42 61 63 6b 69 6e 67 20 66     /// Backing f
2b430 69 65 6c 64 20 66 6f 72 20 74 68 65 20 3c 73 65  ield for the <se
2b440 65 20 63 72 65 66 3d 22 49 6e 64 69 72 65 63 74  e cref="Indirect
2b450 22 20 2f 3e 20 70 72 6f 70 65 72 74 79 2e 20 20  " /> property.  
2b460 54 68 69 73 20 76 61 6c 75 65 0d 0a 20 20 20 20  This value..    
2b470 20 20 20 20 2f 2f 2f 20 77 69 6c 6c 20 62 65 20      /// will be 
2b480 6e 75 6c 6c 20 69 66 20 74 68 69 73 20 66 69 65  null if this fie
2b490 6c 64 20 68 61 73 20 6e 6f 74 20 79 65 74 20 62  ld has not yet b
2b4a0 65 65 6e 20 70 6f 70 75 6c 61 74 65 64 20 76 69  een populated vi
2b4b0 61 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  a the..        /
2b4c0 2f 2f 20 75 6e 64 65 72 6c 79 69 6e 67 20 6e 61  // underlying na
2b4d0 74 69 76 65 20 41 50 49 2e 0d 0a 20 20 20 20 20  tive API...     
2b4e0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2b4f0 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
2b500 74 65 20 62 6f 6f 6c 3f 20 69 6e 64 69 72 65 63  te bool? indirec
2b510 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  t;....        //
2b520 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2b530 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
2b540 6f 20 69 66 20 74 68 69 73 20 63 68 61 6e 67 65  o if this change
2b550 20 69 73 20 63 6f 6e 73 69 64 65 72 65 64 20 74   is considered t
2b560 6f 20 62 65 20 69 6e 64 69 72 65 63 74 20 28 69  o be indirect (i
2b570 2e 65 2e 20 61 73 0d 0a 20 20 20 20 20 20 20 20  .e. as..        
2b580 2f 2f 2f 20 74 68 6f 75 67 68 20 74 68 65 79 20  /// though they 
2b590 77 65 72 65 20 6d 61 64 65 20 76 69 61 20 61 20  were made via a 
2b5a0 74 72 69 67 67 65 72 20 6f 72 20 66 6f 72 65 69  trigger or forei
2b5b0 67 6e 20 6b 65 79 20 61 63 74 69 6f 6e 29 2e 0d  gn key action)..
2b5c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
2b5d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2b5e0 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 49 6e 64   public bool Ind
2b5f0 69 72 65 63 74 0d 0a 20 20 20 20 20 20 20 20 7b  irect..        {
2b600 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
2b610 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  t..            {
2b620 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b630 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28    CheckDisposed(
2b640 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2b650 20 20 20 20 50 6f 70 75 6c 61 74 65 4f 70 65 72      PopulateOper
2b660 61 74 69 6f 6e 4d 65 74 61 64 61 74 61 28 29 3b  ationMetadata();
2b670 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2b680 20 20 20 20 72 65 74 75 72 6e 20 28 62 6f 6f 6c      return (bool
2b690 29 69 6e 64 69 72 65 63 74 3b 0d 0a 20 20 20 20  )indirect;..    
2b6a0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2b6b0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2b6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b6f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b700 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2b710 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2b720 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 42 61  ..        /// Ba
2b730 63 6b 69 6e 67 20 66 69 65 6c 64 20 66 6f 72 20  cking field for 
2b740 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 50  the <see cref="P
2b750 72 69 6d 61 72 79 4b 65 79 43 6f 6c 75 6d 6e 73  rimaryKeyColumns
2b760 22 20 2f 3e 20 70 72 6f 70 65 72 74 79 2e 0d 0a  " /> property...
2b770 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
2b780 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 20 6e   value will be n
2b790 75 6c 6c 20 69 66 20 74 68 69 73 20 66 69 65 6c  ull if this fiel
2b7a0 64 20 68 61 73 20 6e 6f 74 20 79 65 74 20 62 65  d has not yet be
2b7b0 65 6e 20 70 6f 70 75 6c 61 74 65 64 0d 0a 20 20  en populated..  
2b7c0 20 20 20 20 20 20 2f 2f 2f 20 76 69 61 20 74 68        /// via th
2b7d0 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 6e 61 74  e underlying nat
2b7e0 69 76 65 20 41 50 49 2e 0d 0a 20 20 20 20 20 20  ive API...      
2b7f0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2b800 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
2b810 65 20 62 6f 6f 6c 5b 5d 20 70 72 69 6d 61 72 79  e bool[] primary
2b820 4b 65 79 43 6f 6c 75 6d 6e 73 3b 0d 0a 0d 0a 20  KeyColumns;.... 
2b830 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
2b840 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
2b850 2f 20 54 68 69 73 20 61 72 72 61 79 20 63 6f 6e  / This array con
2b860 74 61 69 6e 73 20 61 20 3c 73 65 65 20 63 72 65  tains a <see cre
2b870 66 3d 22 42 6f 6f 6c 65 61 6e 22 20 2f 3e 20 66  f="Boolean" /> f
2b880 6f 72 20 65 61 63 68 20 63 6f 6c 75 6d 6e 20 69  or each column i
2b890 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  n..        /// t
2b8a0 68 65 20 74 61 62 6c 65 20 61 73 73 6f 63 69 61  he table associa
2b8b0 74 65 64 20 77 69 74 68 20 74 68 69 73 20 63 68  ted with this ch
2b8c0 61 6e 67 65 2e 20 20 54 68 65 20 65 6c 65 6d 65  ange.  The eleme
2b8d0 6e 74 20 77 69 6c 6c 20 62 65 20 7a 65 72 6f 0d  nt will be zero.
2b8e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 66 20  .        /// if 
2b8f0 74 68 65 20 63 6f 6c 75 6d 6e 20 69 73 20 6e 6f  the column is no
2b900 74 20 70 61 72 74 20 6f 66 20 74 68 65 20 70 72  t part of the pr
2b910 69 6d 61 72 79 20 6b 65 79 3b 20 6f 74 68 65 72  imary key; other
2b920 77 69 73 65 2c 20 69 74 20 77 69 6c 6c 0d 0a 20  wise, it will.. 
2b930 20 20 20 20 20 20 20 2f 2f 2f 20 62 65 20 6e 6f         /// be no
2b940 6e 2d 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 20  n-zero...       
2b950 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2b960 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
2b970 62 6f 6f 6c 5b 5d 20 50 72 69 6d 61 72 79 4b 65  bool[] PrimaryKe
2b980 79 43 6f 6c 75 6d 6e 73 0d 0a 20 20 20 20 20 20  yColumns..      
2b990 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2b9a0 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20   get..          
2b9b0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2b9c0 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
2b9d0 65 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ed();..         
2b9e0 20 20 20 20 20 20 20 50 6f 70 75 6c 61 74 65 50         PopulateP
2b9f0 72 69 6d 61 72 79 4b 65 79 43 6f 6c 75 6d 6e 73  rimaryKeyColumns
2ba00 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
2ba10 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 72         return pr
2ba20 69 6d 61 72 79 4b 65 79 43 6f 6c 75 6d 6e 73 3b  imaryKeyColumns;
2ba30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2ba40 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
2ba50 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2ba60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ba70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ba80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ba90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2baa0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
2bab0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2bac0 2f 2f 2f 20 42 61 63 6b 69 6e 67 20 66 69 65 6c  /// Backing fiel
2bad0 64 20 66 6f 72 20 74 68 65 20 3c 73 65 65 20 63  d for the <see c
2bae0 72 65 66 3d 22 4e 75 6d 62 65 72 4f 66 46 6f 72  ref="NumberOfFor
2baf0 65 69 67 6e 4b 65 79 43 6f 6e 66 6c 69 63 74 73  eignKeyConflicts
2bb00 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  " />..        //
2bb10 2f 20 70 72 6f 70 65 72 74 79 2e 20 20 54 68 69  / property.  Thi
2bb20 73 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 20  s value will be 
2bb30 6e 75 6c 6c 20 69 66 20 74 68 69 73 20 66 69 65  null if this fie
2bb40 6c 64 20 68 61 73 20 6e 6f 74 20 79 65 74 20 62  ld has not yet b
2bb50 65 65 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  een..        ///
2bb60 20 70 6f 70 75 6c 61 74 65 64 20 76 69 61 20 74   populated via t
2bb70 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 6e 61  he underlying na
2bb80 74 69 76 65 20 41 50 49 2e 0d 0a 20 20 20 20 20  tive API...     
2bb90 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2bba0 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
2bbb0 74 65 20 69 6e 74 3f 20 6e 75 6d 62 65 72 4f 66  te int? numberOf
2bbc0 46 6f 72 65 69 67 6e 4b 65 79 43 6f 6e 66 6c 69  ForeignKeyConfli
2bbd0 63 74 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  cts;....        
2bbe0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2bbf0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
2bc00 6d 65 74 68 6f 64 20 6d 61 79 20 6f 6e 6c 79 20  method may only 
2bc10 62 65 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 77  be called from w
2bc20 69 74 68 69 6e 20 61 0d 0a 20 20 20 20 20 20 20  ithin a..       
2bc30 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
2bc40 53 65 73 73 69 6f 6e 43 6f 6e 66 6c 69 63 74 43  SessionConflictC
2bc50 61 6c 6c 62 61 63 6b 22 20 2f 3e 20 64 65 6c 65  allback" /> dele
2bc60 67 61 74 65 20 77 68 65 6e 20 74 68 65 20 63 6f  gate when the co
2bc70 6e 66 6c 69 63 74 0d 0a 20 20 20 20 20 20 20 20  nflict..        
2bc80 2f 2f 2f 20 74 79 70 65 20 69 73 20 3c 73 65 65  /// type is <see
2bc90 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 68 61   cref="SQLiteCha
2bca0 6e 67 65 53 65 74 43 6f 6e 66 6c 69 63 74 54 79  ngeSetConflictTy
2bcb0 70 65 2e 46 6f 72 65 69 67 6e 4b 65 79 22 20 2f  pe.ForeignKey" /
2bcc0 3e 2e 20 20 49 74 0d 0a 20 20 20 20 20 20 20 20  >.  It..        
2bcd0 2f 2f 2f 20 72 65 74 75 72 6e 73 20 74 68 65 20  /// returns the 
2bce0 74 6f 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20  total number of 
2bcf0 6b 6e 6f 77 6e 20 66 6f 72 65 69 67 6e 20 6b 65  known foreign ke
2bd00 79 20 76 69 6f 6c 61 74 69 6f 6e 73 20 69 6e 20  y violations in 
2bd10 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
2bd20 20 64 65 73 74 69 6e 61 74 69 6f 6e 20 64 61 74   destination dat
2bd30 61 62 61 73 65 2e 0d 0a 20 20 20 20 20 20 20 20  abase...        
2bd40 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2bd50 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
2bd60 6e 74 20 4e 75 6d 62 65 72 4f 66 46 6f 72 65 69  nt NumberOfForei
2bd70 67 6e 4b 65 79 43 6f 6e 66 6c 69 63 74 73 0d 0a  gnKeyConflicts..
2bd80 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2bd90 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20         get..    
2bda0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2bdb0 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b             Check
2bdc0 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 20 20 20  Disposed();..   
2bdd0 20 20 20 20 20 20 20 20 20 20 20 20 20 50 6f 70               Pop
2bde0 75 6c 61 74 65 4e 75 6d 62 65 72 4f 66 46 6f 72  ulateNumberOfFor
2bdf0 65 69 67 6e 4b 65 79 43 6f 6e 66 6c 69 63 74 73  eignKeyConflicts
2be00 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
2be10 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 69         return (i
2be20 6e 74 29 6e 75 6d 62 65 72 4f 66 46 6f 72 65 69  nt)numberOfForei
2be30 67 6e 4b 65 79 43 6f 6e 66 6c 69 63 74 73 3b 0d  gnKeyConflicts;.
2be40 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2be50 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2be60 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2be70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2beb0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
2bec0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
2bed0 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20 72  // Queries and r
2bee0 65 74 75 72 6e 73 20 74 68 65 20 6f 72 69 67 69  eturns the origi
2bef0 6e 61 6c 20 76 61 6c 75 65 20 6f 66 20 61 20 67  nal value of a g
2bf00 69 76 65 6e 20 63 6f 6c 75 6d 6e 20 66 6f 72 20  iven column for 
2bf10 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  this..        //
2bf20 2f 20 63 68 61 6e 67 65 2e 20 20 54 68 69 73 20  / change.  This 
2bf30 6d 65 74 68 6f 64 20 6d 61 79 20 6f 6e 6c 79 20  method may only 
2bf40 62 65 20 63 61 6c 6c 65 64 20 77 68 65 6e 20 74  be called when t
2bf50 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
2bf60 3c 73 65 65 20 63 72 65 66 3d 22 4f 70 65 72 61  <see cref="Opera
2bf70 74 69 6f 6e 43 6f 64 65 22 20 2f 3e 20 68 61 73  tionCode" /> has
2bf80 20 61 20 76 61 6c 75 65 20 6f 66 0d 0a 20 20 20   a value of..   
2bf90 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
2bfa0 65 66 3d 22 53 51 4c 69 74 65 41 75 74 68 6f 72  ef="SQLiteAuthor
2bfb0 69 7a 65 72 41 63 74 69 6f 6e 43 6f 64 65 2e 55  izerActionCode.U
2bfc0 70 64 61 74 65 22 20 2f 3e 20 6f 72 0d 0a 20 20  pdate" /> or..  
2bfd0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
2bfe0 72 65 66 3d 22 53 51 4c 69 74 65 41 75 74 68 6f  ref="SQLiteAutho
2bff0 72 69 7a 65 72 41 63 74 69 6f 6e 43 6f 64 65 2e  rizerActionCode.
2c000 44 65 6c 65 74 65 22 20 2f 3e 2e 0d 0a 20 20 20  Delete" />...   
2c010 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2c020 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
2c030 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f   <param name="co
2c040 6c 75 6d 6e 49 6e 64 65 78 22 3e 0d 0a 20 20 20  lumnIndex">..   
2c050 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 64       /// The ind
2c060 65 78 20 66 6f 72 20 74 68 65 20 63 6f 6c 75 6d  ex for the colum
2c070 6e 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20 6d  n.  This value m
2c080 75 73 74 20 62 65 20 62 65 74 77 65 65 6e 20 7a  ust be between z
2c090 65 72 6f 20 61 6e 64 20 6f 6e 65 0d 0a 20 20 20  ero and one..   
2c0a0 20 20 20 20 20 2f 2f 2f 20 6c 65 73 73 20 74 68       /// less th
2c0b0 61 6e 20 74 68 65 20 74 6f 74 61 6c 20 6e 75 6d  an the total num
2c0c0 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 66  ber of columns f
2c0d0 6f 72 20 74 68 69 73 20 74 61 62 6c 65 2e 0d 0a  or this table...
2c0e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2c0f0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
2c100 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
2c110 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 72 69       /// The ori
2c120 67 69 6e 61 6c 20 76 61 6c 75 65 20 6f 66 20 61  ginal value of a
2c130 20 67 69 76 65 6e 20 63 6f 6c 75 6d 6e 20 66 6f   given column fo
2c140 72 20 74 68 69 73 20 63 68 61 6e 67 65 2e 0d 0a  r this change...
2c150 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
2c160 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
2c170 70 75 62 6c 69 63 20 53 51 4c 69 74 65 56 61 6c  public SQLiteVal
2c180 75 65 20 47 65 74 4f 6c 64 56 61 6c 75 65 28 0d  ue GetOldValue(.
2c190 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
2c1a0 20 63 6f 6c 75 6d 6e 49 6e 64 65 78 0d 0a 20 20   columnIndex..  
2c1b0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
2c1c0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2c1d0 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65      CheckDispose
2c1e0 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  d();..          
2c1f0 20 20 43 68 65 63 6b 49 74 65 72 61 74 6f 72 28    CheckIterator(
2c200 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2c210 20 20 49 6e 74 50 74 72 20 70 56 61 6c 75 65 20    IntPtr pValue 
2c220 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
2c230 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
2c240 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 72 63  LiteErrorCode rc
2c250 20 3d 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d   = UnsafeNativeM
2c260 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 63 68  ethods.sqlite3ch
2c270 61 6e 67 65 73 65 74 5f 6f 6c 64 28 0d 0a 20 20  angeset_old(..  
2c280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 74                it
2c290 65 72 61 74 6f 72 2e 47 65 74 49 6e 74 50 74 72  erator.GetIntPtr
2c2a0 28 29 2c 20 63 6f 6c 75 6d 6e 49 6e 64 65 78 2c  (), columnIndex,
2c2b0 20 72 65 66 20 70 56 61 6c 75 65 29 3b 0d 0a 0d   ref pValue);...
2c2c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
2c2d0 75 72 6e 20 53 51 4c 69 74 65 56 61 6c 75 65 2e  urn SQLiteValue.
2c2e0 46 72 6f 6d 49 6e 74 50 74 72 28 70 56 61 6c 75  FromIntPtr(pValu
2c2f0 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  e);..        }..
2c300 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2c310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c350 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
2c360 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2c370 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20      /// Queries 
2c380 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
2c390 75 70 64 61 74 65 64 20 76 61 6c 75 65 20 6f 66  updated value of
2c3a0 20 61 20 67 69 76 65 6e 20 63 6f 6c 75 6d 6e 20   a given column 
2c3b0 66 6f 72 20 74 68 69 73 0d 0a 20 20 20 20 20 20  for this..      
2c3c0 20 20 2f 2f 2f 20 63 68 61 6e 67 65 2e 20 20 54    /// change.  T
2c3d0 68 69 73 20 6d 65 74 68 6f 64 20 6d 61 79 20 6f  his method may o
2c3e0 6e 6c 79 20 62 65 20 63 61 6c 6c 65 64 20 77 68  nly be called wh
2c3f0 65 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  en the..        
2c400 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 4f  /// <see cref="O
2c410 70 65 72 61 74 69 6f 6e 43 6f 64 65 22 20 2f 3e  perationCode" />
2c420 20 68 61 73 20 61 20 76 61 6c 75 65 20 6f 66 0d   has a value of.
2c430 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
2c440 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 41 75  e cref="SQLiteAu
2c450 74 68 6f 72 69 7a 65 72 41 63 74 69 6f 6e 43 6f  thorizerActionCo
2c460 64 65 2e 49 6e 73 65 72 74 22 20 2f 3e 20 6f 72  de.Insert" /> or
2c470 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
2c480 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 41  ee cref="SQLiteA
2c490 75 74 68 6f 72 69 7a 65 72 41 63 74 69 6f 6e 43  uthorizerActionC
2c4a0 6f 64 65 2e 55 70 64 61 74 65 22 20 2f 3e 2e 0d  ode.Update" />..
2c4b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
2c4c0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2c4d0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2c4e0 3d 22 63 6f 6c 75 6d 6e 49 6e 64 65 78 22 3e 0d  ="columnIndex">.
2c4f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
2c500 20 69 6e 64 65 78 20 66 6f 72 20 74 68 65 20 63   index for the c
2c510 6f 6c 75 6d 6e 2e 20 20 54 68 69 73 20 76 61 6c  olumn.  This val
2c520 75 65 20 6d 75 73 74 20 62 65 20 62 65 74 77 65  ue must be betwe
2c530 65 6e 20 7a 65 72 6f 20 61 6e 64 20 6f 6e 65 0d  en zero and one.
2c540 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 65 73  .        /// les
2c550 73 20 74 68 61 6e 20 74 68 65 20 74 6f 74 61 6c  s than the total
2c560 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d   number of colum
2c570 6e 73 20 66 6f 72 20 74 68 69 73 20 74 61 62 6c  ns for this tabl
2c580 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
2c590 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
2c5a0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
2c5b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
2c5c0 20 75 70 64 61 74 65 64 20 76 61 6c 75 65 20 6f   updated value o
2c5d0 66 20 61 20 67 69 76 65 6e 20 63 6f 6c 75 6d 6e  f a given column
2c5e0 20 66 6f 72 20 74 68 69 73 20 63 68 61 6e 67 65   for this change
2c5f0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2c600 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
2c610 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
2c620 56 61 6c 75 65 20 47 65 74 4e 65 77 56 61 6c 75  Value GetNewValu
2c630 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
2c640 69 6e 74 20 63 6f 6c 75 6d 6e 49 6e 64 65 78 0d  int columnIndex.
2c650 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
2c660 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2c670 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70         CheckDisp
2c680 6f 73 65 64 28 29 3b 0d 0a 20 20 20 20 20 20 20  osed();..       
2c690 20 20 20 20 20 43 68 65 63 6b 49 74 65 72 61 74       CheckIterat
2c6a0 6f 72 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  or();....       
2c6b0 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 61 6c       IntPtr pVal
2c6c0 75 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  ue = IntPtr.Zero
2c6d0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2c6e0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
2c6f0 20 72 63 20 3d 20 55 6e 73 61 66 65 4e 61 74 69   rc = UnsafeNati
2c700 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
2c710 33 63 68 61 6e 67 65 73 65 74 5f 6e 65 77 28 0d  3changeset_new(.
2c720 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c730 20 69 74 65 72 61 74 6f 72 2e 47 65 74 49 6e 74   iterator.GetInt
2c740 50 74 72 28 29 2c 20 63 6f 6c 75 6d 6e 49 6e 64  Ptr(), columnInd
2c750 65 78 2c 20 72 65 66 20 70 56 61 6c 75 65 29 3b  ex, ref pValue);
2c760 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2c770 72 65 74 75 72 6e 20 53 51 4c 69 74 65 56 61 6c  return SQLiteVal
2c780 75 65 2e 46 72 6f 6d 49 6e 74 50 74 72 28 70 56  ue.FromIntPtr(pV
2c790 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alue);..        
2c7a0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
2c7b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c7c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c7d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c7e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c7f0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2c800 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2c810 20 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69         /// Queri
2c820 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74  es and returns t
2c830 68 65 20 63 6f 6e 66 6c 69 63 74 69 6e 67 20 76  he conflicting v
2c840 61 6c 75 65 20 6f 66 20 61 20 67 69 76 65 6e 20  alue of a given 
2c850 63 6f 6c 75 6d 6e 20 66 6f 72 0d 0a 20 20 20 20  column for..    
2c860 20 20 20 20 2f 2f 2f 20 74 68 69 73 20 63 68 61      /// this cha
2c870 6e 67 65 2e 20 20 54 68 69 73 20 6d 65 74 68 6f  nge.  This metho
2c880 64 20 6d 61 79 20 6f 6e 6c 79 20 62 65 20 63 61  d may only be ca
2c890 6c 6c 65 64 20 66 72 6f 6d 20 77 69 74 68 69 6e  lled from within
2c8a0 20 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20   a..        /// 
2c8b0 3c 73 65 65 20 63 72 65 66 3d 22 53 65 73 73 69  <see cref="Sessi
2c8c0 6f 6e 43 6f 6e 66 6c 69 63 74 43 61 6c 6c 62 61  onConflictCallba
2c8d0 63 6b 22 20 2f 3e 20 64 65 6c 65 67 61 74 65 20  ck" /> delegate 
2c8e0 77 68 65 6e 20 74 68 65 20 63 6f 6e 66 6c 69 63  when the conflic
2c8f0 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  t..        /// t
2c900 79 70 65 20 69 73 20 3c 73 65 65 20 63 72 65 66  ype is <see cref
2c910 3d 22 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65  ="SQLiteChangeSe
2c920 74 43 6f 6e 66 6c 69 63 74 54 79 70 65 2e 44 61  tConflictType.Da
2c930 74 61 22 20 2f 3e 20 6f 72 0d 0a 20 20 20 20 20  ta" /> or..     
2c940 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
2c950 3d 22 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65  ="SQLiteChangeSe
2c960 74 43 6f 6e 66 6c 69 63 74 54 79 70 65 2e 43 6f  tConflictType.Co
2c970 6e 66 6c 69 63 74 22 20 2f 3e 2e 0d 0a 20 20 20  nflict" />...   
2c980 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2c990 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
2c9a0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f   <param name="co
2c9b0 6c 75 6d 6e 49 6e 64 65 78 22 3e 0d 0a 20 20 20  lumnIndex">..   
2c9c0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 64       /// The ind
2c9d0 65 78 20 66 6f 72 20 74 68 65 20 63 6f 6c 75 6d  ex for the colum
2c9e0 6e 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20 6d  n.  This value m
2c9f0 75 73 74 20 62 65 20 62 65 74 77 65 65 6e 20 7a  ust be between z
2ca00 65 72 6f 20 61 6e 64 20 6f 6e 65 0d 0a 20 20 20  ero and one..   
2ca10 20 20 20 20 20 2f 2f 2f 20 6c 65 73 73 20 74 68       /// less th
2ca20 61 6e 20 74 68 65 20 74 6f 74 61 6c 20 6e 75 6d  an the total num
2ca30 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 66  ber of columns f
2ca40 6f 72 20 74 68 69 73 20 74 61 62 6c 65 2e 0d 0a  or this table...
2ca50 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2ca60 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
2ca70 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
2ca80 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e       /// The con
2ca90 66 6c 69 63 74 69 6e 67 20 76 61 6c 75 65 20 6f  flicting value o
2caa0 66 20 61 20 67 69 76 65 6e 20 63 6f 6c 75 6d 6e  f a given column
2cab0 20 66 6f 72 20 74 68 69 73 20 63 68 61 6e 67 65   for this change
2cac0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2cad0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
2cae0 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
2caf0 56 61 6c 75 65 20 47 65 74 43 6f 6e 66 6c 69 63  Value GetConflic
2cb00 74 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20  tValue(..       
2cb10 20 20 20 20 20 69 6e 74 20 63 6f 6c 75 6d 6e 49       int columnI
2cb20 6e 64 65 78 0d 0a 20 20 20 20 20 20 20 20 20 20  ndex..          
2cb30 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
2cb40 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63              Chec
2cb50 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 20 20  kDisposed();..  
2cb60 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 49            CheckI
2cb70 74 65 72 61 74 6f 72 28 29 3b 0d 0a 0d 0a 20 20  terator();....  
2cb80 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
2cb90 20 70 56 61 6c 75 65 20 3d 20 49 6e 74 50 74 72   pValue = IntPtr
2cba0 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20  .Zero;....      
2cbb0 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f        SQLiteErro
2cbc0 72 43 6f 64 65 20 72 63 20 3d 20 55 6e 73 61 66  rCode rc = Unsaf
2cbd0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
2cbe0 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f  qlite3changeset_
2cbf0 63 6f 6e 66 6c 69 63 74 28 0d 0a 20 20 20 20 20  conflict(..     
2cc00 20 20 20 20 20 20 20 20 20 20 20 69 74 65 72 61             itera
2cc10 74 6f 72 2e 47 65 74 49 6e 74 50 74 72 28 29 2c  tor.GetIntPtr(),
2cc20 20 63 6f 6c 75 6d 6e 49 6e 64 65 78 2c 20 72 65   columnIndex, re
2cc30 66 20 70 56 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  f pValue);....  
2cc40 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2cc50 20 53 51 4c 69 74 65 56 61 6c 75 65 2e 46 72 6f   SQLiteValue.Fro
2cc60 6d 49 6e 74 50 74 72 28 70 56 61 6c 75 65 29 3b  mIntPtr(pValue);
2cc70 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
2cc80 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
2cc90 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2cca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ccb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ccc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ccd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cce0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
2ccf0 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c  egion IDisposabl
2cd00 65 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20  e Members..     
2cd10 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2cd20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 69  ..        /// Di
2cd30 73 70 6f 73 65 73 20 6f 66 20 74 68 69 73 20 6f  sposes of this o
2cd40 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d  bject instance..
2cd50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
2cd60 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2cd70 20 70 75 62 6c 69 63 20 76 6f 69 64 20 44 69 73   public void Dis
2cd80 70 6f 73 65 28 29 0d 0a 20 20 20 20 20 20 20 20  pose()..        
2cd90 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 44  {..            D
2cda0 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20  ispose(true);.. 
2cdb0 20 20 20 20 20 20 20 20 20 20 20 47 43 2e 53 75             GC.Su
2cdc0 70 70 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74  ppressFinalize(t
2cdd0 68 69 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  his);..        }
2cde0 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
2cdf0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
2ce00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ce10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ce20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ce30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ce40 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2ce50 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73 70     #region IDisp
2ce60 6f 73 61 62 6c 65 20 22 50 61 74 74 65 72 6e 22  osable "Pattern"
2ce70 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20   Members..      
2ce80 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2ce90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  .        /// Non
2cea0 2d 7a 65 72 6f 20 69 66 20 74 68 69 73 20 6f 62  -zero if this ob
2ceb0 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 68 61  ject instance ha
2cec0 73 20 62 65 65 6e 20 64 69 73 70 6f 73 65 64 2e  s been disposed.
2ced0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
2cee0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2cef0 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 64    private bool d
2cf00 69 73 70 6f 73 65 64 3b 0d 0a 0d 0a 20 20 20 20  isposed;....    
2cf10 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2cf20 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
2cf30 68 72 6f 77 73 20 61 6e 20 65 78 63 65 70 74 69  hrows an excepti
2cf40 6f 6e 20 69 66 20 74 68 69 73 20 6f 62 6a 65 63  on if this objec
2cf50 74 20 69 6e 73 74 61 6e 63 65 20 68 61 73 20 62  t instance has b
2cf60 65 65 6e 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20  een disposed... 
2cf70 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
2cf80 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
2cf90 72 69 76 61 74 65 20 76 6f 69 64 20 43 68 65 63  rivate void Chec
2cfa0 6b 44 69 73 70 6f 73 65 64 28 29 20 2f 2a 20 74  kDisposed() /* t
2cfb0 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
2cfc0 20 7b 0d 0a 23 69 66 20 54 48 52 4f 57 5f 4f 4e   {..#if THROW_ON
2cfd0 5f 44 49 53 50 4f 53 45 44 0d 0a 20 20 20 20 20  _DISPOSED..     
2cfe0 20 20 20 20 20 20 20 69 66 20 28 64 69 73 70 6f         if (dispo
2cff0 73 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20  sed)..          
2d000 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2d010 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4f       throw new O
2d020 62 6a 65 63 74 44 69 73 70 6f 73 65 64 45 78 63  bjectDisposedExc
2d030 65 70 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20  eption(..       
2d040 20 20 20 20 20 20 20 20 20 20 20 20 20 74 79 70               typ
2d050 65 6f 66 28 53 51 4c 69 74 65 43 68 61 6e 67 65  eof(SQLiteChange
2d060 53 65 74 4d 65 74 61 64 61 74 61 49 74 65 6d 29  SetMetadataItem)
2d070 2e 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20  .Name);..       
2d080 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
2d090 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2d0a0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2d0b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d0c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d0d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2d0f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
2d100 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
2d110 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 72 20 66  // Disposes or f
2d120 69 6e 61 6c 69 7a 65 73 20 74 68 69 73 20 6f 62  inalizes this ob
2d130 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a  ject instance...
2d140 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
2d150 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2d160 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2d170 22 64 69 73 70 6f 73 69 6e 67 22 3e 0d 0a 20 20  "disposing">..  
2d180 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
2d190 72 6f 20 69 66 20 74 68 69 73 20 6f 62 6a 65 63  ro if this objec
2d1a0 74 20 69 73 20 62 65 69 6e 67 20 64 69 73 70 6f  t is being dispo
2d1b0 73 65 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 20  sed; otherwise, 
2d1c0 74 68 69 73 20 6f 62 6a 65 63 74 0d 0a 20 20 20  this object..   
2d1d0 20 20 20 20 20 2f 2f 2f 20 69 73 20 62 65 69 6e       /// is bein
2d1e0 67 20 66 69 6e 61 6c 69 7a 65 64 2e 0d 0a 20 20  g finalized...  
2d1f0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
2d200 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  m>..        priv
2d210 61 74 65 20 2f 2a 20 70 72 6f 74 65 63 74 65 64  ate /* protected
2d220 20 76 69 72 74 75 61 6c 20 2a 2f 20 76 6f 69 64   virtual */ void
2d230 20 44 69 73 70 6f 73 65 28 62 6f 6f 6c 20 64 69   Dispose(bool di
2d240 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20 20  sposing)..      
2d250 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2d260 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
2d270 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2d280 20 20 20 20 20 69 66 20 28 21 64 69 73 70 6f 73       if (!dispos
2d290 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ed)..           
2d2a0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2d2b0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2d2c0 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20  disposing)..    
2d2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d2e0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2d2f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
2d300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2d320 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d330 20 20 20 20 20 20 20 20 20 2f 2f 20 64 69 73 70           // disp
2d340 6f 73 65 20 6d 61 6e 61 67 65 64 20 72 65 73 6f  ose managed reso
2d350 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20  urces here..... 
2d360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d370 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2d380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2d3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d3b0 20 20 20 20 20 20 20 69 66 20 28 69 74 65 72 61         if (itera
2d3c0 74 6f 72 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  tor != null)..  
2d3d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d3e0 20 20 20 20 20 20 20 20 20 20 69 74 65 72 61 74            iterat
2d3f0 6f 72 20 3d 20 6e 75 6c 6c 3b 20 2f 2a 20 4e 4f  or = null; /* NO
2d400 54 20 4f 57 4e 45 44 20 2a 2f 0d 0a 20 20 20 20  T OWNED */..    
2d410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d420 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
2d430 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
2d440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2d460 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d470 20 20 20 20 20 2f 2f 20 72 65 6c 65 61 73 65 20       // release 
2d480 75 6e 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72  unmanaged resour
2d490 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20  ces here.....   
2d4a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d4b0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2d4c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d4d0 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20  ///////..       
2d4e0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2d4f0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2d500 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a         finally..
2d510 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2d520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2d530 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2d540 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 45 76 65 72     // NOTE: Ever
2d550 79 74 68 69 6e 67 20 73 68 6f 75 6c 64 20 62 65  ything should be
2d560 20 66 75 6c 6c 79 20 64 69 73 70 6f 73 65 64 20   fully disposed 
2d570 61 74 20 74 68 69 73 20 70 6f 69 6e 74 2e 0d 0a  at this point...
2d580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d590 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
2d5a0 20 20 20 20 64 69 73 70 6f 73 65 64 20 3d 20 74      disposed = t
2d5b0 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
2d5c0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
2d5d0 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
2d5e0 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
2d5f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d630 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2d640 20 23 72 65 67 69 6f 6e 20 44 65 73 74 72 75 63   #region Destruc
2d650 74 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  tor..        ///
2d660 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2d670 20 20 20 20 2f 2f 2f 20 46 69 6e 61 6c 69 7a 65      /// Finalize
2d680 73 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e  s this object in
2d690 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20  stance...       
2d6a0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2d6b0 0a 20 20 20 20 20 20 20 20 7e 53 51 4c 69 74 65  .        ~SQLite
2d6c0 43 68 61 6e 67 65 53 65 74 4d 65 74 61 64 61 74  ChangeSetMetadat
2d6d0 61 49 74 65 6d 28 29 0d 0a 20 20 20 20 20 20 20  aItem()..       
2d6e0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2d6f0 44 69 73 70 6f 73 65 28 66 61 6c 73 65 29 3b 0d  Dispose(false);.
2d700 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
2d710 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
2d720 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
2d730 65 67 69 6f 6e 0d 0a 7d 0d 0a                    egion..}..