System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 9340f17f5e1cd0c804da5e703960e9dfd0e688c0:


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 52 6f   * Written by Ro
0080: 62 65 72 74 20 53 69 6d 70 73 6f 6e 20 28 72 6f  bert Simpson (ro
0090: 62 65 72 74 40 62 6c 61 63 6b 63 61 73 74 6c 65  bert@blackcastle
00a0: 73 6f 66 74 2e 63 6f 6d 29 0d 0a 20 2a 0d 0a 20  soft.com).. *.. 
00b0: 2a 20 52 65 6c 65 61 73 65 64 20 74 6f 20 74 68  * Released to th
00c0: 65 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e 2c  e public domain,
00d0: 20 75 73 65 20 61 74 20 79 6f 75 72 20 6f 77 6e   use at your own
00e0: 20 72 69 73 6b 21 0d 0a 20 2a 2a 2a 2a 2a 2a 2a   risk!.. *******
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 2a 2a 2a 2a 2a 2a 2a  ****************
0120: 2a 2f 0d 0a 0d 0a 6e 61 6d 65 73 70 61 63 65 20  */....namespace 
0130: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
0140: 74 65 0d 0a 7b 0d 0a 20 20 75 73 69 6e 67 20 53  te..{..  using S
0150: 79 73 74 65 6d 3b 0d 0a 0d 0a 23 69 66 20 21 4e  ystem;....#if !N
0160: 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
0170: 20 54 52 41 43 45 5f 57 41 52 4e 49 4e 47 0d 0a   TRACE_WARNING..
0180: 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 44    using System.D
0190: 69 61 67 6e 6f 73 74 69 63 73 3b 0d 0a 23 65 6e  iagnostics;..#en
01a0: 64 69 66 0d 0a 0d 0a 20 20 75 73 69 6e 67 20 53  dif....  using S
01b0: 79 73 74 65 6d 2e 52 75 6e 74 69 6d 65 2e 49 6e  ystem.Runtime.In
01c0: 74 65 72 6f 70 53 65 72 76 69 63 65 73 3b 0d 0a  teropServices;..
01d0: 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 43    using System.C
01e0: 6f 6c 6c 65 63 74 69 6f 6e 73 2e 47 65 6e 65 72  ollections.Gener
01f0: 69 63 3b 0d 0a 20 20 75 73 69 6e 67 20 53 79 73  ic;..  using Sys
0200: 74 65 6d 2e 47 6c 6f 62 61 6c 69 7a 61 74 69 6f  tem.Globalizatio
0210: 6e 3b 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 74  n;..  using Syst
0220: 65 6d 2e 54 65 78 74 3b 0d 0a 0d 0a 20 20 2f 2f  em.Text;....  //
0230: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f  / <summary>..  /
0240: 2f 2f 20 54 68 69 73 20 62 61 73 65 20 63 6c 61  // This base cla
0250: 73 73 20 70 72 6f 76 69 64 65 73 20 64 61 74 61  ss provides data
0260: 74 79 70 65 20 63 6f 6e 76 65 72 73 69 6f 6e 20  type conversion 
0270: 73 65 72 76 69 63 65 73 20 66 6f 72 20 74 68 65  services for the
0280: 20 53 51 4c 69 74 65 20 70 72 6f 76 69 64 65 72   SQLite provider
0290: 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  ...  /// </summa
02a0: 72 79 3e 0d 0a 20 20 70 75 62 6c 69 63 20 61 62  ry>..  public ab
02b0: 73 74 72 61 63 74 20 63 6c 61 73 73 20 53 51 4c  stract class SQL
02c0: 69 74 65 43 6f 6e 76 65 72 74 0d 0a 20 20 7b 0d  iteConvert..  {.
02d0: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
02e0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  y>..    /// The 
02f0: 66 61 6c 6c 62 61 63 6b 20 64 65 66 61 75 6c 74  fallback default
0300: 20 64 61 74 61 62 61 73 65 20 74 79 70 65 20 77   database type w
0310: 68 65 6e 20 6f 6e 65 20 63 61 6e 6e 6f 74 20 62  hen one cannot b
0320: 65 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20  e obtained from 
0330: 61 6e 0d 0a 20 20 20 20 2f 2f 2f 20 65 78 69 73  an..    /// exis
0340: 74 69 6e 67 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  ting connection 
0350: 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f  instance...    /
0360: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
0370: 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74     private const
0380: 20 44 62 54 79 70 65 20 46 61 6c 6c 62 61 63 6b   DbType Fallback
0390: 44 65 66 61 75 6c 74 44 62 54 79 70 65 20 3d 20  DefaultDbType = 
03a0: 44 62 54 79 70 65 2e 4f 62 6a 65 63 74 3b 0d 0a  DbType.Object;..
03b0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
03c0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
03d0: 20 66 61 6c 6c 62 61 63 6b 20 64 65 66 61 75 6c   fallback defaul
03e0: 74 20 64 61 74 61 62 61 73 65 20 74 79 70 65 20  t database type 
03f0: 6e 61 6d 65 20 77 68 65 6e 20 6f 6e 65 20 63 61  name when one ca
0400: 6e 6e 6f 74 20 62 65 20 6f 62 74 61 69 6e 65 64  nnot be obtained
0410: 20 66 72 6f 6d 0d 0a 20 20 20 20 2f 2f 2f 20 61   from..    /// a
0420: 6e 20 65 78 69 73 74 69 6e 67 20 63 6f 6e 6e 65  n existing conne
0430: 63 74 69 6f 6e 20 69 6e 73 74 61 6e 63 65 2e 0d  ction instance..
0440: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
0450: 72 79 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65  ry>..    private
0460: 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79   static readonly
0470: 20 73 74 72 69 6e 67 20 46 61 6c 6c 62 61 63 6b   string Fallback
0480: 44 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 20  DefaultTypeName 
0490: 3d 20 53 74 72 69 6e 67 2e 45 6d 70 74 79 3b 0d  = String.Empty;.
04a0: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
04b0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
04c0: 65 20 76 61 6c 75 65 20 66 6f 72 20 74 68 65 20  e value for the 
04d0: 55 6e 69 78 20 65 70 6f 63 68 20 28 65 2e 67 2e  Unix epoch (e.g.
04e0: 20 4a 61 6e 75 61 72 79 20 31 2c 20 31 39 37 30   January 1, 1970
04f0: 20 61 74 20 6d 69 64 6e 69 67 68 74 2c 20 69 6e   at midnight, in
0500: 20 55 54 43 29 2e 0d 0a 20 20 20 20 2f 2f 2f 20   UTC)...    /// 
0510: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
0520: 70 72 6f 74 65 63 74 65 64 20 73 74 61 74 69 63  protected static
0530: 20 72 65 61 64 6f 6e 6c 79 20 44 61 74 65 54 69   readonly DateTi
0540: 6d 65 20 55 6e 69 78 45 70 6f 63 68 20 3d 0d 0a  me UnixEpoch =..
0550: 20 20 20 20 20 20 20 20 6e 65 77 20 44 61 74 65          new Date
0560: 54 69 6d 65 28 31 39 37 30 2c 20 31 2c 20 31 2c  Time(1970, 1, 1,
0570: 20 30 2c 20 30 2c 20 30 2c 20 44 61 74 65 54 69   0, 0, 0, DateTi
0580: 6d 65 4b 69 6e 64 2e 55 74 63 29 3b 0d 0a 0d 0a  meKind.Utc);....
0590: 20 20 20 20 23 70 72 61 67 6d 61 20 77 61 72 6e      #pragma warn
05a0: 69 6e 67 20 64 69 73 61 62 6c 65 20 34 31 34 0d  ing disable 414.
05b0: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
05c0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  y>..    /// The 
05d0: 76 61 6c 75 65 20 6f 66 20 74 68 65 20 4f 4c 45  value of the OLE
05e0: 20 41 75 74 6f 6d 61 74 69 6f 6e 20 65 70 6f 63   Automation epoc
05f0: 68 20 72 65 70 72 65 73 65 6e 74 65 64 20 61 73  h represented as
0600: 20 61 20 4a 75 6c 69 61 6e 20 64 61 79 2e 20 20   a Julian day.  
0610: 54 68 69 73 0d 0a 20 20 20 20 2f 2f 2f 20 66 69  This..    /// fi
0620: 65 6c 64 20 63 61 6e 6e 6f 74 20 62 65 20 72 65  eld cannot be re
0630: 6d 6f 76 65 64 20 61 73 20 74 68 65 20 74 65 73  moved as the tes
0640: 74 20 73 75 69 74 65 20 72 65 6c 69 65 73 20 75  t suite relies u
0650: 70 6f 6e 20 69 74 2e 0d 0a 20 20 20 20 2f 2f 2f  pon it...    ///
0660: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
0670: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
0680: 72 65 61 64 6f 6e 6c 79 20 64 6f 75 62 6c 65 20  readonly double 
0690: 4f 6c 65 41 75 74 6f 6d 61 74 69 6f 6e 45 70 6f  OleAutomationEpo
06a0: 63 68 41 73 4a 75 6c 69 61 6e 44 61 79 20 3d 20  chAsJulianDay = 
06b0: 32 34 31 35 30 31 38 2e 35 3b 0d 0a 20 20 20 20  2415018.5;..    
06c0: 23 70 72 61 67 6d 61 20 77 61 72 6e 69 6e 67 20  #pragma warning 
06d0: 72 65 73 74 6f 72 65 20 34 31 34 0d 0a 0d 0a 20  restore 414.... 
06e0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
06f0: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6f  ..    /// The fo
0700: 72 6d 61 74 20 73 74 72 69 6e 67 20 66 6f 72 20  rmat string for 
0710: 44 61 74 65 54 69 6d 65 20 76 61 6c 75 65 73 20  DateTime values 
0720: 77 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20 49  when using the I
0730: 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 20  nvariantCulture 
0740: 6f 72 20 43 75 72 72 65 6e 74 43 75 6c 74 75 72  or CurrentCultur
0750: 65 20 66 6f 72 6d 61 74 73 2e 0d 0a 20 20 20 20  e formats...    
0760: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
0770: 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73      private cons
0780: 74 20 73 74 72 69 6e 67 20 46 75 6c 6c 46 6f 72  t string FullFor
0790: 6d 61 74 20 3d 20 22 79 79 79 79 2d 4d 4d 2d 64  mat = "yyyy-MM-d
07a0: 64 54 48 48 3a 6d 6d 3a 73 73 2e 66 66 66 66 66  dTHH:mm:ss.fffff
07b0: 66 66 4b 22 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  ffK";....    ///
07c0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
07d0: 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20  /// This is the 
07e0: 6d 69 6e 69 6d 75 6d 20 4a 75 6c 69 61 6e 20 44  minimum Julian D
07f0: 61 79 20 76 61 6c 75 65 20 73 75 70 70 6f 72 74  ay value support
0800: 65 64 20 62 79 20 74 68 69 73 20 6c 69 62 72 61  ed by this libra
0810: 72 79 0d 0a 20 20 20 20 2f 2f 2f 20 28 31 34 38  ry..    /// (148
0820: 37 33 31 31 36 33 32 30 30 30 30 30 29 2e 0d 0a  731163200000)...
0830: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
0840: 79 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20  y>..    private 
0850: 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20  static readonly 
0860: 6c 6f 6e 67 20 4d 69 6e 69 6d 75 6d 4a 64 20 3d  long MinimumJd =
0870: 20 63 6f 6d 70 75 74 65 4a 44 28 44 61 74 65 54   computeJD(DateT
0880: 69 6d 65 2e 4d 69 6e 56 61 6c 75 65 29 3b 0d 0a  ime.MinValue);..
0890: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
08a0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69  ry>..    /// Thi
08b0: 73 20 69 73 20 74 68 65 20 6d 61 78 69 6d 75 6d  s is the maximum
08c0: 20 4a 75 6c 69 61 6e 20 44 61 79 20 76 61 6c 75   Julian Day valu
08d0: 65 20 73 75 70 70 6f 72 74 65 64 20 62 79 20 74  e supported by t
08e0: 68 69 73 20 6c 69 62 72 61 72 79 0d 0a 20 20 20  his library..   
08f0: 20 2f 2f 2f 20 28 34 36 34 32 36 39 30 36 30 37   /// (4642690607
0900: 39 39 30 30 30 29 2e 0d 0a 20 20 20 20 2f 2f 2f  99000)...    ///
0910: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
0920: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
0930: 72 65 61 64 6f 6e 6c 79 20 6c 6f 6e 67 20 4d 61  readonly long Ma
0940: 78 69 6d 75 6d 4a 64 20 3d 20 63 6f 6d 70 75 74  ximumJd = comput
0950: 65 4a 44 28 44 61 74 65 54 69 6d 65 2e 4d 61 78  eJD(DateTime.Max
0960: 56 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 2f  Value);....    /
0970: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
0980: 20 20 2f 2f 2f 20 41 6e 20 61 72 72 61 79 20 6f    /// An array o
0990: 66 20 49 53 4f 2d 38 36 30 31 20 44 61 74 65 54  f ISO-8601 DateT
09a0: 69 6d 65 20 66 6f 72 6d 61 74 73 20 74 68 61 74  ime formats that
09b0: 20 77 65 20 73 75 70 70 6f 72 74 20 70 61 72 73   we support pars
09c0: 69 6e 67 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ing...    /// </
09d0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 72  summary>..    pr
09e0: 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72  ivate static str
09f0: 69 6e 67 5b 5d 20 5f 64 61 74 65 74 69 6d 65 46  ing[] _datetimeF
0a00: 6f 72 6d 61 74 73 20 3d 20 6e 65 77 20 73 74 72  ormats = new str
0a10: 69 6e 67 5b 5d 20 7b 0d 0a 20 20 20 20 20 20 22  ing[] {..      "
0a20: 54 48 48 6d 6d 73 73 4b 22 2c 0d 0a 20 20 20 20  THHmmssK",..    
0a30: 20 20 22 54 48 48 6d 6d 4b 22 2c 0d 0a 20 20 20    "THHmmK",..   
0a40: 20 20 20 22 48 48 3a 6d 6d 3a 73 73 2e 46 46 46     "HH:mm:ss.FFF
0a50: 46 46 46 46 4b 22 2c 0d 0a 20 20 20 20 20 20 22  FFFFK",..      "
0a60: 48 48 3a 6d 6d 3a 73 73 4b 22 2c 0d 0a 20 20 20  HH:mm:ssK",..   
0a70: 20 20 20 22 48 48 3a 6d 6d 4b 22 2c 0d 0a 20 20     "HH:mmK",..  
0a80: 20 20 20 20 22 79 79 79 79 2d 4d 4d 2d 64 64 20      "yyyy-MM-dd 
0a90: 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46  HH:mm:ss.FFFFFFF
0aa0: 4b 22 2c 20 2f 2a 20 4e 4f 54 45 3a 20 55 54 43  K", /* NOTE: UTC
0ab0: 20 64 65 66 61 75 6c 74 20 28 35 29 2e 20 2a 2f   default (5). */
0ac0: 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d 4d 4d  ..      "yyyy-MM
0ad0: 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 4b 22 2c 0d  -dd HH:mm:ssK",.
0ae0: 0a 20 20 20 20 20 20 22 79 79 79 79 2d 4d 4d 2d  .      "yyyy-MM-
0af0: 64 64 20 48 48 3a 6d 6d 4b 22 2c 0d 0a 20 20 20  dd HH:mmK",..   
0b00: 20 20 20 22 79 79 79 79 2d 4d 4d 2d 64 64 54 48     "yyyy-MM-ddTH
0b10: 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 4b  H:mm:ss.FFFFFFFK
0b20: 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d  ",..      "yyyy-
0b30: 4d 4d 2d 64 64 54 48 48 3a 6d 6d 4b 22 2c 0d 0a  MM-ddTHH:mmK",..
0b40: 20 20 20 20 20 20 22 79 79 79 79 2d 4d 4d 2d 64        "yyyy-MM-d
0b50: 64 54 48 48 3a 6d 6d 3a 73 73 4b 22 2c 0d 0a 20  dTHH:mm:ssK",.. 
0b60: 20 20 20 20 20 22 79 79 79 79 4d 4d 64 64 48 48       "yyyyMMddHH
0b70: 6d 6d 73 73 4b 22 2c 0d 0a 20 20 20 20 20 20 22  mmssK",..      "
0b80: 79 79 79 79 4d 4d 64 64 48 48 6d 6d 4b 22 2c 0d  yyyyMMddHHmmK",.
0b90: 0a 20 20 20 20 20 20 22 79 79 79 79 4d 4d 64 64  .      "yyyyMMdd
0ba0: 54 48 48 6d 6d 73 73 46 46 46 46 46 46 46 4b 22  THHmmssFFFFFFFK"
0bb0: 2c 0d 0a 20 20 20 20 20 20 22 54 48 48 6d 6d 73  ,..      "THHmms
0bc0: 73 22 2c 0d 0a 20 20 20 20 20 20 22 54 48 48 6d  s",..      "THHm
0bd0: 6d 22 2c 0d 0a 20 20 20 20 20 20 22 48 48 3a 6d  m",..      "HH:m
0be0: 6d 3a 73 73 2e 46 46 46 46 46 46 46 22 2c 0d 0a  m:ss.FFFFFFF",..
0bf0: 20 20 20 20 20 20 22 48 48 3a 6d 6d 3a 73 73 22        "HH:mm:ss"
0c00: 2c 0d 0a 20 20 20 20 20 20 22 48 48 3a 6d 6d 22  ,..      "HH:mm"
0c10: 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d 4d  ,..      "yyyy-M
0c20: 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 2e 46 46  M-dd HH:mm:ss.FF
0c30: 46 46 46 46 46 22 2c 20 2f 2a 20 4e 4f 54 45 3a  FFFFF", /* NOTE:
0c40: 20 4e 6f 6e 2d 55 54 43 20 64 65 66 61 75 6c 74   Non-UTC default
0c50: 20 28 31 39 29 2e 20 2a 2f 0d 0a 20 20 20 20 20   (19). */..     
0c60: 20 22 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a   "yyyy-MM-dd HH:
0c70: 6d 6d 3a 73 73 22 2c 0d 0a 20 20 20 20 20 20 22  mm:ss",..      "
0c80: 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d  yyyy-MM-dd HH:mm
0c90: 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d  ",..      "yyyy-
0ca0: 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 2e 46  MM-ddTHH:mm:ss.F
0cb0: 46 46 46 46 46 46 22 2c 0d 0a 20 20 20 20 20 20  FFFFFF",..      
0cc0: 22 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d  "yyyy-MM-ddTHH:m
0cd0: 6d 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79  m",..      "yyyy
0ce0: 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 22  -MM-ddTHH:mm:ss"
0cf0: 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 4d 4d  ,..      "yyyyMM
0d00: 64 64 48 48 6d 6d 73 73 22 2c 0d 0a 20 20 20 20  ddHHmmss",..    
0d10: 20 20 22 79 79 79 79 4d 4d 64 64 48 48 6d 6d 22    "yyyyMMddHHmm"
0d20: 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 4d 4d  ,..      "yyyyMM
0d30: 64 64 54 48 48 6d 6d 73 73 46 46 46 46 46 46 46  ddTHHmmssFFFFFFF
0d40: 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d  ",..      "yyyy-
0d50: 4d 4d 2d 64 64 22 2c 0d 0a 20 20 20 20 20 20 22  MM-dd",..      "
0d60: 79 79 79 79 4d 4d 64 64 22 2c 0d 0a 20 20 20 20  yyyyMMdd",..    
0d70: 20 20 22 79 79 2d 4d 4d 2d 64 64 22 0d 0a 20 20    "yy-MM-dd"..  
0d80: 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20    };....    /// 
0d90: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
0da0: 2f 2f 20 54 68 65 20 69 6e 74 65 72 6e 61 6c 20  // The internal 
0db0: 64 65 66 61 75 6c 74 20 66 6f 72 6d 61 74 20 66  default format f
0dc0: 6f 72 20 55 54 43 20 44 61 74 65 54 69 6d 65 20  or UTC DateTime 
0dd0: 76 61 6c 75 65 73 20 77 68 65 6e 20 63 6f 6e 76  values when conv
0de0: 65 72 74 69 6e 67 0d 0a 20 20 20 20 2f 2f 2f 20  erting..    /// 
0df0: 74 6f 20 61 20 73 74 72 69 6e 67 2e 0d 0a 20 20  to a string...  
0e00: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
0e10: 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74  ..    private st
0e20: 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74  atic readonly st
0e30: 72 69 6e 67 20 5f 64 61 74 65 74 69 6d 65 46 6f  ring _datetimeFo
0e40: 72 6d 61 74 55 74 63 20 3d 20 5f 64 61 74 65 74  rmatUtc = _datet
0e50: 69 6d 65 46 6f 72 6d 61 74 73 5b 35 5d 3b 0d 0a  imeFormats[5];..
0e60: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
0e70: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
0e80: 20 69 6e 74 65 72 6e 61 6c 20 64 65 66 61 75 6c   internal defaul
0e90: 74 20 66 6f 72 6d 61 74 20 66 6f 72 20 6c 6f 63  t format for loc
0ea0: 61 6c 20 44 61 74 65 54 69 6d 65 20 76 61 6c 75  al DateTime valu
0eb0: 65 73 20 77 68 65 6e 20 63 6f 6e 76 65 72 74 69  es when converti
0ec0: 6e 67 0d 0a 20 20 20 20 2f 2f 2f 20 74 6f 20 61  ng..    /// to a
0ed0: 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 2f 2f   string...    //
0ee0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
0ef0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
0f00: 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67   readonly string
0f10: 20 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74   _datetimeFormat
0f20: 4c 6f 63 61 6c 20 3d 20 5f 64 61 74 65 74 69 6d  Local = _datetim
0f30: 65 46 6f 72 6d 61 74 73 5b 31 39 5d 3b 0d 0a 0d  eFormats[19];...
0f40: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
0f50: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 6e 20 55  y>..    /// An U
0f60: 54 46 2d 38 20 45 6e 63 6f 64 69 6e 67 20 69 6e  TF-8 Encoding in
0f70: 73 74 61 6e 63 65 2c 20 73 6f 20 77 65 20 63 61  stance, so we ca
0f80: 6e 20 63 6f 6e 76 65 72 74 20 73 74 72 69 6e 67  n convert string
0f90: 73 20 74 6f 20 61 6e 64 20 66 72 6f 6d 20 55 54  s to and from UT
0fa0: 46 2d 38 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  F-8..    /// </s
0fb0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 72 69  ummary>..    pri
0fc0: 76 61 74 65 20 73 74 61 74 69 63 20 45 6e 63 6f  vate static Enco
0fd0: 64 69 6e 67 20 5f 75 74 66 38 20 3d 20 6e 65 77  ding _utf8 = new
0fe0: 20 55 54 46 38 45 6e 63 6f 64 69 6e 67 28 29 3b   UTF8Encoding();
0ff0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
1000: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
1010: 20 64 65 66 61 75 6c 74 20 44 61 74 65 54 69 6d   default DateTim
1020: 65 20 66 6f 72 6d 61 74 20 66 6f 72 20 74 68 69  e format for thi
1030: 73 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  s instance...   
1040: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1050: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51  .    internal SQ
1060: 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73 20  LiteDateFormats 
1070: 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 3b  _datetimeFormat;
1080: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
1090: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
10a0: 20 64 65 66 61 75 6c 74 20 44 61 74 65 54 69 6d   default DateTim
10b0: 65 4b 69 6e 64 20 66 6f 72 20 74 68 69 73 20 69  eKind for this i
10c0: 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f 2f  nstance...    //
10d0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
10e0: 20 20 69 6e 74 65 72 6e 61 6c 20 44 61 74 65 54    internal DateT
10f0: 69 6d 65 4b 69 6e 64 20 5f 64 61 74 65 74 69 6d  imeKind _datetim
1100: 65 4b 69 6e 64 3b 0d 0a 20 20 20 20 2f 2f 2f 20  eKind;..    /// 
1110: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
1120: 2f 2f 20 54 68 65 20 64 65 66 61 75 6c 74 20 44  // The default D
1130: 61 74 65 54 69 6d 65 20 66 6f 72 6d 61 74 20 73  ateTime format s
1140: 74 72 69 6e 67 20 66 6f 72 20 74 68 69 73 20 69  tring for this i
1150: 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f 2f  nstance...    //
1160: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1170: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 69 6e    internal strin
1180: 67 20 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61  g _datetimeForma
1190: 74 53 74 72 69 6e 67 20 3d 20 6e 75 6c 6c 3b 0d  tString = null;.
11a0: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
11b0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 6e 69 74  y>..    /// Init
11c0: 69 61 6c 69 7a 65 73 20 74 68 65 20 63 6f 6e 76  ializes the conv
11d0: 65 72 73 69 6f 6e 20 63 6c 61 73 73 0d 0a 20 20  ersion class..  
11e0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
11f0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
1200: 20 6e 61 6d 65 3d 22 66 6d 74 22 3e 54 68 65 20   name="fmt">The 
1210: 64 65 66 61 75 6c 74 20 64 61 74 65 2f 74 69 6d  default date/tim
1220: 65 20 66 6f 72 6d 61 74 20 74 6f 20 75 73 65 20  e format to use 
1230: 66 6f 72 20 74 68 69 73 20 69 6e 73 74 61 6e 63  for this instanc
1240: 65 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  e</param>..    /
1250: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1260: 6b 69 6e 64 22 3e 54 68 65 20 44 61 74 65 54 69  kind">The DateTi
1270: 6d 65 4b 69 6e 64 20 74 6f 20 75 73 65 2e 3c 2f  meKind to use.</
1280: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
1290: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6d 74  <param name="fmt
12a0: 53 74 72 69 6e 67 22 3e 54 68 65 20 44 61 74 65  String">The Date
12b0: 54 69 6d 65 20 66 6f 72 6d 61 74 20 73 74 72 69  Time format stri
12c0: 6e 67 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72 61  ng to use.</para
12d0: 6d 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  m>..    internal
12e0: 20 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 28 0d   SQLiteConvert(.
12f0: 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 44  .        SQLiteD
1300: 61 74 65 46 6f 72 6d 61 74 73 20 66 6d 74 2c 0d  ateFormats fmt,.
1310: 0a 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d  .        DateTim
1320: 65 4b 69 6e 64 20 6b 69 6e 64 2c 0d 0a 20 20 20  eKind kind,..   
1330: 20 20 20 20 20 73 74 72 69 6e 67 20 66 6d 74 53       string fmtS
1340: 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 29  tring..        )
1350: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 5f  ..    {..      _
1360: 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 20 3d  datetimeFormat =
1370: 20 66 6d 74 3b 0d 0a 20 20 20 20 20 20 5f 64 61   fmt;..      _da
1380: 74 65 74 69 6d 65 4b 69 6e 64 20 3d 20 6b 69 6e  tetimeKind = kin
1390: 64 3b 0d 0a 20 20 20 20 20 20 5f 64 61 74 65 74  d;..      _datet
13a0: 69 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 20  imeFormatString 
13b0: 3d 20 66 6d 74 53 74 72 69 6e 67 3b 0d 0a 20 20  = fmtString;..  
13c0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69    }....    #regi
13d0: 6f 6e 20 55 54 46 2d 38 20 43 6f 6e 76 65 72 73  on UTF-8 Convers
13e0: 69 6f 6e 20 46 75 6e 63 74 69 6f 6e 73 0d 0a 20  ion Functions.. 
13f0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1400: 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72  ..    /// Conver
1410: 74 73 20 61 20 73 74 72 69 6e 67 20 74 6f 20 61  ts a string to a
1420: 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 62   UTF-8 encoded b
1430: 79 74 65 20 61 72 72 61 79 20 73 69 7a 65 64 20  yte array sized 
1440: 74 6f 20 69 6e 63 6c 75 64 65 20 61 20 6e 75 6c  to include a nul
1450: 6c 2d 74 65 72 6d 69 6e 61 74 69 6e 67 20 63 68  l-terminating ch
1460: 61 72 61 63 74 65 72 2e 0d 0a 20 20 20 20 2f 2f  aracter...    //
1470: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1480: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1490: 65 3d 22 73 6f 75 72 63 65 54 65 78 74 22 3e 54  e="sourceText">T
14a0: 68 65 20 73 74 72 69 6e 67 20 74 6f 20 63 6f 6e  he string to con
14b0: 76 65 72 74 20 74 6f 20 55 54 46 2d 38 3c 2f 70  vert to UTF-8</p
14c0: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
14d0: 72 65 74 75 72 6e 73 3e 41 20 62 79 74 65 20 61  returns>A byte a
14e0: 72 72 61 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20  rray containing 
14f0: 74 68 65 20 63 6f 6e 76 65 72 74 65 64 20 73 74  the converted st
1500: 72 69 6e 67 20 70 6c 75 73 20 61 6e 20 65 78 74  ring plus an ext
1510: 72 61 20 30 20 74 65 72 6d 69 6e 61 74 69 6e 67  ra 0 terminating
1520: 20 62 79 74 65 20 61 74 20 74 68 65 20 65 6e 64   byte at the end
1530: 20 6f 66 20 74 68 65 20 61 72 72 61 79 2e 3c 2f   of the array.</
1540: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75  returns>..    pu
1550: 62 6c 69 63 20 73 74 61 74 69 63 20 62 79 74 65  blic static byte
1560: 5b 5d 20 54 6f 55 54 46 38 28 73 74 72 69 6e 67  [] ToUTF8(string
1570: 20 73 6f 75 72 63 65 54 65 78 74 29 0d 0a 20 20   sourceText)..  
1580: 20 20 7b 0d 0a 20 20 20 20 20 20 69 66 20 28 73    {..      if (s
1590: 6f 75 72 63 65 54 65 78 74 20 3d 3d 20 6e 75 6c  ourceText == nul
15a0: 6c 29 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d  l) return null;.
15b0: 0a 20 20 20 20 20 20 42 79 74 65 5b 5d 20 62 79  .      Byte[] by
15c0: 74 65 41 72 72 61 79 3b 0d 0a 20 20 20 20 20 20  teArray;..      
15d0: 69 6e 74 20 6e 6c 65 6e 20 3d 20 5f 75 74 66 38  int nlen = _utf8
15e0: 2e 47 65 74 42 79 74 65 43 6f 75 6e 74 28 73 6f  .GetByteCount(so
15f0: 75 72 63 65 54 65 78 74 29 20 2b 20 31 3b 0d 0a  urceText) + 1;..
1600: 0d 0a 20 20 20 20 20 20 62 79 74 65 41 72 72 61  ..      byteArra
1610: 79 20 3d 20 6e 65 77 20 62 79 74 65 5b 6e 6c 65  y = new byte[nle
1620: 6e 5d 3b 0d 0a 20 20 20 20 20 20 6e 6c 65 6e 20  n];..      nlen 
1630: 3d 20 5f 75 74 66 38 2e 47 65 74 42 79 74 65 73  = _utf8.GetBytes
1640: 28 73 6f 75 72 63 65 54 65 78 74 2c 20 30 2c 20  (sourceText, 0, 
1650: 73 6f 75 72 63 65 54 65 78 74 2e 4c 65 6e 67 74  sourceText.Lengt
1660: 68 2c 20 62 79 74 65 41 72 72 61 79 2c 20 30 29  h, byteArray, 0)
1670: 3b 0d 0a 20 20 20 20 20 20 62 79 74 65 41 72 72  ;..      byteArr
1680: 61 79 5b 6e 6c 65 6e 5d 20 3d 20 30 3b 0d 0a 0d  ay[nlen] = 0;...
1690: 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 79  .      return by
16a0: 74 65 41 72 72 61 79 3b 0d 0a 20 20 20 20 7d 0d  teArray;..    }.
16b0: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
16c0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f  ary>..    /// Co
16d0: 6e 76 65 72 74 20 61 20 44 61 74 65 54 69 6d 65  nvert a DateTime
16e0: 20 74 6f 20 61 20 55 54 46 2d 38 20 65 6e 63 6f   to a UTF-8 enco
16f0: 64 65 64 2c 20 7a 65 72 6f 2d 74 65 72 6d 69 6e  ded, zero-termin
1700: 61 74 65 64 20 62 79 74 65 20 61 72 72 61 79 2e  ated byte array.
1710: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
1720: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ary>..    /// <r
1730: 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f  emarks>..    ///
1740: 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69   This function i
1750: 73 20 61 20 63 6f 6e 76 65 6e 69 65 6e 63 65 20  s a convenience 
1760: 66 75 6e 63 74 69 6f 6e 2c 20 77 68 69 63 68 20  function, which 
1770: 66 69 72 73 74 20 63 61 6c 6c 73 20 54 6f 53 74  first calls ToSt
1780: 72 69 6e 67 28 29 20 6f 6e 20 74 68 65 20 44 61  ring() on the Da
1790: 74 65 54 69 6d 65 2c 20 61 6e 64 20 74 68 65 6e  teTime, and then
17a0: 20 63 61 6c 6c 73 20 54 6f 55 54 46 38 28 29 20   calls ToUTF8() 
17b0: 77 69 74 68 20 74 68 65 0d 0a 20 20 20 20 2f 2f  with the..    //
17c0: 2f 20 73 74 72 69 6e 67 20 72 65 73 75 6c 74 2e  / string result.
17d0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61  ..    /// </rema
17e0: 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  rks>..    /// <p
17f0: 61 72 61 6d 20 6e 61 6d 65 3d 22 64 61 74 65 54  aram name="dateT
1800: 69 6d 65 56 61 6c 75 65 22 3e 54 68 65 20 44 61  imeValue">The Da
1810: 74 65 54 69 6d 65 20 74 6f 20 63 6f 6e 76 65 72  teTime to conver
1820: 74 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  t.</param>..    
1830: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65  /// <returns>The
1840: 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 73   UTF-8 encoded s
1850: 74 72 69 6e 67 2c 20 69 6e 63 6c 75 64 69 6e 67  tring, including
1860: 20 61 20 30 20 74 65 72 6d 69 6e 61 74 69 6e 67   a 0 terminating
1870: 20 62 79 74 65 20 61 74 20 74 68 65 20 65 6e 64   byte at the end
1880: 20 6f 66 20 74 68 65 20 61 72 72 61 79 2e 3c 2f   of the array.</
1890: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75  returns>..    pu
18a0: 62 6c 69 63 20 62 79 74 65 5b 5d 20 54 6f 55 54  blic byte[] ToUT
18b0: 46 38 28 44 61 74 65 54 69 6d 65 20 64 61 74 65  F8(DateTime date
18c0: 54 69 6d 65 56 61 6c 75 65 29 0d 0a 20 20 20 20  TimeValue)..    
18d0: 7b 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  {..      return 
18e0: 54 6f 55 54 46 38 28 54 6f 53 74 72 69 6e 67 28  ToUTF8(ToString(
18f0: 64 61 74 65 54 69 6d 65 56 61 6c 75 65 29 29 3b  dateTimeValue));
1900: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
1910: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1920: 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61    /// Converts a
1930: 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 49   UTF-8 encoded I
1940: 6e 74 50 74 72 20 6f 66 20 74 68 65 20 73 70 65  ntPtr of the spe
1950: 63 69 66 69 65 64 20 6c 65 6e 67 74 68 20 69 6e  cified length in
1960: 74 6f 20 61 20 2e 4e 45 54 20 73 74 72 69 6e 67  to a .NET string
1970: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
1980: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
1990: 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 74 69 76  aram name="nativ
19a0: 65 73 74 72 69 6e 67 22 3e 54 68 65 20 70 6f 69  estring">The poi
19b0: 6e 74 65 72 20 74 6f 20 74 68 65 20 6d 65 6d 6f  nter to the memo
19c0: 72 79 20 77 68 65 72 65 20 74 68 65 20 55 54 46  ry where the UTF
19d0: 2d 38 20 73 74 72 69 6e 67 20 69 73 20 65 6e 63  -8 string is enc
19e0: 6f 64 65 64 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  oded</param>..  
19f0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1a00: 65 3d 22 6e 61 74 69 76 65 73 74 72 69 6e 67 6c  e="nativestringl
1a10: 65 6e 22 3e 54 68 65 20 6e 75 6d 62 65 72 20 6f  en">The number o
1a20: 66 20 62 79 74 65 73 20 74 6f 20 64 65 63 6f 64  f bytes to decod
1a30: 65 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  e</param>..    /
1a40: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 41 20 73 74  // <returns>A st
1a50: 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20  ring containing 
1a60: 74 68 65 20 74 72 61 6e 73 6c 61 74 65 64 20 63  the translated c
1a70: 68 61 72 61 63 74 65 72 28 73 29 3c 2f 72 65 74  haracter(s)</ret
1a80: 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69  urns>..    publi
1a90: 63 20 76 69 72 74 75 61 6c 20 73 74 72 69 6e 67  c virtual string
1aa0: 20 54 6f 53 74 72 69 6e 67 28 49 6e 74 50 74 72   ToString(IntPtr
1ab0: 20 6e 61 74 69 76 65 73 74 72 69 6e 67 2c 20 69   nativestring, i
1ac0: 6e 74 20 6e 61 74 69 76 65 73 74 72 69 6e 67 6c  nt nativestringl
1ad0: 65 6e 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  en)..    {..    
1ae0: 20 20 72 65 74 75 72 6e 20 55 54 46 38 54 6f 53    return UTF8ToS
1af0: 74 72 69 6e 67 28 6e 61 74 69 76 65 73 74 72 69  tring(nativestri
1b00: 6e 67 2c 20 6e 61 74 69 76 65 73 74 72 69 6e 67  ng, nativestring
1b10: 6c 65 6e 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  len);..    }....
1b20: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1b30: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65  >..    /// Conve
1b40: 72 74 73 20 61 20 55 54 46 2d 38 20 65 6e 63 6f  rts a UTF-8 enco
1b50: 64 65 64 20 49 6e 74 50 74 72 20 6f 66 20 74 68  ded IntPtr of th
1b60: 65 20 73 70 65 63 69 66 69 65 64 20 6c 65 6e 67  e specified leng
1b70: 74 68 20 69 6e 74 6f 20 61 20 2e 4e 45 54 20 73  th into a .NET s
1b80: 74 72 69 6e 67 0d 0a 20 20 20 20 2f 2f 2f 20 3c  tring..    /// <
1b90: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
1ba0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1bb0: 6e 61 74 69 76 65 73 74 72 69 6e 67 22 3e 54 68  nativestring">Th
1bc0: 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
1bd0: 20 6d 65 6d 6f 72 79 20 77 68 65 72 65 20 74 68   memory where th
1be0: 65 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20 69  e UTF-8 string i
1bf0: 73 20 65 6e 63 6f 64 65 64 3c 2f 70 61 72 61 6d  s encoded</param
1c00: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
1c10: 6d 20 6e 61 6d 65 3d 22 6e 61 74 69 76 65 73 74  m name="nativest
1c20: 72 69 6e 67 6c 65 6e 22 3e 54 68 65 20 6e 75 6d  ringlen">The num
1c30: 62 65 72 20 6f 66 20 62 79 74 65 73 20 74 6f 20  ber of bytes to 
1c40: 64 65 63 6f 64 65 3c 2f 70 61 72 61 6d 3e 0d 0a  decode</param>..
1c50: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
1c60: 3e 41 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69  >A string contai
1c70: 6e 69 6e 67 20 74 68 65 20 74 72 61 6e 73 6c 61  ning the transla
1c80: 74 65 64 20 63 68 61 72 61 63 74 65 72 28 73 29  ted character(s)
1c90: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
1ca0: 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73 74  public static st
1cb0: 72 69 6e 67 20 55 54 46 38 54 6f 53 74 72 69 6e  ring UTF8ToStrin
1cc0: 67 28 49 6e 74 50 74 72 20 6e 61 74 69 76 65 73  g(IntPtr natives
1cd0: 74 72 69 6e 67 2c 20 69 6e 74 20 6e 61 74 69 76  tring, int nativ
1ce0: 65 73 74 72 69 6e 67 6c 65 6e 29 0d 0a 20 20 20  estringlen)..   
1cf0: 20 7b 0d 0a 20 20 20 20 20 20 69 66 20 28 6e 61   {..      if (na
1d00: 74 69 76 65 73 74 72 69 6e 67 20 3d 3d 20 49 6e  tivestring == In
1d10: 74 50 74 72 2e 5a 65 72 6f 20 7c 7c 20 6e 61 74  tPtr.Zero || nat
1d20: 69 76 65 73 74 72 69 6e 67 6c 65 6e 20 3d 3d 20  ivestringlen == 
1d30: 30 29 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67  0) return String
1d40: 2e 45 6d 70 74 79 3b 0d 0a 20 20 20 20 20 20 69  .Empty;..      i
1d50: 66 20 28 6e 61 74 69 76 65 73 74 72 69 6e 67 6c  f (nativestringl
1d60: 65 6e 20 3c 20 30 29 0d 0a 20 20 20 20 20 20 7b  en < 0)..      {
1d70: 0d 0a 20 20 20 20 20 20 20 20 6e 61 74 69 76 65  ..        native
1d80: 73 74 72 69 6e 67 6c 65 6e 20 3d 20 30 3b 0d 0a  stringlen = 0;..
1d90: 0d 0a 20 20 20 20 20 20 20 20 77 68 69 6c 65 20  ..        while 
1da0: 28 4d 61 72 73 68 61 6c 2e 52 65 61 64 42 79 74  (Marshal.ReadByt
1db0: 65 28 6e 61 74 69 76 65 73 74 72 69 6e 67 2c 20  e(nativestring, 
1dc0: 6e 61 74 69 76 65 73 74 72 69 6e 67 6c 65 6e 29  nativestringlen)
1dd0: 20 21 3d 20 30 29 0d 0a 20 20 20 20 20 20 20 20   != 0)..        
1de0: 20 20 6e 61 74 69 76 65 73 74 72 69 6e 67 6c 65    nativestringle
1df0: 6e 2b 2b 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  n++;....        
1e00: 69 66 20 28 6e 61 74 69 76 65 73 74 72 69 6e 67  if (nativestring
1e10: 6c 65 6e 20 3d 3d 20 30 29 20 72 65 74 75 72 6e  len == 0) return
1e20: 20 53 74 72 69 6e 67 2e 45 6d 70 74 79 3b 0d 0a   String.Empty;..
1e30: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1e40: 20 62 79 74 65 5b 5d 20 62 79 74 65 41 72 72 61   byte[] byteArra
1e50: 79 20 3d 20 6e 65 77 20 62 79 74 65 5b 6e 61 74  y = new byte[nat
1e60: 69 76 65 73 74 72 69 6e 67 6c 65 6e 5d 3b 0d 0a  ivestringlen];..
1e70: 0d 0a 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e  ..      Marshal.
1e80: 43 6f 70 79 28 6e 61 74 69 76 65 73 74 72 69 6e  Copy(nativestrin
1e90: 67 2c 20 62 79 74 65 41 72 72 61 79 2c 20 30 2c  g, byteArray, 0,
1ea0: 20 6e 61 74 69 76 65 73 74 72 69 6e 67 6c 65 6e   nativestringlen
1eb0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 72 65 74 75  );....      retu
1ec0: 72 6e 20 5f 75 74 66 38 2e 47 65 74 53 74 72 69  rn _utf8.GetStri
1ed0: 6e 67 28 62 79 74 65 41 72 72 61 79 2c 20 30 2c  ng(byteArray, 0,
1ee0: 20 6e 61 74 69 76 65 73 74 72 69 6e 67 6c 65 6e   nativestringlen
1ef0: 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  );..    }..    #
1f00: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
1f10: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1f60: 20 20 20 20 23 72 65 67 69 6f 6e 20 44 61 74 65      #region Date
1f70: 54 69 6d 65 20 43 6f 6e 76 65 72 73 69 6f 6e 20  Time Conversion 
1f80: 46 75 6e 63 74 69 6f 6e 73 0d 0a 20 20 20 20 23  Functions..    #
1f90: 72 65 67 69 6f 6e 20 4e 65 77 20 4a 75 6c 69 61  region New Julia
1fa0: 6e 20 44 61 79 20 43 6f 6e 76 65 72 73 69 6f 6e  n Day Conversion
1fb0: 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 2f 2f   Methods..    //
1fc0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1fd0: 20 2f 2f 2f 20 43 68 65 63 6b 73 20 69 66 20 74   /// Checks if t
1fe0: 68 65 20 73 70 65 63 69 66 69 65 64 20 3c 73 65  he specified <se
1ff0: 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f  e cref="Int64" /
2000: 3e 20 69 73 20 77 69 74 68 69 6e 20 74 68 65 0d  > is within the.
2010: 0a 20 20 20 20 2f 2f 2f 20 73 75 70 70 6f 72 74  .    /// support
2020: 65 64 20 72 61 6e 67 65 20 66 6f 72 20 61 20 4a  ed range for a J
2030: 75 6c 69 61 6e 20 44 61 79 20 76 61 6c 75 65 2e  ulian Day value.
2040: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
2050: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
2060: 61 72 61 6d 20 6e 61 6d 65 3d 22 6a 64 22 3e 0d  aram name="jd">.
2070: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 4a 75 6c  .    /// The Jul
2080: 69 61 6e 20 44 61 79 20 76 61 6c 75 65 20 74 6f  ian Day value to
2090: 20 63 68 65 63 6b 2e 0d 0a 20 20 20 20 2f 2f 2f   check...    ///
20a0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
20b0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
20c0: 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
20d0: 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  f the specified 
20e0: 4a 75 6c 69 61 6e 20 44 61 79 20 76 61 6c 75 65  Julian Day value
20f0: 20 69 73 20 69 6e 20 74 68 65 20 73 75 70 70 6f   is in the suppo
2100: 72 74 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 72 61  rted..    /// ra
2110: 6e 67 65 3b 20 6f 74 68 65 72 77 69 73 65 2c 20  nge; otherwise, 
2120: 7a 65 72 6f 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  zero...    /// <
2130: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70  /returns>..    p
2140: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f  rivate static bo
2150: 6f 6c 20 69 73 56 61 6c 69 64 4a 64 28 0d 0a 20  ol isValidJd(.. 
2160: 20 20 20 20 20 20 20 6c 6f 6e 67 20 6a 64 0d 0a         long jd..
2170: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b          )..    {
2180: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
2190: 20 28 28 6a 64 20 3e 3d 20 4d 69 6e 69 6d 75 6d   ((jd >= Minimum
21a0: 4a 64 29 20 26 26 20 28 6a 64 20 3c 3d 20 4d 61  Jd) && (jd <= Ma
21b0: 78 69 6d 75 6d 4a 64 29 29 3b 0d 0a 20 20 20 20  ximumJd));..    
21c0: 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  }....    ///////
21d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2210: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20  ////....    /// 
2220: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
2230: 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 4a 75  // Converts a Ju
2240: 6c 69 61 6e 20 44 61 79 20 76 61 6c 75 65 20 66  lian Day value f
2250: 72 6f 6d 20 61 20 3c 73 65 65 20 63 72 65 66 3d  rom a <see cref=
2260: 22 44 6f 75 62 6c 65 22 20 2f 3e 20 74 6f 20 61  "Double" /> to a
2270: 6e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  n..    /// <see 
2280: 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 2e  cref="Int64" />.
2290: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
22a0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
22b0: 61 72 61 6d 20 6e 61 6d 65 3d 22 6a 75 6c 69 61  aram name="julia
22c0: 6e 44 61 79 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  nDay">..    /// 
22d0: 54 68 65 20 4a 75 6c 69 61 6e 20 44 61 79 20 3c  The Julian Day <
22e0: 73 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65  see cref="Double
22f0: 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 63 6f  " /> value to co
2300: 6e 76 65 72 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20  nvert...    /// 
2310: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
2320: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
2330: 20 2f 2f 2f 20 54 68 65 20 72 65 73 75 6c 74 69   /// The resulti
2340: 6e 67 20 4a 75 6c 69 61 6e 20 44 61 79 20 3c 73  ng Julian Day <s
2350: 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20  ee cref="Int64" 
2360: 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f  /> value...    /
2370: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
2380: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
2390: 63 20 6c 6f 6e 67 20 44 6f 75 62 6c 65 54 6f 4a  c long DoubleToJ
23a0: 64 28 0d 0a 20 20 20 20 20 20 20 20 64 6f 75 62  d(..        doub
23b0: 6c 65 20 6a 75 6c 69 61 6e 44 61 79 0d 0a 20 20  le julianDay..  
23c0: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a        )..    {..
23d0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
23e0: 6c 6f 6e 67 29 4d 61 74 68 2e 52 6f 75 6e 64 28  long)Math.Round(
23f0: 6a 75 6c 69 61 6e 44 61 79 20 2a 20 38 36 34 30  julianDay * 8640
2400: 30 30 30 30 2e 30 29 3b 0d 0a 20 20 20 20 7d 0d  0000.0);..    }.
2410: 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
2420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2460: 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  //....    /// <s
2470: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
2480: 20 43 6f 6e 76 65 72 74 73 20 61 20 4a 75 6c 69   Converts a Juli
2490: 61 6e 20 44 61 79 20 76 61 6c 75 65 20 66 72 6f  an Day value fro
24a0: 6d 20 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22  m an <see cref="
24b0: 49 6e 74 36 34 22 20 2f 3e 20 74 6f 20 61 0d 0a  Int64" /> to a..
24c0: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
24d0: 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e 2e 0d 0a  f="Double" />...
24e0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
24f0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
2500: 61 6d 20 6e 61 6d 65 3d 22 6a 64 22 3e 0d 0a 20  am name="jd">.. 
2510: 20 20 20 2f 2f 2f 20 54 68 65 20 4a 75 6c 69 61     /// The Julia
2520: 6e 20 44 61 79 20 3c 73 65 65 20 63 72 65 66 3d  n Day <see cref=
2530: 22 49 6e 74 36 34 22 20 2f 3e 20 76 61 6c 75 65  "Int64" /> value
2540: 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20   to convert...  
2550: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2560: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
2570: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 72  >..    /// The r
2580: 65 73 75 6c 74 69 6e 67 20 4a 75 6c 69 61 6e 20  esulting Julian 
2590: 44 61 79 20 3c 73 65 65 20 63 72 65 66 3d 22 44  Day <see cref="D
25a0: 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65 2e  ouble" /> value.
25b0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75  ..    /// </retu
25c0: 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69 76 61 74  rns>..    privat
25d0: 65 20 73 74 61 74 69 63 20 64 6f 75 62 6c 65 20  e static double 
25e0: 4a 64 54 6f 44 6f 75 62 6c 65 28 0d 0a 20 20 20  JdToDouble(..   
25f0: 20 20 20 20 20 6c 6f 6e 67 20 6a 64 0d 0a 20 20       long jd..  
2600: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a        )..    {..
2610: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
2620: 64 6f 75 62 6c 65 29 28 6a 64 20 2f 20 38 36 34  double)(jd / 864
2630: 30 30 30 30 30 2e 30 29 3b 0d 0a 20 20 20 20 7d  00000.0);..    }
2640: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
2650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2690: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ///....    /// <
26a0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
26b0: 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 4a 75 6c  / Converts a Jul
26c0: 69 61 6e 20 44 61 79 20 76 61 6c 75 65 20 74 6f  ian Day value to
26d0: 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61   a <see cref="Da
26e0: 74 65 54 69 6d 65 22 20 2f 3e 2e 0d 0a 20 20 20  teTime" />...   
26f0: 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64   /// This method
2700: 20 77 61 73 20 74 72 61 6e 73 6c 61 74 65 64 20   was translated 
2710: 66 72 6f 6d 20 74 68 65 20 22 63 6f 6d 70 75 74  from the "comput
2720: 65 59 4d 44 22 20 66 75 6e 63 74 69 6f 6e 20 69  eYMD" function i
2730: 6e 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 22  n the..    /// "
2740: 64 61 74 65 2e 63 22 20 66 69 6c 65 20 62 65 6c  date.c" file bel
2750: 6f 6e 67 69 6e 67 20 74 6f 20 74 68 65 20 53 51  onging to the SQ
2760: 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
2770: 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  y...    /// </su
2780: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
2790: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6a 64 22  <param name="jd"
27a0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 4a  >..    /// The J
27b0: 75 6c 69 61 6e 20 44 61 79 20 76 61 6c 75 65 20  ulian Day value 
27c0: 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20  to convert...   
27d0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
27e0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
27f0: 6d 65 3d 22 62 61 64 56 61 6c 75 65 22 3e 0d 0a  me="badValue">..
2800: 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
2810: 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d 65 22   cref="DateTime"
2820: 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 72 65 74   /> value to ret
2830: 75 72 6e 20 69 6e 20 74 68 65 20 65 76 65 6e 74  urn in the event
2840: 20 74 68 61 74 20 74 68 65 0d 0a 20 20 20 20 2f   that the..    /
2850: 2f 2f 20 4a 75 6c 69 61 6e 20 44 61 79 20 69 73  // Julian Day is
2860: 20 6f 75 74 20 6f 66 20 74 68 65 20 73 75 70 70   out of the supp
2870: 6f 72 74 65 64 20 72 61 6e 67 65 2e 20 20 49 66  orted range.  If
2880: 20 74 68 69 73 20 76 61 6c 75 65 20 69 73 20 6e   this value is n
2890: 75 6c 6c 2c 0d 0a 20 20 20 20 2f 2f 2f 20 61 6e  ull,..    /// an
28a0: 20 65 78 63 65 70 74 69 6f 6e 20 77 69 6c 6c 20   exception will 
28b0: 62 65 20 74 68 72 6f 77 6e 20 69 6e 73 74 65 61  be thrown instea
28c0: 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  d...    /// </pa
28d0: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
28e0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f  eturns>..    ///
28f0: 20 41 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61   A <see cref="Da
2900: 74 65 54 69 6d 65 22 20 2f 3e 20 76 61 6c 75 65  teTime" /> value
2910: 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 20 74   that contains t
2920: 68 65 20 79 65 61 72 2c 20 6d 6f 6e 74 68 2c 20  he year, month, 
2930: 61 6e 64 0d 0a 20 20 20 20 2f 2f 2f 20 64 61 79  and..    /// day
2940: 20 76 61 6c 75 65 73 20 74 68 61 74 20 61 72 65   values that are
2950: 20 63 6c 6f 73 65 73 74 20 74 6f 20 74 68 65 20   closest to the 
2960: 73 70 65 63 69 66 69 65 64 20 4a 75 6c 69 61 6e  specified Julian
2970: 20 44 61 79 20 76 61 6c 75 65 2e 0d 0a 20 20 20   Day value...   
2980: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
2990: 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61  .    private sta
29a0: 74 69 63 20 44 61 74 65 54 69 6d 65 20 63 6f 6d  tic DateTime com
29b0: 70 75 74 65 59 4d 44 28 0d 0a 20 20 20 20 20 20  puteYMD(..      
29c0: 20 20 6c 6f 6e 67 20 6a 64 2c 0d 0a 20 20 20 20    long jd,..    
29d0: 20 20 20 20 44 61 74 65 54 69 6d 65 3f 20 62 61      DateTime? ba
29e0: 64 56 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20  dValue..        
29f0: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
2a00: 20 20 69 66 20 28 21 69 73 56 61 6c 69 64 4a 64    if (!isValidJd
2a10: 28 6a 64 29 29 0d 0a 20 20 20 20 20 20 20 20 7b  (jd))..        {
2a20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
2a30: 20 28 62 61 64 56 61 6c 75 65 20 3d 3d 20 6e 75   (badValue == nu
2a40: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
2a50: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2a60: 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72      throw new Ar
2a70: 67 75 6d 65 6e 74 45 78 63 65 70 74 69 6f 6e 28  gumentException(
2a80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a90: 20 20 20 20 20 20 22 4e 6f 74 20 61 20 73 75 70        "Not a sup
2aa0: 70 6f 72 74 65 64 20 4a 75 6c 69 61 6e 20 44 61  ported Julian Da
2ab0: 79 20 76 61 6c 75 65 2e 22 29 3b 0d 0a 20 20 20  y value.");..   
2ac0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2ad0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2ae0: 20 28 44 61 74 65 54 69 6d 65 29 62 61 64 56 61   (DateTime)badVa
2af0: 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  lue;..        }.
2b00: 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 5a  ...        int Z
2b10: 2c 20 41 2c 20 42 2c 20 43 2c 20 44 2c 20 45 2c  , A, B, C, D, E,
2b20: 20 58 31 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20   X1;....        
2b30: 5a 20 3d 20 28 69 6e 74 29 28 28 6a 64 20 2b 20  Z = (int)((jd + 
2b40: 34 33 32 30 30 30 30 30 29 20 2f 20 38 36 34 30  43200000) / 8640
2b50: 30 30 30 30 29 3b 0d 0a 20 20 20 20 20 20 20 20  0000);..        
2b60: 41 20 3d 20 28 69 6e 74 29 28 28 5a 20 2d 20 31  A = (int)((Z - 1
2b70: 38 36 37 32 31 36 2e 32 35 29 20 2f 20 33 36 35  867216.25) / 365
2b80: 32 34 2e 32 35 29 3b 0d 0a 20 20 20 20 20 20 20  24.25);..       
2b90: 20 41 20 3d 20 5a 20 2b 20 31 20 2b 20 41 20 2d   A = Z + 1 + A -
2ba0: 20 28 41 20 2f 20 34 29 3b 0d 0a 20 20 20 20 20   (A / 4);..     
2bb0: 20 20 20 42 20 3d 20 41 20 2b 20 31 35 32 34 3b     B = A + 1524;
2bc0: 0d 0a 20 20 20 20 20 20 20 20 43 20 3d 20 28 69  ..        C = (i
2bd0: 6e 74 29 28 28 42 20 2d 20 31 32 32 2e 31 29 20  nt)((B - 122.1) 
2be0: 2f 20 33 36 35 2e 32 35 29 3b 0d 0a 20 20 20 20  / 365.25);..    
2bf0: 20 20 20 20 44 20 3d 20 28 33 36 35 32 35 20 2a      D = (36525 *
2c00: 20 43 29 20 2f 20 31 30 30 3b 0d 0a 20 20 20 20   C) / 100;..    
2c10: 20 20 20 20 45 20 3d 20 28 69 6e 74 29 28 28 42      E = (int)((B
2c20: 20 2d 20 44 29 20 2f 20 33 30 2e 36 30 30 31 29   - D) / 30.6001)
2c30: 3b 0d 0a 20 20 20 20 20 20 20 20 58 31 20 3d 20  ;..        X1 = 
2c40: 28 69 6e 74 29 28 33 30 2e 36 30 30 31 20 2a 20  (int)(30.6001 * 
2c50: 45 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69  E);....        i
2c60: 6e 74 20 64 61 79 2c 20 6d 6f 6e 74 68 2c 20 79  nt day, month, y
2c70: 65 61 72 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ear;....        
2c80: 64 61 79 20 3d 20 42 20 2d 20 44 20 2d 20 58 31  day = B - D - X1
2c90: 3b 0d 0a 20 20 20 20 20 20 20 20 6d 6f 6e 74 68  ;..        month
2ca0: 20 3d 20 45 20 3c 20 31 34 20 3f 20 45 20 2d 20   = E < 14 ? E - 
2cb0: 31 20 3a 20 45 20 2d 20 31 33 3b 0d 0a 20 20 20  1 : E - 13;..   
2cc0: 20 20 20 20 20 79 65 61 72 20 3d 20 6d 6f 6e 74       year = mont
2cd0: 68 20 3e 20 32 20 3f 20 43 20 2d 20 34 37 31 36  h > 2 ? C - 4716
2ce0: 20 3a 20 43 20 2d 20 34 37 31 35 3b 0d 0a 0d 0a   : C - 4715;....
2cf0: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
2d00: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2d10: 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20 44      return new D
2d20: 61 74 65 54 69 6d 65 28 79 65 61 72 2c 20 6d 6f  ateTime(year, mo
2d30: 6e 74 68 2c 20 64 61 79 29 3b 0d 0a 20 20 20 20  nth, day);..    
2d40: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 63      }..        c
2d50: 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 7b 0d  atch..        {.
2d60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
2d70: 28 62 61 64 56 61 6c 75 65 20 3d 3d 20 6e 75 6c  (badValue == nul
2d80: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
2d90: 20 20 20 20 74 68 72 6f 77 3b 0d 0a 0d 0a 20 20      throw;....  
2da0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2db0: 20 28 44 61 74 65 54 69 6d 65 29 62 61 64 56 61   (DateTime)badVa
2dc0: 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  lue;..        }.
2dd0: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
2de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2e30: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2e40: 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73      /// Converts
2e50: 20 61 20 4a 75 6c 69 61 6e 20 44 61 79 20 76 61   a Julian Day va
2e60: 6c 75 65 20 74 6f 20 61 20 3c 73 65 65 20 63 72  lue to a <see cr
2e70: 65 66 3d 22 44 61 74 65 54 69 6d 65 22 20 2f 3e  ef="DateTime" />
2e80: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  ...    /// This 
2e90: 6d 65 74 68 6f 64 20 77 61 73 20 74 72 61 6e 73  method was trans
2ea0: 6c 61 74 65 64 20 66 72 6f 6d 20 74 68 65 20 22  lated from the "
2eb0: 63 6f 6d 70 75 74 65 48 4d 53 22 20 66 75 6e 63  computeHMS" func
2ec0: 74 69 6f 6e 20 69 6e 20 74 68 65 0d 0a 20 20 20  tion in the..   
2ed0: 20 2f 2f 2f 20 22 64 61 74 65 2e 63 22 20 66 69   /// "date.c" fi
2ee0: 6c 65 20 62 65 6c 6f 6e 67 69 6e 67 20 74 6f 20  le belonging to 
2ef0: 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
2f00: 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f  library...    //
2f10: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2f20: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2f30: 65 3d 22 6a 64 22 3e 0d 0a 20 20 20 20 2f 2f 2f  e="jd">..    ///
2f40: 20 54 68 65 20 4a 75 6c 69 61 6e 20 44 61 79 20   The Julian Day 
2f50: 76 61 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72 74  value to convert
2f60: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
2f70: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
2f80: 72 61 6d 20 6e 61 6d 65 3d 22 62 61 64 56 61 6c  ram name="badVal
2f90: 75 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ue">..    /// Th
2fa0: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74  e <see cref="Dat
2fb0: 65 54 69 6d 65 22 20 2f 3e 20 76 61 6c 75 65 20  eTime" /> value 
2fc0: 74 6f 20 72 65 74 75 72 6e 20 69 6e 20 74 68 65  to return in the
2fd0: 20 65 76 65 6e 74 20 74 68 61 74 20 74 68 65 0d   event that the.
2fe0: 0a 20 20 20 20 2f 2f 2f 20 4a 75 6c 69 61 6e 20  .    /// Julian 
2ff0: 44 61 79 20 76 61 6c 75 65 20 69 73 20 6f 75 74  Day value is out
3000: 20 6f 66 20 74 68 65 20 73 75 70 70 6f 72 74 65   of the supporte
3010: 64 20 72 61 6e 67 65 2e 20 20 49 66 20 74 68 69  d range.  If thi
3020: 73 20 76 61 6c 75 65 20 69 73 0d 0a 20 20 20 20  s value is..    
3030: 2f 2f 2f 20 6e 75 6c 6c 2c 20 61 6e 20 65 78 63  /// null, an exc
3040: 65 70 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 74  eption will be t
3050: 68 72 6f 77 6e 20 69 6e 73 74 65 61 64 2e 0d 0a  hrown instead...
3060: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
3070: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
3080: 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 20 3c  ns>..    /// A <
3090: 73 65 65 20 63 72 65 66 3d 22 44 61 74 65 54 69  see cref="DateTi
30a0: 6d 65 22 20 2f 3e 20 76 61 6c 75 65 20 74 68 61  me" /> value tha
30b0: 74 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 68  t contains the h
30c0: 6f 75 72 2c 20 6d 69 6e 75 74 65 2c 20 61 6e 64  our, minute, and
30d0: 0d 0a 20 20 20 20 2f 2f 2f 20 73 65 63 6f 6e 64  ..    /// second
30e0: 2c 20 61 6e 64 20 6d 69 6c 6c 69 73 65 63 6f 6e  , and millisecon
30f0: 64 20 76 61 6c 75 65 73 20 74 68 61 74 20 61 72  d values that ar
3100: 65 20 63 6c 6f 73 65 73 74 20 74 6f 20 74 68 65  e closest to the
3110: 20 73 70 65 63 69 66 69 65 64 0d 0a 20 20 20 20   specified..    
3120: 2f 2f 2f 20 4a 75 6c 69 61 6e 20 44 61 79 20 76  /// Julian Day v
3130: 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  alue...    /// <
3140: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70  /returns>..    p
3150: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 44 61  rivate static Da
3160: 74 65 54 69 6d 65 20 63 6f 6d 70 75 74 65 48 4d  teTime computeHM
3170: 53 28 0d 0a 20 20 20 20 20 20 20 20 6c 6f 6e 67  S(..        long
3180: 20 6a 64 2c 0d 0a 20 20 20 20 20 20 20 20 44 61   jd,..        Da
3190: 74 65 54 69 6d 65 3f 20 62 61 64 56 61 6c 75 65  teTime? badValue
31a0: 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20  ..        )..   
31b0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28   {..        if (
31c0: 21 69 73 56 61 6c 69 64 4a 64 28 6a 64 29 29 0d  !isValidJd(jd)).
31d0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
31e0: 20 20 20 20 20 20 20 20 69 66 20 28 62 61 64 56          if (badV
31f0: 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  alue == null).. 
3200: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
3210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
3220: 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74  row new Argument
3230: 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20 20  Exception(..    
3240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3250: 22 4e 6f 74 20 61 20 73 75 70 70 6f 72 74 65 64  "Not a supported
3260: 20 4a 75 6c 69 61 6e 20 44 61 79 20 76 61 6c 75   Julian Day valu
3270: 65 2e 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  e.");..         
3280: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
3290: 20 20 20 20 72 65 74 75 72 6e 20 28 44 61 74 65      return (Date
32a0: 54 69 6d 65 29 62 61 64 56 61 6c 75 65 3b 0d 0a  Time)badValue;..
32b0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
32c0: 20 20 20 20 20 69 6e 74 20 73 69 3b 0d 0a 0d 0a       int si;....
32d0: 20 20 20 20 20 20 20 20 73 69 20 3d 20 28 69 6e          si = (in
32e0: 74 29 28 28 6a 64 20 2b 20 34 33 32 30 30 30 30  t)((jd + 4320000
32f0: 30 29 20 25 20 38 36 34 30 30 30 30 30 29 3b 0d  0) % 86400000);.
3300: 0a 0d 0a 20 20 20 20 20 20 20 20 64 65 63 69 6d  ...        decim
3310: 61 6c 20 73 64 3b 0d 0a 0d 0a 20 20 20 20 20 20  al sd;....      
3320: 20 20 73 64 20 3d 20 73 69 20 2f 20 31 30 30 30    sd = si / 1000
3330: 2e 30 4d 3b 0d 0a 20 20 20 20 20 20 20 20 73 69  .0M;..        si
3340: 20 3d 20 28 69 6e 74 29 73 64 3b 0d 0a 0d 0a 20   = (int)sd;.... 
3350: 20 20 20 20 20 20 20 69 6e 74 20 6d 69 6c 6c 69         int milli
3360: 73 65 63 6f 6e 64 20 3d 20 28 69 6e 74 29 28 28  second = (int)((
3370: 73 64 20 2d 20 73 69 29 20 2a 20 31 30 30 30 2e  sd - si) * 1000.
3380: 30 4d 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  0M);....        
3390: 73 64 20 2d 3d 20 73 69 3b 0d 0a 0d 0a 20 20 20  sd -= si;....   
33a0: 20 20 20 20 20 69 6e 74 20 68 6f 75 72 3b 0d 0a       int hour;..
33b0: 0d 0a 20 20 20 20 20 20 20 20 68 6f 75 72 20 3d  ..        hour =
33c0: 20 73 69 20 2f 20 33 36 30 30 3b 0d 0a 20 20 20   si / 3600;..   
33d0: 20 20 20 20 20 73 69 20 2d 3d 20 68 6f 75 72 20       si -= hour 
33e0: 2a 20 33 36 30 30 3b 0d 0a 0d 0a 20 20 20 20 20  * 3600;....     
33f0: 20 20 20 69 6e 74 20 6d 69 6e 75 74 65 3b 0d 0a     int minute;..
3400: 0d 0a 20 20 20 20 20 20 20 20 6d 69 6e 75 74 65  ..        minute
3410: 20 3d 20 73 69 20 2f 20 36 30 3b 0d 0a 20 20 20   = si / 60;..   
3420: 20 20 20 20 20 73 64 20 2b 3d 20 73 69 20 2d 20       sd += si - 
3430: 6d 69 6e 75 74 65 20 2a 20 36 30 3b 0d 0a 0d 0a  minute * 60;....
3440: 20 20 20 20 20 20 20 20 69 6e 74 20 73 65 63 6f          int seco
3450: 6e 64 20 3d 20 28 69 6e 74 29 73 64 3b 0d 0a 0d  nd = (int)sd;...
3460: 0a 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20  .        try..  
3470: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
3480: 20 20 20 20 20 44 61 74 65 54 69 6d 65 20 6d 69       DateTime mi
3490: 6e 56 61 6c 75 65 20 3d 20 44 61 74 65 54 69 6d  nValue = DateTim
34a0: 65 2e 4d 69 6e 56 61 6c 75 65 3b 0d 0a 0d 0a 20  e.MinValue;.... 
34b0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
34c0: 6e 20 6e 65 77 20 44 61 74 65 54 69 6d 65 28 0d  n new DateTime(.
34d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
34e0: 20 6d 69 6e 56 61 6c 75 65 2e 59 65 61 72 2c 20   minValue.Year, 
34f0: 6d 69 6e 56 61 6c 75 65 2e 4d 6f 6e 74 68 2c 20  minValue.Month, 
3500: 6d 69 6e 56 61 6c 75 65 2e 44 61 79 2c 0d 0a 20  minValue.Day,.. 
3510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68                 h
3520: 6f 75 72 2c 20 6d 69 6e 75 74 65 2c 20 73 65 63  our, minute, sec
3530: 6f 6e 64 2c 20 6d 69 6c 6c 69 73 65 63 6f 6e 64  ond, millisecond
3540: 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
3550: 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
3560: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
3570: 20 20 20 20 20 69 66 20 28 62 61 64 56 61 6c 75       if (badValu
3580: 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
3590: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
35a0: 77 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  w;....          
35b0: 20 20 72 65 74 75 72 6e 20 28 44 61 74 65 54 69    return (DateTi
35c0: 6d 65 29 62 61 64 56 61 6c 75 65 3b 0d 0a 20 20  me)badValue;..  
35d0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a        }..    }..
35e0: 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
35f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3630: 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  /....    /// <su
3640: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
3650: 43 6f 6e 76 65 72 74 73 20 61 20 3c 73 65 65 20  Converts a <see 
3660: 63 72 65 66 3d 22 44 61 74 65 54 69 6d 65 22 20  cref="DateTime" 
3670: 2f 3e 20 74 6f 20 61 20 4a 75 6c 69 61 6e 20 44  /> to a Julian D
3680: 61 79 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f  ay value...    /
3690: 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 77  // This method w
36a0: 61 73 20 74 72 61 6e 73 6c 61 74 65 64 20 66 72  as translated fr
36b0: 6f 6d 20 74 68 65 20 22 63 6f 6d 70 75 74 65 4a  om the "computeJ
36c0: 44 22 20 66 75 6e 63 74 69 6f 6e 20 69 6e 0d 0a  D" function in..
36d0: 20 20 20 20 2f 2f 2f 20 74 68 65 20 22 64 61 74      /// the "dat
36e0: 65 2e 63 22 20 66 69 6c 65 20 62 65 6c 6f 6e 67  e.c" file belong
36f0: 69 6e 67 20 74 6f 20 74 68 65 20 53 51 4c 69 74  ing to the SQLit
3700: 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d  e core library..
3710: 0a 20 20 20 20 2f 2f 2f 20 53 69 6e 63 65 20 74  .    /// Since t
3720: 68 65 20 72 61 6e 67 65 20 6f 66 20 4a 75 6c 69  he range of Juli
3730: 61 6e 20 44 61 79 20 76 61 6c 75 65 73 20 73 75  an Day values su
3740: 70 70 6f 72 74 65 64 20 62 79 20 74 68 69 73 20  pported by this 
3750: 6d 65 74 68 6f 64 0d 0a 20 20 20 20 2f 2f 2f 20  method..    /// 
3760: 69 6e 63 6c 75 64 65 73 20 61 6c 6c 20 70 6f 73  includes all pos
3770: 73 69 62 6c 65 20 28 76 61 6c 69 64 29 20 76 61  sible (valid) va
3780: 6c 75 65 73 20 6f 66 20 61 20 3c 73 65 65 20 63  lues of a <see c
3790: 72 65 66 3d 22 44 61 74 65 54 69 6d 65 22 20 2f  ref="DateTime" /
37a0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65  >..    /// value
37b0: 2c 20 69 74 20 73 68 6f 75 6c 64 20 62 65 20 65  , it should be e
37c0: 78 74 72 65 6d 65 6c 79 20 64 69 66 66 69 63 75  xtremely difficu
37d0: 6c 74 20 66 6f 72 20 74 68 69 73 20 6d 65 74 68  lt for this meth
37e0: 6f 64 20 74 6f 0d 0a 20 20 20 20 2f 2f 2f 20 72  od to..    /// r
37f0: 61 69 73 65 20 61 6e 20 65 78 63 65 70 74 69 6f  aise an exceptio
3800: 6e 20 6f 72 20 72 65 74 75 72 6e 20 61 6e 20 75  n or return an u
3810: 6e 64 65 66 69 6e 65 64 20 72 65 73 75 6c 74 2e  ndefined result.
3820: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
3830: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
3840: 61 72 61 6d 20 6e 61 6d 65 3d 22 64 61 74 65 54  aram name="dateT
3850: 69 6d 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  ime">..    /// T
3860: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61  he <see cref="Da
3870: 74 65 54 69 6d 65 22 20 2f 3e 20 76 61 6c 75 65  teTime" /> value
3880: 20 74 6f 20 63 6f 6e 76 65 72 74 2e 20 20 54 68   to convert.  Th
3890: 69 73 20 76 61 6c 75 65 0d 0a 20 20 20 20 2f 2f  is value..    //
38a0: 2f 20 77 69 6c 6c 20 62 65 20 77 69 74 68 69 6e  / will be within
38b0: 20 74 68 65 20 72 61 6e 67 65 20 6f 66 20 3c 73   the range of <s
38c0: 65 65 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d  ee cref="DateTim
38d0: 65 2e 4d 69 6e 56 61 6c 75 65 22 20 2f 3e 0d 0a  e.MinValue" />..
38e0: 20 20 20 20 2f 2f 2f 20 28 30 30 3a 30 30 3a 30      /// (00:00:0
38f0: 30 2e 30 30 30 30 30 30 30 2c 20 4a 61 6e 75 61  0.0000000, Janua
3900: 72 79 20 31 2c 20 30 30 30 31 29 20 74 6f 0d 0a  ry 1, 0001) to..
3910: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
3920: 66 3d 22 44 61 74 65 54 69 6d 65 2e 4d 61 78 56  f="DateTime.MaxV
3930: 61 6c 75 65 22 20 2f 3e 20 28 32 33 3a 35 39 3a  alue" /> (23:59:
3940: 35 39 2e 39 39 39 39 39 39 39 2c 20 44 65 63 65  59.9999999, Dece
3950: 6d 62 65 72 0d 0a 20 20 20 20 2f 2f 2f 20 33 31  mber..    /// 31
3960: 2c 20 39 39 39 39 29 2e 0d 0a 20 20 20 20 2f 2f  , 9999)...    //
3970: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
3980: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
3990: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65 61 72 65     /// The neare
39a0: 73 74 20 4a 75 6c 69 61 6e 20 44 61 79 20 76 61  st Julian Day va
39b0: 6c 75 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e  lue correspondin
39c0: 67 20 74 6f 20 74 68 65 20 73 70 65 63 69 66 69  g to the specifi
39d0: 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65  ed..    /// <see
39e0: 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d 65 22   cref="DateTime"
39f0: 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20   /> value...    
3a00: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
3a10: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
3a20: 69 63 20 6c 6f 6e 67 20 63 6f 6d 70 75 74 65 4a  ic long computeJ
3a30: 44 28 0d 0a 20 20 20 20 20 20 20 20 44 61 74 65  D(..        Date
3a40: 54 69 6d 65 20 64 61 74 65 54 69 6d 65 0d 0a 20  Time dateTime.. 
3a50: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d         )..    {.
3a60: 0a 20 20 20 20 20 20 20 20 69 6e 74 20 59 2c 20  .        int Y, 
3a70: 4d 2c 20 44 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  M, D;....       
3a80: 20 59 20 3d 20 64 61 74 65 54 69 6d 65 2e 59 65   Y = dateTime.Ye
3a90: 61 72 3b 0d 0a 20 20 20 20 20 20 20 20 4d 20 3d  ar;..        M =
3aa0: 20 64 61 74 65 54 69 6d 65 2e 4d 6f 6e 74 68 3b   dateTime.Month;
3ab0: 0d 0a 20 20 20 20 20 20 20 20 44 20 3d 20 64 61  ..        D = da
3ac0: 74 65 54 69 6d 65 2e 44 61 79 3b 0d 0a 0d 0a 20  teTime.Day;.... 
3ad0: 20 20 20 20 20 20 20 69 66 20 28 4d 20 3c 3d 20         if (M <= 
3ae0: 32 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  2)..        {.. 
3af0: 20 20 20 20 20 20 20 20 20 20 20 59 2d 2d 3b 0d             Y--;.
3b00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d 20 2b  .            M +
3b10: 3d 20 31 32 3b 0d 0a 20 20 20 20 20 20 20 20 7d  = 12;..        }
3b20: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  ....        int 
3b30: 41 2c 20 42 2c 20 58 31 2c 20 58 32 3b 0d 0a 0d  A, B, X1, X2;...
3b40: 0a 20 20 20 20 20 20 20 20 41 20 3d 20 59 20 2f  .        A = Y /
3b50: 20 31 30 30 3b 0d 0a 20 20 20 20 20 20 20 20 42   100;..        B
3b60: 20 3d 20 32 20 2d 20 41 20 2b 20 28 41 20 2f 20   = 2 - A + (A / 
3b70: 34 29 3b 0d 0a 20 20 20 20 20 20 20 20 58 31 20  4);..        X1 
3b80: 3d 20 33 36 35 32 35 20 2a 20 28 59 20 2b 20 34  = 36525 * (Y + 4
3b90: 37 31 36 29 20 2f 20 31 30 30 3b 0d 0a 20 20 20  716) / 100;..   
3ba0: 20 20 20 20 20 58 32 20 3d 20 33 30 36 30 30 31       X2 = 306001
3bb0: 20 2a 20 28 4d 20 2b 20 31 29 20 2f 20 31 30 30   * (M + 1) / 100
3bc0: 30 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 6c  00;....        l
3bd0: 6f 6e 67 20 6a 64 3b 0d 0a 0d 0a 20 20 20 20 20  ong jd;....     
3be0: 20 20 20 6a 64 20 3d 20 28 6c 6f 6e 67 29 28 28     jd = (long)((
3bf0: 58 31 20 2b 20 58 32 20 2b 20 44 20 2b 20 42 20  X1 + X2 + D + B 
3c00: 2d 20 31 35 32 34 2e 35 29 20 2a 20 38 36 34 30  - 1524.5) * 8640
3c10: 30 30 30 30 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  0000);....      
3c20: 20 20 6a 64 20 2b 3d 20 28 64 61 74 65 54 69 6d    jd += (dateTim
3c30: 65 2e 48 6f 75 72 20 2a 20 33 36 30 30 30 30 30  e.Hour * 3600000
3c40: 29 20 2b 20 28 64 61 74 65 54 69 6d 65 2e 4d 69  ) + (dateTime.Mi
3c50: 6e 75 74 65 20 2a 20 36 30 30 30 30 29 20 2b 0d  nute * 60000) +.
3c60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 64 61  .            (da
3c70: 74 65 54 69 6d 65 2e 53 65 63 6f 6e 64 20 2a 20  teTime.Second * 
3c80: 31 30 30 30 29 20 2b 20 64 61 74 65 54 69 6d 65  1000) + dateTime
3c90: 2e 4d 69 6c 6c 69 73 65 63 6f 6e 64 3b 0d 0a 0d  .Millisecond;...
3ca0: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
3cb0: 6a 64 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  jd;..    }..    
3cc0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
3cd0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
3ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
3d20: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
3d30: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76  y>..    /// Conv
3d40: 65 72 74 73 20 61 20 73 74 72 69 6e 67 20 69 6e  erts a string in
3d50: 74 6f 20 61 20 44 61 74 65 54 69 6d 65 2c 20 75  to a DateTime, u
3d60: 73 69 6e 67 20 74 68 65 20 44 61 74 65 54 69 6d  sing the DateTim
3d70: 65 46 6f 72 6d 61 74 2c 20 44 61 74 65 54 69 6d  eFormat, DateTim
3d80: 65 4b 69 6e 64 2c 0d 0a 20 20 20 20 2f 2f 2f 20  eKind,..    /// 
3d90: 61 6e 64 20 44 61 74 65 54 69 6d 65 46 6f 72 6d  and DateTimeForm
3da0: 61 74 53 74 72 69 6e 67 20 73 70 65 63 69 66 69  atString specifi
3db0: 65 64 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e 65  ed for the conne
3dc0: 63 74 69 6f 6e 20 77 68 65 6e 20 69 74 20 77 61  ction when it wa
3dd0: 73 20 6f 70 65 6e 65 64 2e 0d 0a 20 20 20 20 2f  s opened...    /
3de0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
3df0: 20 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e     /// <remarks>
3e00: 0d 0a 20 20 20 20 2f 2f 2f 20 41 63 63 65 70 74  ..    /// Accept
3e10: 61 62 6c 65 20 49 53 4f 38 36 30 31 20 44 61 74  able ISO8601 Dat
3e20: 65 54 69 6d 65 20 66 6f 72 6d 61 74 73 20 61 72  eTime formats ar
3e30: 65 3a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 6c 69 73  e:..    /// <lis
3e40: 74 20 74 79 70 65 3d 22 62 75 6c 6c 65 74 22 3e  t type="bullet">
3e50: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
3e60: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 54 48 48  <description>THH
3e70: 6d 6d 73 73 4b 3c 2f 64 65 73 63 72 69 70 74 69  mmssK</descripti
3e80: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
3e90: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
3ea0: 69 70 74 69 6f 6e 3e 54 48 48 6d 6d 4b 3c 2f 64  iption>THHmmK</d
3eb0: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
3ec0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  m>..    /// <ite
3ed0: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48  m><description>H
3ee0: 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 4b  H:mm:ss.FFFFFFFK
3ef0: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
3f00: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
3f10: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
3f20: 6e 3e 48 48 3a 6d 6d 3a 73 73 4b 3c 2f 64 65 73  n>HH:mm:ssK</des
3f30: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
3f40: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
3f50: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 48 3a  <description>HH:
3f60: 6d 6d 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  mmK</description
3f70: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
3f80: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
3f90: 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20  tion>yyyy-MM-dd 
3fa0: 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46  HH:mm:ss.FFFFFFF
3fb0: 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  K</description><
3fc0: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
3fd0: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
3fe0: 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48  on>yyyy-MM-dd HH
3ff0: 3a 6d 6d 3a 73 73 4b 3c 2f 64 65 73 63 72 69 70  :mm:ssK</descrip
4000: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
4010: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
4020: 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d  cription>yyyy-MM
4030: 2d 64 64 20 48 48 3a 6d 6d 4b 3c 2f 64 65 73 63  -dd HH:mmK</desc
4040: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
4050: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
4060: 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79  description>yyyy
4070: 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 2e  -MM-ddTHH:mm:ss.
4080: 46 46 46 46 46 46 46 4b 3c 2f 64 65 73 63 72 69  FFFFFFFK</descri
4090: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
40a0: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
40b0: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d  scription>yyyy-M
40c0: 4d 2d 64 64 54 48 48 3a 6d 6d 4b 3c 2f 64 65 73  M-ddTHH:mmK</des
40d0: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
40e0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
40f0: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79  <description>yyy
4100: 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73  y-MM-ddTHH:mm:ss
4110: 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  K</description><
4120: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
4130: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
4140: 6f 6e 3e 79 79 79 79 4d 4d 64 64 48 48 6d 6d 73  on>yyyyMMddHHmms
4150: 73 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  sK</description>
4160: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
4170: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
4180: 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 48 48 6d 6d  ion>yyyyMMddHHmm
4190: 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  K</description><
41a0: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
41b0: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
41c0: 6f 6e 3e 79 79 79 79 4d 4d 64 64 54 48 48 6d 6d  on>yyyyMMddTHHmm
41d0: 73 73 46 46 46 46 46 46 46 4b 3c 2f 64 65 73 63  ssFFFFFFFK</desc
41e0: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
41f0: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
4200: 64 65 73 63 72 69 70 74 69 6f 6e 3e 54 48 48 6d  description>THHm
4210: 6d 73 73 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  mss</description
4220: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
4230: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
4240: 74 69 6f 6e 3e 54 48 48 6d 6d 3c 2f 64 65 73 63  tion>THHmm</desc
4250: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
4260: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
4270: 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 48 3a 6d  description>HH:m
4280: 6d 3a 73 73 2e 46 46 46 46 46 46 46 3c 2f 64 65  m:ss.FFFFFFF</de
4290: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
42a0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
42b0: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 48  ><description>HH
42c0: 3a 6d 6d 3a 73 73 3c 2f 64 65 73 63 72 69 70 74  :mm:ss</descript
42d0: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
42e0: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
42f0: 72 69 70 74 69 6f 6e 3e 48 48 3a 6d 6d 3c 2f 64  ription>HH:mm</d
4300: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
4310: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  m>..    /// <ite
4320: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79  m><description>y
4330: 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a  yyy-MM-dd HH:mm:
4340: 73 73 2e 46 46 46 46 46 46 46 3c 2f 64 65 73 63  ss.FFFFFFF</desc
4350: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
4360: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
4370: 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79  description>yyyy
4380: 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 3c  -MM-dd HH:mm:ss<
4390: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
43a0: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
43b0: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
43c0: 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d  >yyyy-MM-dd HH:m
43d0: 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  m</description><
43e0: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
43f0: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
4400: 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48  on>yyyy-MM-ddTHH
4410: 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 3c 2f  :mm:ss.FFFFFFF</
4420: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
4430: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
4440: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
4450: 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d  yyyy-MM-ddTHH:mm
4460: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
4470: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
4480: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
4490: 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a  n>yyyy-MM-ddTHH:
44a0: 6d 6d 3a 73 73 3c 2f 64 65 73 63 72 69 70 74 69  mm:ss</descripti
44b0: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
44c0: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
44d0: 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 48  iption>yyyyMMddH
44e0: 48 6d 6d 73 73 3c 2f 64 65 73 63 72 69 70 74 69  Hmmss</descripti
44f0: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
4500: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
4510: 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 48  iption>yyyyMMddH
4520: 48 6d 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  Hmm</description
4530: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
4540: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
4550: 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 54 48 48  tion>yyyyMMddTHH
4560: 6d 6d 73 73 46 46 46 46 46 46 46 3c 2f 64 65 73  mmssFFFFFFF</des
4570: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
4580: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
4590: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79  <description>yyy
45a0: 79 2d 4d 4d 2d 64 64 3c 2f 64 65 73 63 72 69 70  y-MM-dd</descrip
45b0: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
45c0: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
45d0: 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64  cription>yyyyMMd
45e0: 64 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  d</description><
45f0: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
4600: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
4610: 6f 6e 3e 79 79 2d 4d 4d 2d 64 64 3c 2f 64 65 73  on>yy-MM-dd</des
4620: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
4630: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 6c 69 73 74  ..    /// </list
4640: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20 74 68  >..    /// If th
4650: 65 20 73 74 72 69 6e 67 20 63 61 6e 6e 6f 74 20  e string cannot 
4660: 62 65 20 6d 61 74 63 68 65 64 20 74 6f 20 6f 6e  be matched to on
4670: 65 20 6f 66 20 74 68 65 20 61 62 6f 76 65 20 66  e of the above f
4680: 6f 72 6d 61 74 73 20 2d 4f 52 2d 0d 0a 20 20 20  ormats -OR-..   
4690: 20 2f 2f 2f 20 74 68 65 20 44 61 74 65 54 69 6d   /// the DateTim
46a0: 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 20 69 66  eFormatString if
46b0: 20 6f 6e 65 20 77 61 73 20 70 72 6f 76 69 64 65   one was provide
46c0: 64 2c 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 20  d, an exception 
46d0: 77 69 6c 6c 0d 0a 20 20 20 20 2f 2f 2f 20 62 65  will..    /// be
46e0: 20 74 68 72 6f 77 6e 2e 0d 0a 20 20 20 20 2f 2f   thrown...    //
46f0: 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20  / </remarks>..  
4700: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
4710: 65 3d 22 64 61 74 65 54 65 78 74 22 3e 54 68 65  e="dateText">The
4720: 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69   string containi
4730: 6e 67 20 65 69 74 68 65 72 20 61 20 6c 6f 6e 67  ng either a long
4740: 20 69 6e 74 65 67 65 72 20 6e 75 6d 62 65 72 20   integer number 
4750: 6f 66 20 31 30 30 2d 6e 61 6e 6f 73 65 63 6f 6e  of 100-nanosecon
4760: 64 20 75 6e 69 74 73 20 73 69 6e 63 65 0d 0a 20  d units since.. 
4770: 20 20 20 2f 2f 2f 20 53 79 73 74 65 6d 2e 44 61     /// System.Da
4780: 74 65 54 69 6d 65 2e 4d 69 6e 56 61 6c 75 65 2c  teTime.MinValue,
4790: 20 61 20 4a 75 6c 69 61 6e 20 64 61 79 20 64 6f   a Julian day do
47a0: 75 62 6c 65 2c 20 61 6e 20 69 6e 74 65 67 65 72  uble, an integer
47b0: 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 6f 6e   number of secon
47c0: 64 73 20 73 69 6e 63 65 20 74 68 65 20 55 6e 69  ds since the Uni
47d0: 78 20 65 70 6f 63 68 2c 20 61 0d 0a 20 20 20 20  x epoch, a..    
47e0: 2f 2f 2f 20 63 75 6c 74 75 72 65 2d 69 6e 64 65  /// culture-inde
47f0: 70 65 6e 64 65 6e 74 20 66 6f 72 6d 61 74 74 65  pendent formatte
4800: 64 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20  d date and time 
4810: 73 74 72 69 6e 67 2c 20 61 20 66 6f 72 6d 61 74  string, a format
4820: 74 65 64 20 64 61 74 65 20 61 6e 64 20 74 69 6d  ted date and tim
4830: 65 20 73 74 72 69 6e 67 20 69 6e 20 74 68 65 20  e string in the 
4840: 63 75 72 72 65 6e 74 0d 0a 20 20 20 20 2f 2f 2f  current..    ///
4850: 20 63 75 6c 74 75 72 65 2c 20 6f 72 20 61 6e 20   culture, or an 
4860: 49 53 4f 38 36 30 31 2d 66 6f 72 6d 61 74 20 73  ISO8601-format s
4870: 74 72 69 6e 67 2e 3c 2f 70 61 72 61 6d 3e 0d 0a  tring.</param>..
4880: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
4890: 3e 41 20 44 61 74 65 54 69 6d 65 20 76 61 6c 75  >A DateTime valu
48a0: 65 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  e</returns>..   
48b0: 20 70 75 62 6c 69 63 20 44 61 74 65 54 69 6d 65   public DateTime
48c0: 20 54 6f 44 61 74 65 54 69 6d 65 28 73 74 72 69   ToDateTime(stri
48d0: 6e 67 20 64 61 74 65 54 65 78 74 29 0d 0a 20 20  ng dateText)..  
48e0: 20 20 7b 0d 0a 20 20 20 20 20 20 72 65 74 75 72    {..      retur
48f0: 6e 20 54 6f 44 61 74 65 54 69 6d 65 28 64 61 74  n ToDateTime(dat
4900: 65 54 65 78 74 2c 20 5f 64 61 74 65 74 69 6d 65  eText, _datetime
4910: 46 6f 72 6d 61 74 2c 20 5f 64 61 74 65 74 69 6d  Format, _datetim
4920: 65 4b 69 6e 64 2c 20 5f 64 61 74 65 74 69 6d 65  eKind, _datetime
4930: 46 6f 72 6d 61 74 53 74 72 69 6e 67 29 3b 0d 0a  FormatString);..
4940: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
4950: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
4960: 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 73  /// Converts a s
4970: 74 72 69 6e 67 20 69 6e 74 6f 20 61 20 44 61 74  tring into a Dat
4980: 65 54 69 6d 65 2c 20 75 73 69 6e 67 20 74 68 65  eTime, using the
4990: 20 73 70 65 63 69 66 69 65 64 20 44 61 74 65 54   specified DateT
49a0: 69 6d 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20  imeFormat,..    
49b0: 2f 2f 2f 20 44 61 74 65 54 69 6d 65 4b 69 6e 64  /// DateTimeKind
49c0: 20 61 6e 64 20 44 61 74 65 54 69 6d 65 46 6f 72   and DateTimeFor
49d0: 6d 61 74 53 74 72 69 6e 67 2e 0d 0a 20 20 20 20  matString...    
49e0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
49f0: 20 20 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73      /// <remarks
4a00: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 63 63 65 70  >..    /// Accep
4a10: 74 61 62 6c 65 20 49 53 4f 38 36 30 31 20 44 61  table ISO8601 Da
4a20: 74 65 54 69 6d 65 20 66 6f 72 6d 61 74 73 20 61  teTime formats a
4a30: 72 65 3a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 6c 69  re:..    /// <li
4a40: 73 74 20 74 79 70 65 3d 22 62 75 6c 6c 65 74 22  st type="bullet"
4a50: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
4a60: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 54 48  ><description>TH
4a70: 48 6d 6d 73 73 4b 3c 2f 64 65 73 63 72 69 70 74  HmmssK</descript
4a80: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
4a90: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
4aa0: 72 69 70 74 69 6f 6e 3e 54 48 48 6d 6d 4b 3c 2f  ription>THHmmK</
4ab0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
4ac0: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
4ad0: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
4ae0: 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46  HH:mm:ss.FFFFFFF
4af0: 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  K</description><
4b00: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
4b10: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
4b20: 6f 6e 3e 48 48 3a 6d 6d 3a 73 73 4b 3c 2f 64 65  on>HH:mm:ssK</de
4b30: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
4b40: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
4b50: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 48  ><description>HH
4b60: 3a 6d 6d 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f  :mmK</descriptio
4b70: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
4b80: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
4b90: 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64  ption>yyyy-MM-dd
4ba0: 20 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46   HH:mm:ss.FFFFFF
4bb0: 46 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  FK</description>
4bc0: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
4bd0: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
4be0: 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48  ion>yyyy-MM-dd H
4bf0: 48 3a 6d 6d 3a 73 73 4b 3c 2f 64 65 73 63 72 69  H:mm:ssK</descri
4c00: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
4c10: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
4c20: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d  scription>yyyy-M
4c30: 4d 2d 64 64 20 48 48 3a 6d 6d 4b 3c 2f 64 65 73  M-dd HH:mmK</des
4c40: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
4c50: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
4c60: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79  <description>yyy
4c70: 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73  y-MM-ddTHH:mm:ss
4c80: 2e 46 46 46 46 46 46 46 4b 3c 2f 64 65 73 63 72  .FFFFFFFK</descr
4c90: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
4ca0: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
4cb0: 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d  escription>yyyy-
4cc0: 4d 4d 2d 64 64 54 48 48 3a 6d 6d 4b 3c 2f 64 65  MM-ddTHH:mmK</de
4cd0: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
4ce0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
4cf0: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79  ><description>yy
4d00: 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73  yy-MM-ddTHH:mm:s
4d10: 73 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  sK</description>
4d20: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
4d30: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
4d40: 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 48 48 6d 6d  ion>yyyyMMddHHmm
4d50: 73 73 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  ssK</description
4d60: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
4d70: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
4d80: 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 48 48 6d  tion>yyyyMMddHHm
4d90: 6d 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  mK</description>
4da0: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
4db0: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
4dc0: 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 54 48 48 6d  ion>yyyyMMddTHHm
4dd0: 6d 73 73 46 46 46 46 46 46 46 4b 3c 2f 64 65 73  mssFFFFFFFK</des
4de0: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
4df0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
4e00: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 54 48 48  <description>THH
4e10: 6d 6d 73 73 3c 2f 64 65 73 63 72 69 70 74 69 6f  mmss</descriptio
4e20: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
4e30: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
4e40: 70 74 69 6f 6e 3e 54 48 48 6d 6d 3c 2f 64 65 73  ption>THHmm</des
4e50: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
4e60: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
4e70: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 48 3a  <description>HH:
4e80: 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 3c 2f 64  mm:ss.FFFFFFF</d
4e90: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
4ea0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  m>..    /// <ite
4eb0: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48  m><description>H
4ec0: 48 3a 6d 6d 3a 73 73 3c 2f 64 65 73 63 72 69 70  H:mm:ss</descrip
4ed0: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
4ee0: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
4ef0: 63 72 69 70 74 69 6f 6e 3e 48 48 3a 6d 6d 3c 2f  cription>HH:mm</
4f00: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
4f10: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
4f20: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
4f30: 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d  yyyy-MM-dd HH:mm
4f40: 3a 73 73 2e 46 46 46 46 46 46 46 3c 2f 64 65 73  :ss.FFFFFFF</des
4f50: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
4f60: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
4f70: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79  <description>yyy
4f80: 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73  y-MM-dd HH:mm:ss
4f90: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
4fa0: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
4fb0: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
4fc0: 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a  n>yyyy-MM-dd HH:
4fd0: 6d 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  mm</description>
4fe0: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
4ff0: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
5000: 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48  ion>yyyy-MM-ddTH
5010: 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 3c  H:mm:ss.FFFFFFF<
5020: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
5030: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
5040: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
5050: 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d  >yyyy-MM-ddTHH:m
5060: 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  m</description><
5070: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
5080: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
5090: 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48  on>yyyy-MM-ddTHH
50a0: 3a 6d 6d 3a 73 73 3c 2f 64 65 73 63 72 69 70 74  :mm:ss</descript
50b0: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
50c0: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
50d0: 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64  ription>yyyyMMdd
50e0: 48 48 6d 6d 73 73 3c 2f 64 65 73 63 72 69 70 74  HHmmss</descript
50f0: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
5100: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
5110: 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64  ription>yyyyMMdd
5120: 48 48 6d 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f  HHmm</descriptio
5130: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
5140: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
5150: 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 54 48  ption>yyyyMMddTH
5160: 48 6d 6d 73 73 46 46 46 46 46 46 46 3c 2f 64 65  HmmssFFFFFFF</de
5170: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
5180: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
5190: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79  ><description>yy
51a0: 79 79 2d 4d 4d 2d 64 64 3c 2f 64 65 73 63 72 69  yy-MM-dd</descri
51b0: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
51c0: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
51d0: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d  scription>yyyyMM
51e0: 64 64 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  dd</description>
51f0: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
5200: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
5210: 69 6f 6e 3e 79 79 2d 4d 4d 2d 64 64 3c 2f 64 65  ion>yy-MM-dd</de
5220: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
5230: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 6c 69 73  >..    /// </lis
5240: 74 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20 74  t>..    /// If t
5250: 68 65 20 73 74 72 69 6e 67 20 63 61 6e 6e 6f 74  he string cannot
5260: 20 62 65 20 6d 61 74 63 68 65 64 20 74 6f 20 6f   be matched to o
5270: 6e 65 20 6f 66 20 74 68 65 20 61 62 6f 76 65 20  ne of the above 
5280: 66 6f 72 6d 61 74 73 20 2d 4f 52 2d 0d 0a 20 20  formats -OR-..  
5290: 20 20 2f 2f 2f 20 74 68 65 20 44 61 74 65 54 69    /// the DateTi
52a0: 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 20 69  meFormatString i
52b0: 66 20 6f 6e 65 20 77 61 73 20 70 72 6f 76 69 64  f one was provid
52c0: 65 64 2c 20 61 6e 20 65 78 63 65 70 74 69 6f 6e  ed, an exception
52d0: 20 77 69 6c 6c 0d 0a 20 20 20 20 2f 2f 2f 20 62   will..    /// b
52e0: 65 20 74 68 72 6f 77 6e 2e 0d 0a 20 20 20 20 2f  e thrown...    /
52f0: 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20  // </remarks>.. 
5300: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
5310: 6d 65 3d 22 64 61 74 65 54 65 78 74 22 3e 54 68  me="dateText">Th
5320: 65 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e  e string contain
5330: 69 6e 67 20 65 69 74 68 65 72 20 61 20 6c 6f 6e  ing either a lon
5340: 67 20 69 6e 74 65 67 65 72 20 6e 75 6d 62 65 72  g integer number
5350: 20 6f 66 20 31 30 30 2d 6e 61 6e 6f 73 65 63 6f   of 100-nanoseco
5360: 6e 64 20 75 6e 69 74 73 20 73 69 6e 63 65 0d 0a  nd units since..
5370: 20 20 20 20 2f 2f 2f 20 53 79 73 74 65 6d 2e 44      /// System.D
5380: 61 74 65 54 69 6d 65 2e 4d 69 6e 56 61 6c 75 65  ateTime.MinValue
5390: 2c 20 61 20 4a 75 6c 69 61 6e 20 64 61 79 20 64  , a Julian day d
53a0: 6f 75 62 6c 65 2c 20 61 6e 20 69 6e 74 65 67 65  ouble, an intege
53b0: 72 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 6f  r number of seco
53c0: 6e 64 73 20 73 69 6e 63 65 20 74 68 65 20 55 6e  nds since the Un
53d0: 69 78 20 65 70 6f 63 68 2c 20 61 0d 0a 20 20 20  ix epoch, a..   
53e0: 20 2f 2f 2f 20 63 75 6c 74 75 72 65 2d 69 6e 64   /// culture-ind
53f0: 65 70 65 6e 64 65 6e 74 20 66 6f 72 6d 61 74 74  ependent formatt
5400: 65 64 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65  ed date and time
5410: 20 73 74 72 69 6e 67 2c 20 61 20 66 6f 72 6d 61   string, a forma
5420: 74 74 65 64 20 64 61 74 65 20 61 6e 64 20 74 69  tted date and ti
5430: 6d 65 20 73 74 72 69 6e 67 20 69 6e 20 74 68 65  me string in the
5440: 20 63 75 72 72 65 6e 74 0d 0a 20 20 20 20 2f 2f   current..    //
5450: 2f 20 63 75 6c 74 75 72 65 2c 20 6f 72 20 61 6e  / culture, or an
5460: 20 49 53 4f 38 36 30 31 2d 66 6f 72 6d 61 74 20   ISO8601-format 
5470: 73 74 72 69 6e 67 2e 3c 2f 70 61 72 61 6d 3e 0d  string.</param>.
5480: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
5490: 6e 61 6d 65 3d 22 66 6f 72 6d 61 74 22 3e 54 68  name="format">Th
54a0: 65 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d  e SQLiteDateForm
54b0: 61 74 73 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72  ats to use.</par
54c0: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
54d0: 72 61 6d 20 6e 61 6d 65 3d 22 6b 69 6e 64 22 3e  ram name="kind">
54e0: 54 68 65 20 44 61 74 65 54 69 6d 65 4b 69 6e 64  The DateTimeKind
54f0: 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72 61 6d 3e   to use.</param>
5500: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
5510: 20 6e 61 6d 65 3d 22 66 6f 72 6d 61 74 53 74 72   name="formatStr
5520: 69 6e 67 22 3e 54 68 65 20 44 61 74 65 54 69 6d  ing">The DateTim
5530: 65 20 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 20  e format string 
5540: 74 6f 20 75 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d  to use.</param>.
5550: 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
5560: 73 3e 41 20 44 61 74 65 54 69 6d 65 20 76 61 6c  s>A DateTime val
5570: 75 65 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  ue</returns>..  
5580: 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
5590: 44 61 74 65 54 69 6d 65 20 54 6f 44 61 74 65 54  DateTime ToDateT
55a0: 69 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 73 74  ime(..        st
55b0: 72 69 6e 67 20 64 61 74 65 54 65 78 74 2c 0d 0a  ring dateText,..
55c0: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 44 61          SQLiteDa
55d0: 74 65 46 6f 72 6d 61 74 73 20 66 6f 72 6d 61 74  teFormats format
55e0: 2c 0d 0a 20 20 20 20 20 20 20 20 44 61 74 65 54  ,..        DateT
55f0: 69 6d 65 4b 69 6e 64 20 6b 69 6e 64 2c 0d 0a 20  imeKind kind,.. 
5600: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 6f         string fo
5610: 72 6d 61 74 53 74 72 69 6e 67 0d 0a 20 20 20 20  rmatString..    
5620: 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20      )..    {..  
5630: 20 20 20 20 20 20 73 77 69 74 63 68 20 28 66 6f        switch (fo
5640: 72 6d 61 74 29 0d 0a 20 20 20 20 20 20 20 20 7b  rmat)..        {
5650: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
5660: 73 65 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72  se SQLiteDateFor
5670: 6d 61 74 73 2e 54 69 63 6b 73 3a 0d 0a 20 20 20  mats.Ticks:..   
5680: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
5690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
56a0: 20 20 20 20 72 65 74 75 72 6e 20 54 69 63 6b 73      return Ticks
56b0: 54 6f 44 61 74 65 54 69 6d 65 28 43 6f 6e 76 65  ToDateTime(Conve
56c0: 72 74 2e 54 6f 49 6e 74 36 34 28 0d 0a 20 20 20  rt.ToInt64(..   
56d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
56e0: 20 20 20 20 20 64 61 74 65 54 65 78 74 2c 20 43       dateText, C
56f0: 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72  ultureInfo.Invar
5700: 69 61 6e 74 43 75 6c 74 75 72 65 29 2c 20 6b 69  iantCulture), ki
5710: 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  nd);..          
5720: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
5730: 20 20 20 20 20 63 61 73 65 20 53 51 4c 69 74 65       case SQLite
5740: 44 61 74 65 46 6f 72 6d 61 74 73 2e 4a 75 6c 69  DateFormats.Juli
5750: 61 6e 44 61 79 3a 0d 0a 20 20 20 20 20 20 20 20  anDay:..        
5760: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
5770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
5780: 65 74 75 72 6e 20 54 6f 44 61 74 65 54 69 6d 65  eturn ToDateTime
5790: 28 43 6f 6e 76 65 72 74 2e 54 6f 44 6f 75 62 6c  (Convert.ToDoubl
57a0: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
57b0: 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 65              date
57c0: 54 65 78 74 2c 20 43 75 6c 74 75 72 65 49 6e 66  Text, CultureInf
57d0: 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75  o.InvariantCultu
57e0: 72 65 29 2c 20 6b 69 6e 64 29 3b 0d 0a 20 20 20  re), kind);..   
57f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
5800: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
5810: 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61   SQLiteDateForma
5820: 74 73 2e 55 6e 69 78 45 70 6f 63 68 3a 0d 0a 20  ts.UnixEpoch:.. 
5830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
5840: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5850: 20 20 20 20 20 20 72 65 74 75 72 6e 20 55 6e 69        return Uni
5860: 78 45 70 6f 63 68 54 6f 44 61 74 65 54 69 6d 65  xEpochToDateTime
5870: 28 43 6f 6e 76 65 72 74 2e 54 6f 49 6e 74 36 34  (Convert.ToInt64
5880: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
5890: 20 20 20 20 20 20 20 20 20 20 20 64 61 74 65 54             dateT
58a0: 65 78 74 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f  ext, CultureInfo
58b0: 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72  .InvariantCultur
58c0: 65 29 2c 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20  e), kind);..    
58d0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
58e0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
58f0: 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74  SQLiteDateFormat
5900: 73 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75  s.InvariantCultu
5910: 72 65 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re:..           
5920: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
5930: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
5940: 66 6f 72 6d 61 74 53 74 72 69 6e 67 20 21 3d 20  formatString != 
5950: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
5960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
5970: 65 74 75 72 6e 20 44 61 74 65 54 69 6d 65 2e 53  eturn DateTime.S
5980: 70 65 63 69 66 79 4b 69 6e 64 28 44 61 74 65 54  pecifyKind(DateT
5990: 69 6d 65 2e 50 61 72 73 65 45 78 61 63 74 28 0d  ime.ParseExact(.
59a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
59b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74               dat
59c0: 65 54 65 78 74 2c 20 66 6f 72 6d 61 74 53 74 72  eText, formatStr
59d0: 69 6e 67 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ing,..          
59e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
59f0: 20 20 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74    DateTimeFormat
5a00: 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 49 6e  Info.InvariantIn
5a10: 66 6f 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  fo,..           
5a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a30: 20 6b 69 6e 64 20 3d 3d 20 44 61 74 65 54 69 6d   kind == DateTim
5a40: 65 4b 69 6e 64 2e 55 74 63 20 3f 0d 0a 20 20 20  eKind.Utc ?..   
5a50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 44 61 74               Dat
5a70: 65 54 69 6d 65 53 74 79 6c 65 73 2e 41 64 6a 75  eTimeStyles.Adju
5a80: 73 74 54 6f 55 6e 69 76 65 72 73 61 6c 20 3a 0d  stToUniversal :.
5a90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5aa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ab0: 20 44 61 74 65 54 69 6d 65 53 74 79 6c 65 73 2e   DateTimeStyles.
5ac0: 4e 6f 6e 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  None),..        
5ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ae0: 20 20 20 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20      kind);..    
5af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b00: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
5b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
5b20: 74 75 72 6e 20 44 61 74 65 54 69 6d 65 2e 53 70  turn DateTime.Sp
5b30: 65 63 69 66 79 4b 69 6e 64 28 44 61 74 65 54 69  ecifyKind(DateTi
5b40: 6d 65 2e 50 61 72 73 65 28 0d 0a 20 20 20 20 20  me.Parse(..     
5b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b60: 20 20 20 20 20 20 20 64 61 74 65 54 65 78 74 2c         dateText,
5b70: 20 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 49   DateTimeFormatI
5b80: 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 49 6e 66  nfo.InvariantInf
5b90: 6f 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o,..            
5ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5bb0: 6b 69 6e 64 20 3d 3d 20 44 61 74 65 54 69 6d 65  kind == DateTime
5bc0: 4b 69 6e 64 2e 55 74 63 20 3f 0d 0a 20 20 20 20  Kind.Utc ?..    
5bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5be0: 20 20 20 20 20 20 20 20 20 20 20 20 44 61 74 65              Date
5bf0: 54 69 6d 65 53 74 79 6c 65 73 2e 41 64 6a 75 73  TimeStyles.Adjus
5c00: 74 54 6f 55 6e 69 76 65 72 73 61 6c 20 3a 0d 0a  tToUniversal :..
5c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c30: 44 61 74 65 54 69 6d 65 53 74 79 6c 65 73 2e 4e  DateTimeStyles.N
5c40: 6f 6e 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  one),..         
5c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c60: 20 20 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20 20     kind);..     
5c70: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
5c80: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 53            case S
5c90: 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73  QLiteDateFormats
5ca0: 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 3a  .CurrentCulture:
5cb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5cc0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
5cd0: 20 20 20 20 20 20 20 20 20 69 66 20 28 66 6f 72           if (for
5ce0: 6d 61 74 53 74 72 69 6e 67 20 21 3d 20 6e 75 6c  matString != nul
5cf0: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
5d00: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
5d10: 72 6e 20 44 61 74 65 54 69 6d 65 2e 53 70 65 63  rn DateTime.Spec
5d20: 69 66 79 4b 69 6e 64 28 44 61 74 65 54 69 6d 65  ifyKind(DateTime
5d30: 2e 50 61 72 73 65 45 78 61 63 74 28 0d 0a 20 20  .ParseExact(..  
5d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5d50: 20 20 20 20 20 20 20 20 20 20 64 61 74 65 54 65            dateTe
5d60: 78 74 2c 20 66 6f 72 6d 61 74 53 74 72 69 6e 67  xt, formatString
5d70: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
5d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44                 D
5d90: 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 49 6e 66  ateTimeFormatInf
5da0: 6f 2e 43 75 72 72 65 6e 74 49 6e 66 6f 2c 0d 0a  o.CurrentInfo,..
5db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5dc0: 20 20 20 20 20 20 20 20 20 20 20 20 6b 69 6e 64              kind
5dd0: 20 3d 3d 20 44 61 74 65 54 69 6d 65 4b 69 6e 64   == DateTimeKind
5de0: 2e 55 74 63 20 3f 0d 0a 20 20 20 20 20 20 20 20  .Utc ?..        
5df0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5e00: 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65          DateTime
5e10: 53 74 79 6c 65 73 2e 41 64 6a 75 73 74 54 6f 55  Styles.AdjustToU
5e20: 6e 69 76 65 72 73 61 6c 20 3a 0d 0a 20 20 20 20  niversal :..    
5e30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5e40: 20 20 20 20 20 20 20 20 20 20 20 20 44 61 74 65              Date
5e50: 54 69 6d 65 53 74 79 6c 65 73 2e 4e 6f 6e 65 29  TimeStyles.None)
5e60: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
5e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b                 k
5e80: 69 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ind);..         
5e90: 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d             else.
5ea0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5eb0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
5ec0: 44 61 74 65 54 69 6d 65 2e 53 70 65 63 69 66 79  DateTime.Specify
5ed0: 4b 69 6e 64 28 44 61 74 65 54 69 6d 65 2e 50 61  Kind(DateTime.Pa
5ee0: 72 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  rse(..          
5ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f00: 20 20 64 61 74 65 54 65 78 74 2c 20 44 61 74 65    dateText, Date
5f10: 54 69 6d 65 46 6f 72 6d 61 74 49 6e 66 6f 2e 43  TimeFormatInfo.C
5f20: 75 72 72 65 6e 74 49 6e 66 6f 2c 0d 0a 20 20 20  urrentInfo,..   
5f30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f40: 20 20 20 20 20 20 20 20 20 6b 69 6e 64 20 3d 3d           kind ==
5f50: 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e 55 74   DateTimeKind.Ut
5f60: 63 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  c ?..           
5f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f80: 20 20 20 20 20 44 61 74 65 54 69 6d 65 53 74 79       DateTimeSty
5f90: 6c 65 73 2e 41 64 6a 75 73 74 54 6f 55 6e 69 76  les.AdjustToUniv
5fa0: 65 72 73 61 6c 20 3a 0d 0a 20 20 20 20 20 20 20  ersal :..       
5fb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5fc0: 20 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d           DateTim
5fd0: 65 53 74 79 6c 65 73 2e 4e 6f 6e 65 29 2c 0d 0a  eStyles.None),..
5fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ff0: 20 20 20 20 20 20 20 20 20 20 20 20 6b 69 6e 64              kind
6000: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
6010: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
6020: 20 20 20 64 65 66 61 75 6c 74 3a 20 2f 2a 20 49     default: /* I
6030: 53 4f 2d 38 36 30 31 20 2a 2f 0d 0a 20 20 20 20  SO-8601 */..    
6040: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
6050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6060: 20 20 20 69 66 20 28 66 6f 72 6d 61 74 53 74 72     if (formatStr
6070: 69 6e 67 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ing != null)..  
6080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6090: 20 20 20 20 20 20 72 65 74 75 72 6e 20 44 61 74        return Dat
60a0: 65 54 69 6d 65 2e 53 70 65 63 69 66 79 4b 69 6e  eTime.SpecifyKin
60b0: 64 28 44 61 74 65 54 69 6d 65 2e 50 61 72 73 65  d(DateTime.Parse
60c0: 45 78 61 63 74 28 0d 0a 20 20 20 20 20 20 20 20  Exact(..        
60d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
60e0: 20 20 20 20 64 61 74 65 54 65 78 74 2c 20 66 6f      dateText, fo
60f0: 72 6d 61 74 53 74 72 69 6e 67 2c 0d 0a 20 20 20  rmatString,..   
6100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6110: 20 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d           DateTim
6120: 65 46 6f 72 6d 61 74 49 6e 66 6f 2e 49 6e 76 61  eFormatInfo.Inva
6130: 72 69 61 6e 74 49 6e 66 6f 2c 0d 0a 20 20 20 20  riantInfo,..    
6140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6150: 20 20 20 20 20 20 20 20 6b 69 6e 64 20 3d 3d 20          kind == 
6160: 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e 55 74 63  DateTimeKind.Utc
6170: 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   ?..            
6180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6190: 20 20 20 20 44 61 74 65 54 69 6d 65 53 74 79 6c      DateTimeStyl
61a0: 65 73 2e 41 64 6a 75 73 74 54 6f 55 6e 69 76 65  es.AdjustToUnive
61b0: 72 73 61 6c 20 3a 0d 0a 20 20 20 20 20 20 20 20  rsal :..        
61c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
61d0: 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65          DateTime
61e0: 53 74 79 6c 65 73 2e 4e 6f 6e 65 29 2c 0d 0a 20  Styles.None),.. 
61f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6200: 20 20 20 20 20 20 20 20 20 20 20 6b 69 6e 64 29             kind)
6210: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
6220: 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20         else..   
6230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6240: 20 20 20 20 20 72 65 74 75 72 6e 20 44 61 74 65       return Date
6250: 54 69 6d 65 2e 53 70 65 63 69 66 79 4b 69 6e 64  Time.SpecifyKind
6260: 28 44 61 74 65 54 69 6d 65 2e 50 61 72 73 65 45  (DateTime.ParseE
6270: 78 61 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20  xact(..         
6280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6290: 20 20 20 64 61 74 65 54 65 78 74 2c 20 5f 64 61     dateText, _da
62a0: 74 65 74 69 6d 65 46 6f 72 6d 61 74 73 2c 0d 0a  tetimeFormats,..
62b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
62c0: 20 20 20 20 20 20 20 20 20 20 20 20 44 61 74 65              Date
62d0: 54 69 6d 65 46 6f 72 6d 61 74 49 6e 66 6f 2e 49  TimeFormatInfo.I
62e0: 6e 76 61 72 69 61 6e 74 49 6e 66 6f 2c 0d 0a 20  nvariantInfo,.. 
62f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6300: 20 20 20 20 20 20 20 20 20 20 20 6b 69 6e 64 20             kind 
6310: 3d 3d 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e  == DateTimeKind.
6320: 55 74 63 20 3f 0d 0a 20 20 20 20 20 20 20 20 20  Utc ?..         
6330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6340: 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65 53         DateTimeS
6350: 74 79 6c 65 73 2e 41 64 6a 75 73 74 54 6f 55 6e  tyles.AdjustToUn
6360: 69 76 65 72 73 61 6c 20 3a 0d 0a 20 20 20 20 20  iversal :..     
6370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6380: 20 20 20 20 20 20 20 20 20 20 20 44 61 74 65 54             DateT
6390: 69 6d 65 53 74 79 6c 65 73 2e 4e 6f 6e 65 29 2c  imeStyles.None),
63a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
63b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 69                ki
63c0: 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  nd);..          
63d0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
63e0: 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20   }..    }....   
63f0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
6400: 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73      /// Converts
6410: 20 61 20 6a 75 6c 69 61 6e 64 61 79 20 76 61 6c   a julianday val
6420: 75 65 20 69 6e 74 6f 20 61 20 44 61 74 65 54 69  ue into a DateTi
6430: 6d 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  me..    /// </su
6440: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
6450: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6a 75 6c  <param name="jul
6460: 69 61 6e 44 61 79 22 3e 54 68 65 20 76 61 6c 75  ianDay">The valu
6470: 65 20 74 6f 20 63 6f 6e 76 65 72 74 3c 2f 70 61  e to convert</pa
6480: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
6490: 65 74 75 72 6e 73 3e 41 20 2e 4e 45 54 20 44 61  eturns>A .NET Da
64a0: 74 65 54 69 6d 65 3c 2f 72 65 74 75 72 6e 73 3e  teTime</returns>
64b0: 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 44 61 74  ..    public Dat
64c0: 65 54 69 6d 65 20 54 6f 44 61 74 65 54 69 6d 65  eTime ToDateTime
64d0: 28 64 6f 75 62 6c 65 20 6a 75 6c 69 61 6e 44 61  (double julianDa
64e0: 79 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  y)..    {..     
64f0: 20 72 65 74 75 72 6e 20 54 6f 44 61 74 65 54 69   return ToDateTi
6500: 6d 65 28 6a 75 6c 69 61 6e 44 61 79 2c 20 5f 64  me(julianDay, _d
6510: 61 74 65 74 69 6d 65 4b 69 6e 64 29 3b 0d 0a 20  atetimeKind);.. 
6520: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
6530: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
6540: 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 6a 75  // Converts a ju
6550: 6c 69 61 6e 64 61 79 20 76 61 6c 75 65 20 69 6e  lianday value in
6560: 74 6f 20 61 20 44 61 74 65 54 69 6d 65 0d 0a 20  to a DateTime.. 
6570: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
6580: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
6590: 6d 20 6e 61 6d 65 3d 22 6a 75 6c 69 61 6e 44 61  m name="julianDa
65a0: 79 22 3e 54 68 65 20 76 61 6c 75 65 20 74 6f 20  y">The value to 
65b0: 63 6f 6e 76 65 72 74 3c 2f 70 61 72 61 6d 3e 0d  convert</param>.
65c0: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
65d0: 6e 61 6d 65 3d 22 6b 69 6e 64 22 3e 54 68 65 20  name="kind">The 
65e0: 44 61 74 65 54 69 6d 65 4b 69 6e 64 20 74 6f 20  DateTimeKind to 
65f0: 75 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  use.</param>..  
6600: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 41    /// <returns>A
6610: 20 2e 4e 45 54 20 44 61 74 65 54 69 6d 65 3c 2f   .NET DateTime</
6620: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75  returns>..    pu
6630: 62 6c 69 63 20 73 74 61 74 69 63 20 44 61 74 65  blic static Date
6640: 54 69 6d 65 20 54 6f 44 61 74 65 54 69 6d 65 28  Time ToDateTime(
6650: 0d 0a 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65  ..        double
6660: 20 6a 75 6c 69 61 6e 44 61 79 2c 0d 0a 20 20 20   julianDay,..   
6670: 20 20 20 20 20 44 61 74 65 54 69 6d 65 4b 69 6e       DateTimeKin
6680: 64 20 6b 69 6e 64 0d 0a 20 20 20 20 20 20 20 20  d kind..        
6690: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
66a0: 20 20 6c 6f 6e 67 20 6a 64 20 3d 20 44 6f 75 62    long jd = Doub
66b0: 6c 65 54 6f 4a 64 28 6a 75 6c 69 61 6e 44 61 79  leToJd(julianDay
66c0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 44 61 74 65  );..        Date
66d0: 54 69 6d 65 20 64 61 74 65 54 69 6d 65 59 4d 44  Time dateTimeYMD
66e0: 20 3d 20 63 6f 6d 70 75 74 65 59 4d 44 28 6a 64   = computeYMD(jd
66f0: 2c 20 6e 75 6c 6c 29 3b 0d 0a 20 20 20 20 20 20  , null);..      
6700: 20 20 44 61 74 65 54 69 6d 65 20 64 61 74 65 54    DateTime dateT
6710: 69 6d 65 48 4d 53 20 3d 20 63 6f 6d 70 75 74 65  imeHMS = compute
6720: 48 4d 53 28 6a 64 2c 20 6e 75 6c 6c 29 3b 0d 0a  HMS(jd, null);..
6730: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
6740: 20 6e 65 77 20 44 61 74 65 54 69 6d 65 28 0d 0a   new DateTime(..
6750: 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 65              date
6760: 54 69 6d 65 59 4d 44 2e 59 65 61 72 2c 20 64 61  TimeYMD.Year, da
6770: 74 65 54 69 6d 65 59 4d 44 2e 4d 6f 6e 74 68 2c  teTimeYMD.Month,
6780: 20 64 61 74 65 54 69 6d 65 59 4d 44 2e 44 61 79   dateTimeYMD.Day
6790: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 64  ,..            d
67a0: 61 74 65 54 69 6d 65 48 4d 53 2e 48 6f 75 72 2c  ateTimeHMS.Hour,
67b0: 20 64 61 74 65 54 69 6d 65 48 4d 53 2e 4d 69 6e   dateTimeHMS.Min
67c0: 75 74 65 2c 20 64 61 74 65 54 69 6d 65 48 4d 53  ute, dateTimeHMS
67d0: 2e 53 65 63 6f 6e 64 2c 0d 0a 20 20 20 20 20 20  .Second,..      
67e0: 20 20 20 20 20 20 64 61 74 65 54 69 6d 65 48 4d        dateTimeHM
67f0: 53 2e 4d 69 6c 6c 69 73 65 63 6f 6e 64 2c 20 6b  S.Millisecond, k
6800: 69 6e 64 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  ind);..    }....
6810: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
6820: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65  >..    /// Conve
6830: 72 74 73 20 74 68 65 20 73 70 65 63 69 66 69 65  rts the specifie
6840: 64 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 6f  d number of seco
6850: 6e 64 73 20 66 72 6f 6d 20 74 68 65 20 55 6e 69  nds from the Uni
6860: 78 20 65 70 6f 63 68 20 69 6e 74 6f 20 61 0d 0a  x epoch into a..
6870: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
6880: 66 3d 22 44 61 74 65 54 69 6d 65 22 20 2f 3e 20  f="DateTime" /> 
6890: 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  value...    /// 
68a0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
68b0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
68c0: 22 73 65 63 6f 6e 64 73 22 3e 0d 0a 20 20 20 20  "seconds">..    
68d0: 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f  /// The number o
68e0: 66 20 77 68 6f 6c 65 20 73 65 63 6f 6e 64 73 20  f whole seconds 
68f0: 73 69 6e 63 65 20 74 68 65 20 55 6e 69 78 20 65  since the Unix e
6900: 70 6f 63 68 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  poch...    /// <
6910: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
6920: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6b 69   <param name="ki
6930: 6e 64 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 45 69  nd">..    /// Ei
6940: 74 68 65 72 20 55 74 63 20 6f 72 20 4c 6f 63 61  ther Utc or Loca
6950: 6c 20 74 69 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f  l time...    ///
6960: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
6970: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
6980: 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77 20 3c 73    /// The new <s
6990: 65 65 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d  ee cref="DateTim
69a0: 65 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20  e" /> value...  
69b0: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
69c0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
69d0: 74 61 74 69 63 20 44 61 74 65 54 69 6d 65 20 55  tatic DateTime U
69e0: 6e 69 78 45 70 6f 63 68 54 6f 44 61 74 65 54 69  nixEpochToDateTi
69f0: 6d 65 28 6c 6f 6e 67 20 73 65 63 6f 6e 64 73 2c  me(long seconds,
6a00: 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 20 6b 69   DateTimeKind ki
6a10: 6e 64 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  nd)..    {..    
6a20: 20 20 20 20 72 65 74 75 72 6e 20 44 61 74 65 54      return DateT
6a30: 69 6d 65 2e 53 70 65 63 69 66 79 4b 69 6e 64 28  ime.SpecifyKind(
6a40: 55 6e 69 78 45 70 6f 63 68 2e 41 64 64 53 65 63  UnixEpoch.AddSec
6a50: 6f 6e 64 73 28 73 65 63 6f 6e 64 73 29 2c 20 6b  onds(seconds), k
6a60: 69 6e 64 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  ind);..    }....
6a70: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
6a80: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65  >..    /// Conve
6a90: 72 74 73 20 74 68 65 20 73 70 65 63 69 66 69 65  rts the specifie
6aa0: 64 20 6e 75 6d 62 65 72 20 6f 66 20 74 69 63 6b  d number of tick
6ab0: 73 20 73 69 6e 63 65 20 74 68 65 20 65 70 6f 63  s since the epoc
6ac0: 68 20 69 6e 74 6f 20 61 0d 0a 20 20 20 20 2f 2f  h into a..    //
6ad0: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74  / <see cref="Dat
6ae0: 65 54 69 6d 65 22 20 2f 3e 20 76 61 6c 75 65 2e  eTime" /> value.
6af0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
6b00: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
6b10: 61 72 61 6d 20 6e 61 6d 65 3d 22 74 69 63 6b 73  aram name="ticks
6b20: 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
6b30: 6e 75 6d 62 65 72 20 6f 66 20 77 68 6f 6c 65 20  number of whole 
6b40: 74 69 63 6b 73 20 73 69 6e 63 65 20 74 68 65 20  ticks since the 
6b50: 65 70 6f 63 68 2e 0d 0a 20 20 20 20 2f 2f 2f 20  epoch...    /// 
6b60: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
6b70: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6b  / <param name="k
6b80: 69 6e 64 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 45  ind">..    /// E
6b90: 69 74 68 65 72 20 55 74 63 20 6f 72 20 4c 6f 63  ither Utc or Loc
6ba0: 61 6c 20 74 69 6d 65 2e 0d 0a 20 20 20 20 2f 2f  al time...    //
6bb0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
6bc0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
6bd0: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77 20 3c     /// The new <
6be0: 73 65 65 20 63 72 65 66 3d 22 44 61 74 65 54 69  see cref="DateTi
6bf0: 6d 65 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20  me" /> value... 
6c00: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
6c10: 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
6c20: 73 74 61 74 69 63 20 44 61 74 65 54 69 6d 65 20  static DateTime 
6c30: 54 69 63 6b 73 54 6f 44 61 74 65 54 69 6d 65 28  TicksToDateTime(
6c40: 6c 6f 6e 67 20 74 69 63 6b 73 2c 20 44 61 74 65  long ticks, Date
6c50: 54 69 6d 65 4b 69 6e 64 20 6b 69 6e 64 29 0d 0a  TimeKind kind)..
6c60: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 72      {..        r
6c70: 65 74 75 72 6e 20 6e 65 77 20 44 61 74 65 54 69  eturn new DateTi
6c80: 6d 65 28 74 69 63 6b 73 2c 20 6b 69 6e 64 29 3b  me(ticks, kind);
6c90: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
6ca0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
6cb0: 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61    /// Converts a
6cc0: 20 44 61 74 65 54 69 6d 65 20 73 74 72 75 63 74   DateTime struct
6cd0: 20 74 6f 20 61 20 4a 75 6c 69 61 6e 44 61 79 20   to a JulianDay 
6ce0: 64 6f 75 62 6c 65 0d 0a 20 20 20 20 2f 2f 2f 20  double..    /// 
6cf0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
6d00: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
6d10: 22 76 61 6c 75 65 22 3e 54 68 65 20 44 61 74 65  "value">The Date
6d20: 54 69 6d 65 20 74 6f 20 63 6f 6e 76 65 72 74 3c  Time to convert<
6d30: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
6d40: 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20 4a 75   <returns>The Ju
6d50: 6c 69 61 6e 44 61 79 20 76 61 6c 75 65 20 74 68  lianDay value th
6d60: 65 20 44 61 74 65 74 69 6d 65 20 72 65 70 72 65  e Datetime repre
6d70: 73 65 6e 74 73 3c 2f 72 65 74 75 72 6e 73 3e 0d  sents</returns>.
6d80: 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74  .    public stat
6d90: 69 63 20 64 6f 75 62 6c 65 20 54 6f 4a 75 6c 69  ic double ToJuli
6da0: 61 6e 44 61 79 28 44 61 74 65 54 69 6d 65 20 76  anDay(DateTime v
6db0: 61 6c 75 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  alue)..    {..  
6dc0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 4a 64 54        return JdT
6dd0: 6f 44 6f 75 62 6c 65 28 63 6f 6d 70 75 74 65 4a  oDouble(computeJ
6de0: 44 28 76 61 6c 75 65 29 29 3b 0d 0a 20 20 20 20  D(value));..    
6df0: 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
6e00: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
6e10: 43 6f 6e 76 65 72 74 73 20 61 20 44 61 74 65 54  Converts a DateT
6e20: 69 6d 65 20 73 74 72 75 63 74 20 74 6f 20 74 68  ime struct to th
6e30: 65 20 77 68 6f 6c 65 20 6e 75 6d 62 65 72 20 6f  e whole number o
6e40: 66 20 73 65 63 6f 6e 64 73 20 73 69 6e 63 65 20  f seconds since 
6e50: 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 55 6e 69  the..    /// Uni
6e60: 78 20 65 70 6f 63 68 2e 0d 0a 20 20 20 20 2f 2f  x epoch...    //
6e70: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
6e80: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
6e90: 65 3d 22 76 61 6c 75 65 22 3e 54 68 65 20 44 61  e="value">The Da
6ea0: 74 65 54 69 6d 65 20 74 6f 20 63 6f 6e 76 65 72  teTime to conver
6eb0: 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  t</param>..    /
6ec0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20  // <returns>The 
6ed0: 77 68 6f 6c 65 20 6e 75 6d 62 65 72 20 6f 66 20  whole number of 
6ee0: 73 65 63 6f 6e 64 73 20 73 69 6e 63 65 20 74 68  seconds since th
6ef0: 65 20 55 6e 69 78 20 65 70 6f 63 68 3c 2f 72 65  e Unix epoch</re
6f00: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c  turns>..    publ
6f10: 69 63 20 73 74 61 74 69 63 20 6c 6f 6e 67 20 54  ic static long T
6f20: 6f 55 6e 69 78 45 70 6f 63 68 28 44 61 74 65 54  oUnixEpoch(DateT
6f30: 69 6d 65 20 76 61 6c 75 65 29 0d 0a 20 20 20 20  ime value)..    
6f40: 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  {..        retur
6f50: 6e 20 28 76 61 6c 75 65 2e 53 75 62 74 72 61 63  n (value.Subtrac
6f60: 74 28 55 6e 69 78 45 70 6f 63 68 29 2e 54 69 63  t(UnixEpoch).Tic
6f70: 6b 73 20 2f 20 54 69 6d 65 53 70 61 6e 2e 54 69  ks / TimeSpan.Ti
6f80: 63 6b 73 50 65 72 53 65 63 6f 6e 64 29 3b 0d 0a  cksPerSecond);..
6f90: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
6fa0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
6fb0: 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20  /// Returns the 
6fc0: 44 61 74 65 54 69 6d 65 20 66 6f 72 6d 61 74 20  DateTime format 
6fd0: 73 74 72 69 6e 67 20 74 6f 20 75 73 65 20 66 6f  string to use fo
6fe0: 72 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  r the specified 
6ff0: 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e 0d 0a 20  DateTimeKind... 
7000: 20 20 20 2f 2f 2f 20 49 66 20 3c 70 61 72 61 6d     /// If <param
7010: 72 65 66 20 6e 61 6d 65 3d 22 66 6f 72 6d 61 74  ref name="format
7020: 53 74 72 69 6e 67 22 20 2f 3e 20 69 73 20 6e 6f  String" /> is no
7030: 74 20 6e 75 6c 6c 2c 20 69 74 20 77 69 6c 6c 20  t null, it will 
7040: 62 65 20 72 65 74 75 72 6e 65 64 20 76 65 72 62  be returned verb
7050: 61 74 69 6d 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  atim...    /// <
7060: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
7070: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
7080: 6b 69 6e 64 22 3e 54 68 65 20 44 61 74 65 54 69  kind">The DateTi
7090: 6d 65 4b 69 6e 64 20 74 6f 20 75 73 65 2e 3c 2f  meKind to use.</
70a0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
70b0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6f 72  <param name="for
70c0: 6d 61 74 53 74 72 69 6e 67 22 3e 54 68 65 20 44  matString">The D
70d0: 61 74 65 54 69 6d 65 20 66 6f 72 6d 61 74 20 73  ateTime format s
70e0: 74 72 69 6e 67 20 74 6f 20 75 73 65 2e 3c 2f 70  tring to use.</p
70f0: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
7100: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f  returns>..    //
7110: 2f 20 54 68 65 20 44 61 74 65 54 69 6d 65 20 66  / The DateTime f
7120: 6f 72 6d 61 74 20 73 74 72 69 6e 67 20 74 6f 20  ormat string to 
7130: 75 73 65 20 66 6f 72 20 74 68 65 20 73 70 65 63  use for the spec
7140: 69 66 69 65 64 20 44 61 74 65 54 69 6d 65 4b 69  ified DateTimeKi
7150: 6e 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72  nd...    /// </r
7160: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69  eturns>..    pri
7170: 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
7180: 6e 67 20 47 65 74 44 61 74 65 54 69 6d 65 4b 69  ng GetDateTimeKi
7190: 6e 64 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ndFormat(..     
71a0: 20 20 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 20     DateTimeKind 
71b0: 6b 69 6e 64 2c 0d 0a 20 20 20 20 20 20 20 20 73  kind,..        s
71c0: 74 72 69 6e 67 20 66 6f 72 6d 61 74 53 74 72 69  tring formatStri
71d0: 6e 67 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20  ng..        ).. 
71e0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66     {..        if
71f0: 20 28 66 6f 72 6d 61 74 53 74 72 69 6e 67 20 21   (formatString !
7200: 3d 20 6e 75 6c 6c 29 20 72 65 74 75 72 6e 20 66  = null) return f
7210: 6f 72 6d 61 74 53 74 72 69 6e 67 3b 0d 0a 20 20  ormatString;..  
7220: 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 6b 69        return (ki
7230: 6e 64 20 3d 3d 20 44 61 74 65 54 69 6d 65 4b 69  nd == DateTimeKi
7240: 6e 64 2e 55 74 63 29 20 3f 20 5f 64 61 74 65 74  nd.Utc) ? _datet
7250: 69 6d 65 46 6f 72 6d 61 74 55 74 63 20 3a 20 5f  imeFormatUtc : _
7260: 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 4c 6f  datetimeFormatLo
7270: 63 61 6c 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  cal;..    }.... 
7280: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
7290: 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72  ..    /// Conver
72a0: 74 73 20 61 20 73 74 72 69 6e 67 20 69 6e 74 6f  ts a string into
72b0: 20 61 20 44 61 74 65 54 69 6d 65 2c 20 75 73 69   a DateTime, usi
72c0: 6e 67 20 74 68 65 20 44 61 74 65 54 69 6d 65 46  ng the DateTimeF
72d0: 6f 72 6d 61 74 2c 20 44 61 74 65 54 69 6d 65 4b  ormat, DateTimeK
72e0: 69 6e 64 2c 0d 0a 20 20 20 20 2f 2f 2f 20 61 6e  ind,..    /// an
72f0: 64 20 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74  d DateTimeFormat
7300: 53 74 72 69 6e 67 20 73 70 65 63 69 66 69 65 64  String specified
7310: 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e 65 63 74   for the connect
7320: 69 6f 6e 20 77 68 65 6e 20 69 74 20 77 61 73 20  ion when it was 
7330: 6f 70 65 6e 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f  opened...    ///
7340: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
7350: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
7360: 3d 22 64 61 74 65 56 61 6c 75 65 22 3e 54 68 65  ="dateValue">The
7370: 20 44 61 74 65 54 69 6d 65 20 76 61 6c 75 65 20   DateTime value 
7380: 74 6f 20 63 6f 6e 76 65 72 74 3c 2f 70 61 72 61  to convert</para
7390: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
73a0: 75 72 6e 73 3e 45 69 74 68 65 72 20 61 20 73 74  urns>Either a st
73b0: 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20  ring containing 
73c0: 74 68 65 20 6c 6f 6e 67 20 69 6e 74 65 67 65 72  the long integer
73d0: 20 6e 75 6d 62 65 72 20 6f 66 20 31 30 30 2d 6e   number of 100-n
73e0: 61 6e 6f 73 65 63 6f 6e 64 20 75 6e 69 74 73 20  anosecond units 
73f0: 73 69 6e 63 65 20 53 79 73 74 65 6d 2e 44 61 74  since System.Dat
7400: 65 54 69 6d 65 2e 4d 69 6e 56 61 6c 75 65 2c 20  eTime.MinValue, 
7410: 61 0d 0a 20 20 20 20 2f 2f 2f 20 4a 75 6c 69 61  a..    /// Julia
7420: 6e 20 64 61 79 20 64 6f 75 62 6c 65 2c 20 61 6e  n day double, an
7430: 20 69 6e 74 65 67 65 72 20 6e 75 6d 62 65 72 20   integer number 
7440: 6f 66 20 73 65 63 6f 6e 64 73 20 73 69 6e 63 65  of seconds since
7450: 20 74 68 65 20 55 6e 69 78 20 65 70 6f 63 68 2c   the Unix epoch,
7460: 20 61 20 63 75 6c 74 75 72 65 2d 69 6e 64 65 70   a culture-indep
7470: 65 6e 64 65 6e 74 20 66 6f 72 6d 61 74 74 65 64  endent formatted
7480: 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 0d 0a   date and time..
7490: 20 20 20 20 2f 2f 2f 20 73 74 72 69 6e 67 2c 20      /// string, 
74a0: 61 20 66 6f 72 6d 61 74 74 65 64 20 64 61 74 65  a formatted date
74b0: 20 61 6e 64 20 74 69 6d 65 20 73 74 72 69 6e 67   and time string
74c0: 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20   in the current 
74d0: 63 75 6c 74 75 72 65 2c 20 6f 72 20 61 6e 20 49  culture, or an I
74e0: 53 4f 38 36 30 31 2d 66 6f 72 6d 61 74 20 64 61  SO8601-format da
74f0: 74 65 2f 74 69 6d 65 20 73 74 72 69 6e 67 2e 3c  te/time string.<
7500: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70  /returns>..    p
7510: 75 62 6c 69 63 20 73 74 72 69 6e 67 20 54 6f 53  ublic string ToS
7520: 74 72 69 6e 67 28 44 61 74 65 54 69 6d 65 20 64  tring(DateTime d
7530: 61 74 65 56 61 6c 75 65 29 0d 0a 20 20 20 20 7b  ateValue)..    {
7540: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
7550: 20 54 6f 53 74 72 69 6e 67 28 64 61 74 65 56 61   ToString(dateVa
7560: 6c 75 65 2c 20 5f 64 61 74 65 74 69 6d 65 46 6f  lue, _datetimeFo
7570: 72 6d 61 74 2c 20 5f 64 61 74 65 74 69 6d 65 4b  rmat, _datetimeK
7580: 69 6e 64 2c 20 5f 64 61 74 65 74 69 6d 65 46 6f  ind, _datetimeFo
7590: 72 6d 61 74 53 74 72 69 6e 67 29 3b 0d 0a 20 20  rmatString);..  
75a0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c    }....    /// <
75b0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
75c0: 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 73 74 72  / Converts a str
75d0: 69 6e 67 20 69 6e 74 6f 20 61 20 44 61 74 65 54  ing into a DateT
75e0: 69 6d 65 2c 20 75 73 69 6e 67 20 74 68 65 20 44  ime, using the D
75f0: 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 2c 20 44  ateTimeFormat, D
7600: 61 74 65 54 69 6d 65 4b 69 6e 64 2c 0d 0a 20 20  ateTimeKind,..  
7610: 20 20 2f 2f 2f 20 61 6e 64 20 44 61 74 65 54 69    /// and DateTi
7620: 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 20 73  meFormatString s
7630: 70 65 63 69 66 69 65 64 20 66 6f 72 20 74 68 65  pecified for the
7640: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 68 65 6e   connection when
7650: 20 69 74 20 77 61 73 20 6f 70 65 6e 65 64 2e 0d   it was opened..
7660: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
7670: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
7680: 72 61 6d 20 6e 61 6d 65 3d 22 64 61 74 65 56 61  ram name="dateVa
7690: 6c 75 65 22 3e 54 68 65 20 44 61 74 65 54 69 6d  lue">The DateTim
76a0: 65 20 76 61 6c 75 65 20 74 6f 20 63 6f 6e 76 65  e value to conve
76b0: 72 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  rt</param>..    
76c0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
76d0: 22 66 6f 72 6d 61 74 22 3e 54 68 65 20 53 51 4c  "format">The SQL
76e0: 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73 20 74  iteDateFormats t
76f0: 6f 20 75 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a  o use.</param>..
7700: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
7710: 61 6d 65 3d 22 6b 69 6e 64 22 3e 54 68 65 20 44  ame="kind">The D
7720: 61 74 65 54 69 6d 65 4b 69 6e 64 20 74 6f 20 75  ateTimeKind to u
7730: 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  se.</param>..   
7740: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
7750: 3d 22 66 6f 72 6d 61 74 53 74 72 69 6e 67 22 3e  ="formatString">
7760: 54 68 65 20 44 61 74 65 54 69 6d 65 20 66 6f 72  The DateTime for
7770: 6d 61 74 20 73 74 72 69 6e 67 20 74 6f 20 75 73  mat string to us
7780: 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  e.</param>..    
7790: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 45 69 74  /// <returns>Eit
77a0: 68 65 72 20 61 20 73 74 72 69 6e 67 20 63 6f 6e  her a string con
77b0: 74 61 69 6e 69 6e 67 20 74 68 65 20 6c 6f 6e 67  taining the long
77c0: 20 69 6e 74 65 67 65 72 20 6e 75 6d 62 65 72 20   integer number 
77d0: 6f 66 20 31 30 30 2d 6e 61 6e 6f 73 65 63 6f 6e  of 100-nanosecon
77e0: 64 20 75 6e 69 74 73 20 73 69 6e 63 65 20 53 79  d units since Sy
77f0: 73 74 65 6d 2e 44 61 74 65 54 69 6d 65 2e 4d 69  stem.DateTime.Mi
7800: 6e 56 61 6c 75 65 2c 20 61 0d 0a 20 20 20 20 2f  nValue, a..    /
7810: 2f 2f 20 4a 75 6c 69 61 6e 20 64 61 79 20 64 6f  // Julian day do
7820: 75 62 6c 65 2c 20 61 6e 20 69 6e 74 65 67 65 72  uble, an integer
7830: 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 6f 6e   number of secon
7840: 64 73 20 73 69 6e 63 65 20 74 68 65 20 55 6e 69  ds since the Uni
7850: 78 20 65 70 6f 63 68 2c 20 61 20 63 75 6c 74 75  x epoch, a cultu
7860: 72 65 2d 69 6e 64 65 70 65 6e 64 65 6e 74 20 66  re-independent f
7870: 6f 72 6d 61 74 74 65 64 20 64 61 74 65 20 61 6e  ormatted date an
7880: 64 20 74 69 6d 65 0d 0a 20 20 20 20 2f 2f 2f 20  d time..    /// 
7890: 73 74 72 69 6e 67 2c 20 61 20 66 6f 72 6d 61 74  string, a format
78a0: 74 65 64 20 64 61 74 65 20 61 6e 64 20 74 69 6d  ted date and tim
78b0: 65 20 73 74 72 69 6e 67 20 69 6e 20 74 68 65 20  e string in the 
78c0: 63 75 72 72 65 6e 74 20 63 75 6c 74 75 72 65 2c  current culture,
78d0: 20 6f 72 20 61 6e 20 49 53 4f 38 36 30 31 2d 66   or an ISO8601-f
78e0: 6f 72 6d 61 74 20 64 61 74 65 2f 74 69 6d 65 20  ormat date/time 
78f0: 73 74 72 69 6e 67 2e 3c 2f 72 65 74 75 72 6e 73  string.</returns
7900: 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74  >..    public st
7910: 61 74 69 63 20 73 74 72 69 6e 67 20 54 6f 53 74  atic string ToSt
7920: 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 44  ring(..        D
7930: 61 74 65 54 69 6d 65 20 64 61 74 65 56 61 6c 75  ateTime dateValu
7940: 65 2c 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  e,..        SQLi
7950: 74 65 44 61 74 65 46 6f 72 6d 61 74 73 20 66 6f  teDateFormats fo
7960: 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 44  rmat,..        D
7970: 61 74 65 54 69 6d 65 4b 69 6e 64 20 6b 69 6e 64  ateTimeKind kind
7980: 2c 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e  ,..        strin
7990: 67 20 66 6f 72 6d 61 74 53 74 72 69 6e 67 0d 0a  g formatString..
79a0: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b          )..    {
79b0: 0d 0a 20 20 20 20 20 20 20 20 73 77 69 74 63 68  ..        switch
79c0: 20 28 66 6f 72 6d 61 74 29 0d 0a 20 20 20 20 20   (format)..     
79d0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
79e0: 20 20 63 61 73 65 20 53 51 4c 69 74 65 44 61 74    case SQLiteDat
79f0: 65 46 6f 72 6d 61 74 73 2e 54 69 63 6b 73 3a 0d  eFormats.Ticks:.
7a00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7a10: 20 72 65 74 75 72 6e 20 64 61 74 65 56 61 6c 75   return dateValu
7a20: 65 2e 54 69 63 6b 73 2e 54 6f 53 74 72 69 6e 67  e.Ticks.ToString
7a30: 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76  (CultureInfo.Inv
7a40: 61 72 69 61 6e 74 43 75 6c 74 75 72 65 29 3b 0d  ariantCulture);.
7a50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
7a60: 65 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d  e SQLiteDateForm
7a70: 61 74 73 2e 4a 75 6c 69 61 6e 44 61 79 3a 0d 0a  ats.JulianDay:..
7a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7a90: 72 65 74 75 72 6e 20 54 6f 4a 75 6c 69 61 6e 44  return ToJulianD
7aa0: 61 79 28 64 61 74 65 56 61 6c 75 65 29 2e 54 6f  ay(dateValue).To
7ab0: 53 74 72 69 6e 67 28 43 75 6c 74 75 72 65 49 6e  String(CultureIn
7ac0: 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74  fo.InvariantCult
7ad0: 75 72 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ure);..         
7ae0: 20 20 20 63 61 73 65 20 53 51 4c 69 74 65 44 61     case SQLiteDa
7af0: 74 65 46 6f 72 6d 61 74 73 2e 55 6e 69 78 45 70  teFormats.UnixEp
7b00: 6f 63 68 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  och:..          
7b10: 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 28 6c        return ((l
7b20: 6f 6e 67 29 28 64 61 74 65 56 61 6c 75 65 2e 53  ong)(dateValue.S
7b30: 75 62 74 72 61 63 74 28 55 6e 69 78 45 70 6f 63  ubtract(UnixEpoc
7b40: 68 29 2e 54 69 63 6b 73 20 2f 20 54 69 6d 65 53  h).Ticks / TimeS
7b50: 70 61 6e 2e 54 69 63 6b 73 50 65 72 53 65 63 6f  pan.TicksPerSeco
7b60: 6e 64 29 29 2e 54 6f 53 74 72 69 6e 67 28 29 3b  nd)).ToString();
7b70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
7b80: 73 65 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72  se SQLiteDateFor
7b90: 6d 61 74 73 2e 49 6e 76 61 72 69 61 6e 74 43 75  mats.InvariantCu
7ba0: 6c 74 75 72 65 3a 0d 0a 20 20 20 20 20 20 20 20  lture:..        
7bb0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64          return d
7bc0: 61 74 65 56 61 6c 75 65 2e 54 6f 53 74 72 69 6e  ateValue.ToStrin
7bd0: 67 28 28 66 6f 72 6d 61 74 53 74 72 69 6e 67 20  g((formatString 
7be0: 21 3d 20 6e 75 6c 6c 29 20 3f 0d 0a 20 20 20 20  != null) ?..    
7bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7c00: 66 6f 72 6d 61 74 53 74 72 69 6e 67 20 3a 20 46  formatString : F
7c10: 75 6c 6c 46 6f 72 6d 61 74 2c 20 43 75 6c 74 75  ullFormat, Cultu
7c20: 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74  reInfo.Invariant
7c30: 43 75 6c 74 75 72 65 29 3b 0d 0a 20 20 20 20 20  Culture);..     
7c40: 20 20 20 20 20 20 20 63 61 73 65 20 53 51 4c 69         case SQLi
7c50: 74 65 44 61 74 65 46 6f 72 6d 61 74 73 2e 43 75  teDateFormats.Cu
7c60: 72 72 65 6e 74 43 75 6c 74 75 72 65 3a 0d 0a 20  rrentCulture:.. 
7c70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
7c80: 65 74 75 72 6e 20 64 61 74 65 56 61 6c 75 65 2e  eturn dateValue.
7c90: 54 6f 53 74 72 69 6e 67 28 28 66 6f 72 6d 61 74  ToString((format
7ca0: 53 74 72 69 6e 67 20 21 3d 20 6e 75 6c 6c 29 20  String != null) 
7cb0: 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ?..             
7cc0: 20 20 20 20 20 20 20 66 6f 72 6d 61 74 53 74 72         formatStr
7cd0: 69 6e 67 20 3a 20 46 75 6c 6c 46 6f 72 6d 61 74  ing : FullFormat
7ce0: 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75  , CultureInfo.Cu
7cf0: 72 72 65 6e 74 43 75 6c 74 75 72 65 29 3b 0d 0a  rrentCulture);..
7d00: 20 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61              defa
7d10: 75 6c 74 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  ult:..          
7d20: 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 64 61        return (da
7d30: 74 65 56 61 6c 75 65 2e 4b 69 6e 64 20 3d 3d 20  teValue.Kind == 
7d40: 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e 55 6e 73  DateTimeKind.Uns
7d50: 70 65 63 69 66 69 65 64 29 20 3f 0d 0a 20 20 20  pecified) ?..   
7d60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7d70: 20 44 61 74 65 54 69 6d 65 2e 53 70 65 63 69 66   DateTime.Specif
7d80: 79 4b 69 6e 64 28 64 61 74 65 56 61 6c 75 65 2c  yKind(dateValue,
7d90: 20 6b 69 6e 64 29 2e 54 6f 53 74 72 69 6e 67 28   kind).ToString(
7da0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7db0: 20 20 20 20 20 20 20 20 20 20 47 65 74 44 61 74            GetDat
7dc0: 65 54 69 6d 65 4b 69 6e 64 46 6f 72 6d 61 74 28  eTimeKindFormat(
7dd0: 6b 69 6e 64 2c 20 66 6f 72 6d 61 74 53 74 72 69  kind, formatStri
7de0: 6e 67 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ng),..          
7df0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7e00: 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e    CultureInfo.In
7e10: 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 29 20  variantCulture) 
7e20: 3a 20 64 61 74 65 56 61 6c 75 65 2e 54 6f 53 74  : dateValue.ToSt
7e30: 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 20  ring(..         
7e40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47                 G
7e50: 65 74 44 61 74 65 54 69 6d 65 4b 69 6e 64 46 6f  etDateTimeKindFo
7e60: 72 6d 61 74 28 64 61 74 65 56 61 6c 75 65 2e 4b  rmat(dateValue.K
7e70: 69 6e 64 2c 20 66 6f 72 6d 61 74 53 74 72 69 6e  ind, formatStrin
7e80: 67 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  g),..           
7e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7ea0: 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76   CultureInfo.Inv
7eb0: 61 72 69 61 6e 74 43 75 6c 74 75 72 65 29 3b 0d  ariantCulture);.
7ec0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
7ed0: 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
7ee0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
7ef0: 49 6e 74 65 72 6e 61 6c 20 66 75 6e 63 74 69 6f  Internal functio
7f00: 6e 20 74 6f 20 63 6f 6e 76 65 72 74 20 61 20 55  n to convert a U
7f10: 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 49 6e 74  TF-8 encoded Int
7f20: 50 74 72 20 6f 66 20 74 68 65 20 73 70 65 63 69  Ptr of the speci
7f30: 66 69 65 64 20 6c 65 6e 67 74 68 20 74 6f 20 61  fied length to a
7f40: 20 44 61 74 65 54 69 6d 65 2e 0d 0a 20 20 20 20   DateTime...    
7f50: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
7f60: 20 20 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73      /// <remarks
7f70: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  >..    /// This 
7f80: 69 73 20 61 20 63 6f 6e 76 65 6e 69 65 6e 63 65  is a convenience
7f90: 20 66 75 6e 63 74 69 6f 6e 2c 20 77 68 69 63 68   function, which
7fa0: 20 66 69 72 73 74 20 63 61 6c 6c 73 20 54 6f 53   first calls ToS
7fb0: 74 72 69 6e 67 28 29 20 6f 6e 20 74 68 65 20 49  tring() on the I
7fc0: 6e 74 50 74 72 20 74 6f 20 63 6f 6e 76 65 72 74  ntPtr to convert
7fd0: 20 69 74 20 74 6f 20 61 20 73 74 72 69 6e 67 2c   it to a string,
7fe0: 20 74 68 65 6e 20 63 61 6c 6c 73 0d 0a 20 20 20   then calls..   
7ff0: 20 2f 2f 2f 20 54 6f 44 61 74 65 54 69 6d 65 28   /// ToDateTime(
8000: 29 20 6f 6e 20 74 68 65 20 73 74 72 69 6e 67 20  ) on the string 
8010: 74 6f 20 72 65 74 75 72 6e 20 61 20 44 61 74 65  to return a Date
8020: 54 69 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  Time...    /// <
8030: 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f  /remarks>..    /
8040: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
8050: 70 74 72 22 3e 41 20 70 6f 69 6e 74 65 72 20 74  ptr">A pointer t
8060: 6f 20 74 68 65 20 55 54 46 2d 38 20 65 6e 63 6f  o the UTF-8 enco
8070: 64 65 64 20 73 74 72 69 6e 67 3c 2f 70 61 72 61  ded string</para
8080: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
8090: 61 6d 20 6e 61 6d 65 3d 22 6c 65 6e 22 3e 54 68  am name="len">Th
80a0: 65 20 6c 65 6e 67 74 68 20 69 6e 20 62 79 74 65  e length in byte
80b0: 73 20 6f 66 20 74 68 65 20 73 74 72 69 6e 67 3c  s of the string<
80c0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
80d0: 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20 70 61   <returns>The pa
80e0: 72 73 65 64 20 44 61 74 65 54 69 6d 65 20 76 61  rsed DateTime va
80f0: 6c 75 65 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  lue</returns>.. 
8100: 20 20 20 69 6e 74 65 72 6e 61 6c 20 44 61 74 65     internal Date
8110: 54 69 6d 65 20 54 6f 44 61 74 65 54 69 6d 65 28  Time ToDateTime(
8120: 49 6e 74 50 74 72 20 70 74 72 2c 20 69 6e 74 20  IntPtr ptr, int 
8130: 6c 65 6e 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  len)..    {..   
8140: 20 20 20 72 65 74 75 72 6e 20 54 6f 44 61 74 65     return ToDate
8150: 54 69 6d 65 28 54 6f 53 74 72 69 6e 67 28 70 74  Time(ToString(pt
8160: 72 2c 20 6c 65 6e 29 29 3b 0d 0a 20 20 20 20 7d  r, len));..    }
8170: 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
8180: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
8190: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53  mary>..    /// S
81a0: 6d 61 72 74 20 6d 65 74 68 6f 64 20 6f 66 20 73  mart method of s
81b0: 70 6c 69 74 74 69 6e 67 20 61 20 73 74 72 69 6e  plitting a strin
81c0: 67 2e 20 20 53 6b 69 70 73 20 71 75 6f 74 65 64  g.  Skips quoted
81d0: 20 65 6c 65 6d 65 6e 74 73 2c 20 72 65 6d 6f 76   elements, remov
81e0: 65 73 20 74 68 65 20 71 75 6f 74 65 73 2e 0d 0a  es the quotes...
81f0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
8200: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 6d  y>..    /// <rem
8210: 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  arks>..    /// T
8220: 68 69 73 20 73 70 6c 69 74 20 66 75 6e 63 74 69  his split functi
8230: 6f 6e 20 77 6f 72 6b 73 20 73 6f 6d 65 77 68 61  on works somewha
8240: 74 20 6c 69 6b 65 20 74 68 65 20 53 74 72 69 6e  t like the Strin
8250: 67 2e 53 70 6c 69 74 28 29 20 66 75 6e 63 74 69  g.Split() functi
8260: 6f 6e 20 69 6e 20 74 68 61 74 20 69 74 20 62 72  on in that it br
8270: 65 61 6b 73 20 61 70 61 72 74 20 61 20 73 74 72  eaks apart a str
8280: 69 6e 67 20 69 6e 74 6f 0d 0a 20 20 20 20 2f 2f  ing into..    //
8290: 2f 20 70 69 65 63 65 73 20 61 6e 64 20 72 65 74  / pieces and ret
82a0: 75 72 6e 73 20 74 68 65 20 70 69 65 63 65 73 20  urns the pieces 
82b0: 61 73 20 61 6e 20 61 72 72 61 79 2e 20 20 54 68  as an array.  Th
82c0: 65 20 70 72 69 6d 61 72 79 20 64 69 66 66 65 72  e primary differ
82d0: 65 6e 63 65 73 20 61 72 65 3a 0d 0a 20 20 20 20  ences are:..    
82e0: 2f 2f 2f 20 3c 6c 69 73 74 20 74 79 70 65 3d 22  /// <list type="
82f0: 62 75 6c 6c 65 74 22 3e 0d 0a 20 20 20 20 2f 2f  bullet">..    //
8300: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
8310: 74 69 6f 6e 3e 4f 6e 6c 79 20 6f 6e 65 20 63 68  tion>Only one ch
8320: 61 72 61 63 74 65 72 20 63 61 6e 20 62 65 20 70  aracter can be p
8330: 72 6f 76 69 64 65 64 20 61 73 20 61 20 73 65 70  rovided as a sep
8340: 61 72 61 74 6f 72 20 63 68 61 72 61 63 74 65 72  arator character
8350: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
8360: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
8370: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
8380: 6e 3e 51 75 6f 74 65 64 20 74 65 78 74 20 69 6e  n>Quoted text in
8390: 73 69 64 65 20 74 68 65 20 73 74 72 69 6e 67 20  side the string 
83a0: 69 73 20 73 6b 69 70 70 65 64 20 6f 76 65 72 20  is skipped over 
83b0: 77 68 65 6e 20 73 65 61 72 63 68 69 6e 67 20 66  when searching f
83c0: 6f 72 20 74 68 65 20 73 65 70 61 72 61 74 6f 72  or the separator
83d0: 2c 20 61 6e 64 20 74 68 65 20 71 75 6f 74 65 73  , and the quotes
83e0: 20 61 72 65 20 72 65 6d 6f 76 65 64 2e 3c 2f 64   are removed.</d
83f0: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
8400: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 6c 69  m>..    /// </li
8410: 73 74 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 75  st>..    /// Thu
8420: 73 2c 20 69 66 20 73 70 6c 69 74 74 69 6e 67 20  s, if splitting 
8430: 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 74  the following st
8440: 72 69 6e 67 20 6c 6f 6f 6b 69 6e 67 20 66 6f 72  ring looking for
8450: 20 61 20 63 6f 6d 6d 61 3a 3c 62 72 2f 3e 0d 0a   a comma:<br/>..
8460: 20 20 20 20 2f 2f 2f 20 4f 6e 65 2c 54 77 6f 2c      /// One,Two,
8470: 20 22 54 68 72 65 65 2c 20 46 6f 75 72 22 2c 20   "Three, Four", 
8480: 46 69 76 65 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f  Five<br/>..    /
8490: 2f 2f 20 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f  // <br/>..    //
84a0: 2f 20 54 68 65 20 72 65 73 75 6c 74 69 6e 67 20  / The resulting 
84b0: 61 72 72 61 79 20 77 6f 75 6c 64 20 63 6f 6e 74  array would cont
84c0: 61 69 6e 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f  ain<br/>..    //
84d0: 2f 20 5b 30 5d 20 4f 6e 65 3c 62 72 2f 3e 0d 0a  / [0] One<br/>..
84e0: 20 20 20 20 2f 2f 2f 20 5b 31 5d 20 54 77 6f 3c      /// [1] Two<
84f0: 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 5b 32  br/>..    /// [2
8500: 5d 20 54 68 72 65 65 2c 20 46 6f 75 72 3c 62 72  ] Three, Four<br
8510: 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 5b 33 5d 20  />..    /// [3] 
8520: 46 69 76 65 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f  Five<br/>..    /
8530: 2f 2f 20 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f  // <br/>..    //
8540: 2f 20 4e 6f 74 65 20 74 68 61 74 20 74 68 65 20  / Note that the 
8550: 6c 65 61 64 69 6e 67 20 61 6e 64 20 74 72 61 69  leading and trai
8560: 6c 69 6e 67 20 73 70 61 63 65 73 20 77 65 72 65  ling spaces were
8570: 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20 65 61   removed from ea
8580: 63 68 20 69 74 65 6d 20 64 75 72 69 6e 67 20 74  ch item during t
8590: 68 65 20 73 70 6c 69 74 2e 0d 0a 20 20 20 20 2f  he split...    /
85a0: 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20  // </remarks>.. 
85b0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
85c0: 6d 65 3d 22 73 6f 75 72 63 65 22 3e 53 6f 75 72  me="source">Sour
85d0: 63 65 20 73 74 72 69 6e 67 20 74 6f 20 73 70 6c  ce string to spl
85e0: 69 74 20 61 70 61 72 74 3c 2f 70 61 72 61 6d 3e  it apart</param>
85f0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
8600: 20 6e 61 6d 65 3d 22 73 65 70 61 72 61 74 6f 72   name="separator
8610: 22 3e 53 65 70 61 72 61 74 6f 72 20 63 68 61 72  ">Separator char
8620: 61 63 74 65 72 3c 2f 70 61 72 61 6d 3e 0d 0a 20  acter</param>.. 
8630: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
8640: 41 20 73 74 72 69 6e 67 20 61 72 72 61 79 20 6f  A string array o
8650: 66 20 74 68 65 20 73 70 6c 69 74 20 75 70 20 65  f the split up e
8660: 6c 65 6d 65 6e 74 73 3c 2f 72 65 74 75 72 6e 73  lements</returns
8670: 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74  >..    public st
8680: 61 74 69 63 20 73 74 72 69 6e 67 5b 5d 20 53 70  atic string[] Sp
8690: 6c 69 74 28 73 74 72 69 6e 67 20 73 6f 75 72 63  lit(string sourc
86a0: 65 2c 20 63 68 61 72 20 73 65 70 61 72 61 74 6f  e, char separato
86b0: 72 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  r)..    {..     
86c0: 20 63 68 61 72 5b 5d 20 74 6f 6b 73 20 3d 20 6e   char[] toks = n
86d0: 65 77 20 63 68 61 72 5b 32 5d 20 7b 20 27 5c 22  ew char[2] { '\"
86e0: 27 2c 20 73 65 70 61 72 61 74 6f 72 20 7d 3b 0d  ', separator };.
86f0: 0a 20 20 20 20 20 20 63 68 61 72 5b 5d 20 71 75  .      char[] qu
8700: 6f 74 20 3d 20 6e 65 77 20 63 68 61 72 5b 31 5d  ot = new char[1]
8710: 20 7b 20 27 5c 22 27 20 7d 3b 0d 0a 20 20 20 20   { '\"' };..    
8720: 20 20 69 6e 74 20 6e 20 3d 20 30 3b 0d 0a 20 20    int n = 0;..  
8730: 20 20 20 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e      List<string>
8740: 20 6c 73 20 3d 20 6e 65 77 20 4c 69 73 74 3c 73   ls = new List<s
8750: 74 72 69 6e 67 3e 28 29 3b 0d 0a 20 20 20 20 20  tring>();..     
8760: 20 73 74 72 69 6e 67 20 73 3b 0d 0a 0d 0a 20 20   string s;....  
8770: 20 20 20 20 77 68 69 6c 65 20 28 73 6f 75 72 63      while (sourc
8780: 65 2e 4c 65 6e 67 74 68 20 3e 20 30 29 0d 0a 20  e.Length > 0).. 
8790: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
87a0: 6e 20 3d 20 73 6f 75 72 63 65 2e 49 6e 64 65 78  n = source.Index
87b0: 4f 66 41 6e 79 28 74 6f 6b 73 2c 20 6e 29 3b 0d  OfAny(toks, n);.
87c0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 6e 20 3d  .        if (n =
87d0: 3d 20 2d 31 29 20 62 72 65 61 6b 3b 0d 0a 20 20  = -1) break;..  
87e0: 20 20 20 20 20 20 69 66 20 28 73 6f 75 72 63 65        if (source
87f0: 5b 6e 5d 20 3d 3d 20 74 6f 6b 73 5b 30 5d 29 0d  [n] == toks[0]).
8800: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
8810: 20 20 20 20 20 20 2f 2f 73 6f 75 72 63 65 20 3d        //source =
8820: 20 73 6f 75 72 63 65 2e 52 65 6d 6f 76 65 28 6e   source.Remove(n
8830: 2c 20 31 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  , 1);..         
8840: 20 6e 20 3d 20 73 6f 75 72 63 65 2e 49 6e 64 65   n = source.Inde
8850: 78 4f 66 41 6e 79 28 71 75 6f 74 2c 20 6e 20 2b  xOfAny(quot, n +
8860: 20 31 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20   1);..          
8870: 69 66 20 28 6e 20 3d 3d 20 2d 31 29 0d 0a 20 20  if (n == -1)..  
8880: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
8890: 20 20 20 20 20 20 20 2f 2f 73 6f 75 72 63 65 20         //source 
88a0: 3d 20 22 5c 22 22 20 2b 20 73 6f 75 72 63 65 3b  = "\"" + source;
88b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 72  ..            br
88c0: 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  eak;..          
88d0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 6e 2b 2b  }..          n++
88e0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 73  ;..          //s
88f0: 6f 75 72 63 65 20 3d 20 73 6f 75 72 63 65 2e 52  ource = source.R
8900: 65 6d 6f 76 65 28 6e 2c 20 31 29 3b 0d 0a 20 20  emove(n, 1);..  
8910: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
8920: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 7b   else..        {
8930: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 20 3d 20  ..          s = 
8940: 73 6f 75 72 63 65 2e 53 75 62 73 74 72 69 6e 67  source.Substring
8950: 28 30 2c 20 6e 29 2e 54 72 69 6d 28 29 3b 0d 0a  (0, n).Trim();..
8960: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 2e            if (s.
8970: 4c 65 6e 67 74 68 20 3e 20 31 20 26 26 20 73 5b  Length > 1 && s[
8980: 30 5d 20 3d 3d 20 71 75 6f 74 5b 30 5d 20 26 26  0] == quot[0] &&
8990: 20 73 5b 73 2e 4c 65 6e 67 74 68 20 2d 20 31 5d   s[s.Length - 1]
89a0: 20 3d 3d 20 73 5b 30 5d 29 0d 0a 20 20 20 20 20   == s[0])..     
89b0: 20 20 20 20 20 20 20 73 20 3d 20 73 2e 53 75 62         s = s.Sub
89c0: 73 74 72 69 6e 67 28 31 2c 20 73 2e 4c 65 6e 67  string(1, s.Leng
89d0: 74 68 20 2d 20 32 29 3b 0d 0a 0d 0a 20 20 20 20  th - 2);....    
89e0: 20 20 20 20 20 20 73 6f 75 72 63 65 20 3d 20 73        source = s
89f0: 6f 75 72 63 65 2e 53 75 62 73 74 72 69 6e 67 28  ource.Substring(
8a00: 6e 20 2b 20 31 29 2e 54 72 69 6d 28 29 3b 0d 0a  n + 1).Trim();..
8a10: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 2e            if (s.
8a20: 4c 65 6e 67 74 68 20 3e 20 30 29 20 6c 73 2e 41  Length > 0) ls.A
8a30: 64 64 28 73 29 3b 0d 0a 20 20 20 20 20 20 20 20  dd(s);..        
8a40: 20 20 6e 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20    n = 0;..      
8a50: 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20    }..      }..  
8a60: 20 20 20 20 69 66 20 28 73 6f 75 72 63 65 2e 4c      if (source.L
8a70: 65 6e 67 74 68 20 3e 20 30 29 0d 0a 20 20 20 20  ength > 0)..    
8a80: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 73 20 3d    {..        s =
8a90: 20 73 6f 75 72 63 65 2e 54 72 69 6d 28 29 3b 0d   source.Trim();.
8aa0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 73 2e 4c  .        if (s.L
8ab0: 65 6e 67 74 68 20 3e 20 31 20 26 26 20 73 5b 30  ength > 1 && s[0
8ac0: 5d 20 3d 3d 20 71 75 6f 74 5b 30 5d 20 26 26 20  ] == quot[0] && 
8ad0: 73 5b 73 2e 4c 65 6e 67 74 68 20 2d 20 31 5d 20  s[s.Length - 1] 
8ae0: 3d 3d 20 73 5b 30 5d 29 0d 0a 20 20 20 20 20 20  == s[0])..      
8af0: 20 20 20 20 73 20 3d 20 73 2e 53 75 62 73 74 72      s = s.Substr
8b00: 69 6e 67 28 31 2c 20 73 2e 4c 65 6e 67 74 68 20  ing(1, s.Length 
8b10: 2d 20 32 29 3b 0d 0a 20 20 20 20 20 20 20 20 6c  - 2);..        l
8b20: 73 2e 41 64 64 28 73 29 3b 0d 0a 20 20 20 20 20  s.Add(s);..     
8b30: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 73 74 72 69   }....      stri
8b40: 6e 67 5b 5d 20 61 72 20 3d 20 6e 65 77 20 73 74  ng[] ar = new st
8b50: 72 69 6e 67 5b 6c 73 2e 43 6f 75 6e 74 5d 3b 0d  ring[ls.Count];.
8b60: 0a 20 20 20 20 20 20 6c 73 2e 43 6f 70 79 54 6f  .      ls.CopyTo
8b70: 28 61 72 2c 20 30 29 3b 0d 0a 0d 0a 20 20 20 20  (ar, 0);....    
8b80: 20 20 72 65 74 75 72 6e 20 61 72 3b 0d 0a 20 20    return ar;..  
8b90: 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c    }....    /// <
8ba0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
8bb0: 2f 20 53 70 6c 69 74 73 20 74 68 65 20 73 70 65  / Splits the spe
8bc0: 63 69 66 69 65 64 20 73 74 72 69 6e 67 20 69 6e  cified string in
8bd0: 74 6f 20 6d 75 6c 74 69 70 6c 65 20 73 74 72 69  to multiple stri
8be0: 6e 67 73 20 62 61 73 65 64 20 6f 6e 20 61 20 73  ngs based on a s
8bf0: 65 70 61 72 61 74 6f 72 0d 0a 20 20 20 20 2f 2f  eparator..    //
8c00: 2f 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  / and returns th
8c10: 65 20 72 65 73 75 6c 74 20 61 73 20 61 6e 20 61  e result as an a
8c20: 72 72 61 79 20 6f 66 20 73 74 72 69 6e 67 73 2e  rray of strings.
8c30: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
8c40: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
8c50: 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65  aram name="value
8c60: 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
8c70: 73 74 72 69 6e 67 20 74 6f 20 73 70 6c 69 74 20  string to split 
8c80: 69 6e 74 6f 20 70 69 65 63 65 73 20 62 61 73 65  into pieces base
8c90: 64 20 6f 6e 20 74 68 65 20 73 65 70 61 72 61 74  d on the separat
8ca0: 6f 72 20 63 68 61 72 61 63 74 65 72 2e 20 20 49  or character.  I
8cb0: 66 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 69 73 20  f..    /// this 
8cc0: 73 74 72 69 6e 67 20 69 73 20 6e 75 6c 6c 2c 20  string is null, 
8cd0: 6e 75 6c 6c 20 77 69 6c 6c 20 61 6c 77 61 79 73  null will always
8ce0: 20 62 65 20 72 65 74 75 72 6e 65 64 2e 20 20 49   be returned.  I
8cf0: 66 20 74 68 69 73 20 73 74 72 69 6e 67 20 69 73  f this string is
8d00: 0d 0a 20 20 20 20 2f 2f 2f 20 65 6d 70 74 79 2c  ..    /// empty,
8d10: 20 61 6e 20 61 72 72 61 79 20 6f 66 20 7a 65 72   an array of zer
8d20: 6f 20 73 74 72 69 6e 67 73 20 77 69 6c 6c 20 61  o strings will a
8d30: 6c 77 61 79 73 20 62 65 20 72 65 74 75 72 6e 65  lways be returne
8d40: 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  d...    /// </pa
8d50: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ram>..    /// <p
8d60: 61 72 61 6d 20 6e 61 6d 65 3d 22 73 65 70 61 72  aram name="separ
8d70: 61 74 6f 72 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  ator">..    /// 
8d80: 54 68 65 20 63 68 61 72 61 63 74 65 72 20 75 73  The character us
8d90: 65 64 20 74 6f 20 64 69 76 69 64 65 20 74 68 65  ed to divide the
8da0: 20 6f 72 69 67 69 6e 61 6c 20 73 74 72 69 6e 67   original string
8db0: 20 69 6e 74 6f 20 73 75 62 2d 73 74 72 69 6e 67   into sub-string
8dc0: 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73  s...    /// This
8dd0: 20 63 68 61 72 61 63 74 65 72 20 63 61 6e 6e 6f   character canno
8de0: 74 20 62 65 20 61 20 62 61 63 6b 73 6c 61 73 68  t be a backslash
8df0: 20 6f 72 20 61 20 64 6f 75 62 6c 65 2d 71 75 6f   or a double-quo
8e00: 74 65 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 6e  te; otherwise, n
8e10: 6f 0d 0a 20 20 20 20 2f 2f 2f 20 77 6f 72 6b 20  o..    /// work 
8e20: 77 69 6c 6c 20 62 65 20 70 65 72 66 6f 72 6d 65  will be performe
8e30: 64 20 61 6e 64 20 6e 75 6c 6c 20 77 69 6c 6c 20  d and null will 
8e40: 62 65 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20  be returned...  
8e50: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
8e60: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
8e70: 61 6d 65 3d 22 6b 65 65 70 51 75 6f 74 65 22 3e  ame="keepQuote">
8e80: 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20 74 68 69  ..    /// If thi
8e90: 73 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 6e  s parameter is n
8ea0: 6f 6e 2d 7a 65 72 6f 2c 20 61 6c 6c 20 64 6f 75  on-zero, all dou
8eb0: 62 6c 65 2d 71 75 6f 74 65 20 63 68 61 72 61 63  ble-quote charac
8ec0: 74 65 72 73 20 77 69 6c 6c 20 62 65 0d 0a 20 20  ters will be..  
8ed0: 20 20 2f 2f 2f 20 72 65 74 61 69 6e 65 64 20 69    /// retained i
8ee0: 6e 20 74 68 65 20 72 65 74 75 72 6e 65 64 20 6c  n the returned l
8ef0: 69 73 74 20 6f 66 20 73 74 72 69 6e 67 73 3b 20  ist of strings; 
8f00: 6f 74 68 65 72 77 69 73 65 2c 20 74 68 65 79 20  otherwise, they 
8f10: 77 69 6c 6c 20 62 65 0d 0a 20 20 20 20 2f 2f 2f  will be..    ///
8f20: 20 64 72 6f 70 70 65 64 2e 0d 0a 20 20 20 20 2f   dropped...    /
8f30: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
8f40: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
8f50: 3d 22 65 72 72 6f 72 22 3e 0d 0a 20 20 20 20 2f  ="error">..    /
8f60: 2f 2f 20 55 70 6f 6e 20 66 61 69 6c 75 72 65 2c  // Upon failure,
8f70: 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   this parameter 
8f80: 77 69 6c 6c 20 62 65 20 6d 6f 64 69 66 69 65 64  will be modified
8f90: 20 74 6f 20 63 6f 6e 74 61 69 6e 20 61 6e 20 61   to contain an a
8fa0: 70 70 72 6f 70 72 69 61 74 65 0d 0a 20 20 20 20  ppropriate..    
8fb0: 2f 2f 2f 20 65 72 72 6f 72 20 6d 65 73 73 61 67  /// error messag
8fc0: 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  e...    /// </pa
8fd0: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
8fe0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f  eturns>..    ///
8ff0: 20 54 68 65 20 6e 65 77 20 61 72 72 61 79 20 6f   The new array o
9000: 66 20 73 74 72 69 6e 67 73 20 6f 72 20 6e 75 6c  f strings or nul
9010: 6c 20 69 66 20 74 68 65 20 69 6e 70 75 74 20 73  l if the input s
9020: 74 72 69 6e 67 20 69 73 20 6e 75 6c 6c 20 2d 4f  tring is null -O
9030: 52 2d 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20  R- the..    /// 
9040: 73 65 70 61 72 61 74 6f 72 20 63 68 61 72 61 63  separator charac
9050: 74 65 72 20 69 73 20 61 20 62 61 63 6b 73 6c 61  ter is a backsla
9060: 73 68 20 6f 72 20 61 20 64 6f 75 62 6c 65 2d 71  sh or a double-q
9070: 75 6f 74 65 20 2d 4f 52 2d 20 74 68 65 20 73 74  uote -OR- the st
9080: 72 69 6e 67 0d 0a 20 20 20 20 2f 2f 2f 20 63 6f  ring..    /// co
9090: 6e 74 61 69 6e 73 20 61 6e 20 75 6e 62 61 6c 61  ntains an unbala
90a0: 6e 63 65 64 20 62 61 63 6b 73 6c 61 73 68 20 6f  nced backslash o
90b0: 72 20 64 6f 75 62 6c 65 2d 71 75 6f 74 65 20 63  r double-quote c
90c0: 68 61 72 61 63 74 65 72 2e 0d 0a 20 20 20 20 2f  haracter...    /
90d0: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
90e0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
90f0: 69 63 20 73 74 72 69 6e 67 5b 5d 20 4e 65 77 53  ic string[] NewS
9100: 70 6c 69 74 28 0d 0a 20 20 20 20 20 20 20 20 73  plit(..        s
9110: 74 72 69 6e 67 20 76 61 6c 75 65 2c 0d 0a 20 20  tring value,..  
9120: 20 20 20 20 20 20 63 68 61 72 20 73 65 70 61 72        char separ
9130: 61 74 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 62  ator,..        b
9140: 6f 6f 6c 20 6b 65 65 70 51 75 6f 74 65 2c 0d 0a  ool keepQuote,..
9150: 20 20 20 20 20 20 20 20 72 65 66 20 73 74 72 69          ref stri
9160: 6e 67 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20  ng error..      
9170: 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20    )..    {..    
9180: 20 20 20 20 63 6f 6e 73 74 20 63 68 61 72 20 45      const char E
9190: 73 63 61 70 65 43 68 61 72 20 3d 20 27 5c 5c 27  scapeChar = '\\'
91a0: 3b 0d 0a 20 20 20 20 20 20 20 20 63 6f 6e 73 74  ;..        const
91b0: 20 63 68 61 72 20 51 75 6f 74 65 43 68 61 72 20   char QuoteChar 
91c0: 3d 20 27 5c 22 27 3b 0d 0a 0d 0a 20 20 20 20 20  = '\"';....     
91d0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f     //..        /
91e0: 2f 20 4e 4f 54 45 3a 20 49 74 20 69 73 20 69 6c  / NOTE: It is il
91f0: 6c 65 67 61 6c 20 66 6f 72 20 74 68 65 20 73 65  legal for the se
9200: 70 61 72 61 74 6f 72 20 63 68 61 72 61 63 74 65  parator characte
9210: 72 20 74 6f 20 62 65 20 65 69 74 68 65 72 20 61  r to be either a
9220: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20  ..        //    
9230: 20 20 20 62 61 63 6b 73 6c 61 73 68 20 6f 72 20     backslash or 
9240: 61 20 64 6f 75 62 6c 65 2d 71 75 6f 74 65 20 62  a double-quote b
9250: 65 63 61 75 73 65 20 62 6f 74 68 20 6f 66 20 74  ecause both of t
9260: 68 6f 73 65 20 63 68 61 72 61 63 74 65 72 73 0d  hose characters.
9270: 0a 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20  .        //     
9280: 20 20 61 72 65 20 75 73 65 64 20 66 6f 72 20 65    are used for e
9290: 73 63 61 70 69 6e 67 20 6f 74 68 65 72 20 63 68  scaping other ch
92a0: 61 72 61 63 74 65 72 73 20 28 65 2e 67 2e 20 74  aracters (e.g. t
92b0: 68 65 20 73 65 70 61 72 61 74 6f 72 0d 0a 20 20  he separator..  
92c0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63        //       c
92d0: 68 61 72 61 63 74 65 72 29 2e 0d 0a 20 20 20 20  haracter)...    
92e0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
92f0: 69 66 20 28 28 73 65 70 61 72 61 74 6f 72 20 3d  if ((separator =
9300: 3d 20 45 73 63 61 70 65 43 68 61 72 29 20 7c 7c  = EscapeChar) ||
9310: 20 28 73 65 70 61 72 61 74 6f 72 20 3d 3d 20 51   (separator == Q
9320: 75 6f 74 65 43 68 61 72 29 29 0d 0a 20 20 20 20  uoteChar))..    
9330: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
9340: 20 20 20 65 72 72 6f 72 20 3d 20 22 73 65 70 61     error = "sepa
9350: 72 61 74 6f 72 20 63 68 61 72 61 63 74 65 72 20  rator character 
9360: 63 61 6e 6e 6f 74 20 62 65 20 74 68 65 20 65 73  cannot be the es
9370: 63 61 70 65 20 6f 72 20 71 75 6f 74 65 20 63 68  cape or quote ch
9380: 61 72 61 63 74 65 72 73 22 3b 0d 0a 20 20 20 20  aracters";..    
9390: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
93a0: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ull;..        }.
93b0: 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 76  ...        if (v
93c0: 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  alue == null).. 
93d0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
93e0: 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 22 73        error = "s
93f0: 74 72 69 6e 67 20 76 61 6c 75 65 20 74 6f 20 73  tring value to s
9400: 70 6c 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 6e  plit cannot be n
9410: 75 6c 6c 22 3b 0d 0a 20 20 20 20 20 20 20 20 20  ull";..         
9420: 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
9430: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
9440: 20 20 20 20 20 20 69 6e 74 20 6c 65 6e 67 74 68        int length
9450: 20 3d 20 76 61 6c 75 65 2e 4c 65 6e 67 74 68 3b   = value.Length;
9460: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  ....        if (
9470: 6c 65 6e 67 74 68 20 3d 3d 20 30 29 0d 0a 20 20  length == 0)..  
9480: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
9490: 20 6e 65 77 20 73 74 72 69 6e 67 5b 30 5d 3b 0d   new string[0];.
94a0: 0a 0d 0a 20 20 20 20 20 20 20 20 4c 69 73 74 3c  ...        List<
94b0: 73 74 72 69 6e 67 3e 20 6c 69 73 74 20 3d 20 6e  string> list = n
94c0: 65 77 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e 28  ew List<string>(
94d0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 53 74 72 69  );..        Stri
94e0: 6e 67 42 75 69 6c 64 65 72 20 65 6c 65 6d 65 6e  ngBuilder elemen
94f0: 74 20 3d 20 6e 65 77 20 53 74 72 69 6e 67 42 75  t = new StringBu
9500: 69 6c 64 65 72 28 29 3b 0d 0a 20 20 20 20 20 20  ilder();..      
9510: 20 20 69 6e 74 20 69 6e 64 65 78 20 3d 20 30 3b    int index = 0;
9520: 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 65  ..        bool e
9530: 73 63 61 70 65 20 3d 20 66 61 6c 73 65 3b 0d 0a  scape = false;..
9540: 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 71 75 6f          bool quo
9550: 74 65 20 3d 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  te = false;.... 
9560: 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 69 6e         while (in
9570: 64 65 78 20 3c 20 6c 65 6e 67 74 68 29 0d 0a 20  dex < length).. 
9580: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
9590: 20 20 20 20 20 20 63 68 61 72 20 63 68 61 72 61        char chara
95a0: 63 74 65 72 20 3d 20 76 61 6c 75 65 5b 69 6e 64  cter = value[ind
95b0: 65 78 2b 2b 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20  ex++];....      
95c0: 20 20 20 20 20 20 69 66 20 28 65 73 63 61 70 65        if (escape
95d0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
95e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
95f0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
9600: 20 20 20 20 20 20 2f 2f 20 48 41 43 4b 3a 20 4f        // HACK: O
9610: 6e 6c 79 20 63 6f 6e 73 69 64 65 72 20 74 68 65  nly consider the
9620: 20 65 73 63 61 70 65 20 63 68 61 72 61 63 74 65   escape characte
9630: 72 20 74 6f 20 62 65 20 61 6e 20 61 63 74 75 61  r to be an actua
9640: 6c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  l..             
9650: 20 20 20 2f 2f 20 20 20 20 20 20 20 22 65 73 63     //       "esc
9660: 61 70 65 22 20 69 66 20 69 74 20 69 73 20 66 6f  ape" if it is fo
9670: 6c 6c 6f 77 65 64 20 62 79 20 61 20 72 65 73 65  llowed by a rese
9680: 72 76 65 64 20 63 68 61 72 61 63 74 65 72 3b 0d  rved character;.
9690: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
96a0: 20 2f 2f 20 20 20 20 20 20 20 6f 74 68 65 72 77   //       otherw
96b0: 69 73 65 2c 20 65 6d 69 74 20 74 68 65 20 6f 72  ise, emit the or
96c0: 69 67 69 6e 61 6c 20 65 73 63 61 70 65 20 63 68  iginal escape ch
96d0: 61 72 61 63 74 65 72 20 61 6e 64 0d 0a 20 20 20  aracter and..   
96e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
96f0: 20 20 20 20 20 20 74 68 65 20 63 75 72 72 65 6e        the curren
9700: 74 20 63 68 61 72 61 63 74 65 72 20 69 6e 20 61  t character in a
9710: 6e 20 65 66 66 6f 72 74 20 74 6f 20 68 65 6c 70  n effort to help
9720: 20 70 72 65 73 65 72 76 65 0d 0a 20 20 20 20 20   preserve..     
9730: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
9740: 20 20 20 20 74 68 65 20 6f 72 69 67 69 6e 61 6c      the original
9750: 20 73 74 72 69 6e 67 20 63 6f 6e 74 65 6e 74 2e   string content.
9760: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9770: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
9780: 20 20 20 20 20 20 69 66 20 28 28 63 68 61 72 61        if ((chara
9790: 63 74 65 72 20 21 3d 20 45 73 63 61 70 65 43 68  cter != EscapeCh
97a0: 61 72 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20  ar) &&..        
97b0: 20 20 20 20 20 20 20 20 20 20 20 20 28 63 68 61              (cha
97c0: 72 61 63 74 65 72 20 21 3d 20 51 75 6f 74 65 43  racter != QuoteC
97d0: 68 61 72 29 20 26 26 0d 0a 20 20 20 20 20 20 20  har) &&..       
97e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 68               (ch
97f0: 61 72 61 63 74 65 72 20 21 3d 20 73 65 70 61 72  aracter != separ
9800: 61 74 6f 72 29 29 0d 0a 20 20 20 20 20 20 20 20  ator))..        
9810: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
9820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
9830: 6c 65 6d 65 6e 74 2e 41 70 70 65 6e 64 28 45 73  lement.Append(Es
9840: 63 61 70 65 43 68 61 72 29 3b 0d 0a 20 20 20 20  capeChar);..    
9850: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
9860: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9870: 20 65 6c 65 6d 65 6e 74 2e 41 70 70 65 6e 64 28   element.Append(
9880: 63 68 61 72 61 63 74 65 72 29 3b 0d 0a 20 20 20  character);..   
9890: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 73 63               esc
98a0: 61 70 65 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20  ape = false;..  
98b0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
98c0: 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66           else if
98d0: 20 28 63 68 61 72 61 63 74 65 72 20 3d 3d 20 45   (character == E
98e0: 73 63 61 70 65 43 68 61 72 29 0d 0a 20 20 20 20  scapeChar)..    
98f0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
9900: 20 20 20 20 20 20 20 20 20 20 20 65 73 63 61 70             escap
9910: 65 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  e = true;..     
9920: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
9930: 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 63        else if (c
9940: 68 61 72 61 63 74 65 72 20 3d 3d 20 51 75 6f 74  haracter == Quot
9950: 65 43 68 61 72 29 0d 0a 20 20 20 20 20 20 20 20  eChar)..        
9960: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
9970: 20 20 20 20 20 20 20 69 66 20 28 6b 65 65 70 51         if (keepQ
9980: 75 6f 74 65 29 0d 0a 20 20 20 20 20 20 20 20 20  uote)..         
9990: 20 20 20 20 20 20 20 20 20 20 20 65 6c 65 6d 65             eleme
99a0: 6e 74 2e 41 70 70 65 6e 64 28 63 68 61 72 61 63  nt.Append(charac
99b0: 74 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ter);....       
99c0: 20 20 20 20 20 20 20 20 20 71 75 6f 74 65 20 3d           quote =
99d0: 20 21 71 75 6f 74 65 3b 0d 0a 20 20 20 20 20 20   !quote;..      
99e0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
99f0: 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 63 68       else if (ch
9a00: 61 72 61 63 74 65 72 20 3d 3d 20 73 65 70 61 72  aracter == separ
9a10: 61 74 6f 72 29 0d 0a 20 20 20 20 20 20 20 20 20  ator)..         
9a20: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
9a30: 20 20 20 20 20 20 69 66 20 28 71 75 6f 74 65 29        if (quote)
9a40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9a50: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
9a60: 20 20 20 20 20 20 20 20 20 65 6c 65 6d 65 6e 74           element
9a70: 2e 41 70 70 65 6e 64 28 63 68 61 72 61 63 74 65  .Append(characte
9a80: 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r);..           
9a90: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
9aa0: 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20          else..  
9ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
9ac0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9ad0: 20 20 20 20 20 6c 69 73 74 2e 41 64 64 28 65 6c       list.Add(el
9ae0: 65 6d 65 6e 74 2e 54 6f 53 74 72 69 6e 67 28 29  ement.ToString()
9af0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
9b00: 20 20 20 20 20 20 20 20 65 6c 65 6d 65 6e 74 2e          element.
9b10: 4c 65 6e 67 74 68 20 3d 20 30 3b 0d 0a 20 20 20  Length = 0;..   
9b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
9b30: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
9b40: 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d             else.
9b50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
9b60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9b70: 65 6c 65 6d 65 6e 74 2e 41 70 70 65 6e 64 28 63  element.Append(c
9b80: 68 61 72 61 63 74 65 72 29 3b 0d 0a 20 20 20 20  haracter);..    
9b90: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
9ba0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
9bb0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 4e  //..        // N
9bc0: 4f 54 45 3a 20 41 6e 20 75 6e 62 61 6c 61 6e 63  OTE: An unbalanc
9bd0: 65 64 20 65 73 63 61 70 65 20 6f 72 20 71 75 6f  ed escape or quo
9be0: 74 65 20 63 68 61 72 61 63 74 65 72 20 69 6e 20  te character in 
9bf0: 74 68 65 20 73 74 72 69 6e 67 20 69 73 0d 0a 20  the string is.. 
9c00: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
9c10: 63 6f 6e 73 69 64 65 72 65 64 20 74 6f 20 62 65  considered to be
9c20: 20 61 20 66 61 74 61 6c 20 65 72 72 6f 72 3b 20   a fatal error; 
9c30: 74 68 65 72 65 66 6f 72 65 2c 20 72 65 74 75 72  therefore, retur
9c40: 6e 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 20  n null...       
9c50: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 69 66 20   //..        if 
9c60: 28 65 73 63 61 70 65 20 7c 7c 20 71 75 6f 74 65  (escape || quote
9c70: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
9c80: 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20            error 
9c90: 3d 20 22 75 6e 62 61 6c 61 6e 63 65 64 20 65 73  = "unbalanced es
9ca0: 63 61 70 65 20 6f 72 20 71 75 6f 74 65 20 63 68  cape or quote ch
9cb0: 61 72 61 63 74 65 72 20 66 6f 75 6e 64 22 3b 0d  aracter found";.
9cc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
9cd0: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
9ce0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
9cf0: 69 66 20 28 65 6c 65 6d 65 6e 74 2e 4c 65 6e 67  if (element.Leng
9d00: 74 68 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20  th > 0)..       
9d10: 20 20 20 20 20 6c 69 73 74 2e 41 64 64 28 65 6c       list.Add(el
9d20: 65 6d 65 6e 74 2e 54 6f 53 74 72 69 6e 67 28 29  ement.ToString()
9d30: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65  );....        re
9d40: 74 75 72 6e 20 6c 69 73 74 2e 54 6f 41 72 72 61  turn list.ToArra
9d50: 79 28 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  y();..    }.... 
9d60: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
9d70: 0d 0a 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65  ..    /// Querie
9d80: 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
9d90: 65 20 73 74 72 69 6e 67 20 72 65 70 72 65 73 65  e string represe
9da0: 6e 74 61 74 69 6f 6e 20 66 6f 72 20 61 6e 20 6f  ntation for an o
9db0: 62 6a 65 63 74 2c 20 75 73 69 6e 67 20 74 68 65  bject, using the
9dc0: 0d 0a 20 20 20 20 2f 2f 2f 20 73 70 65 63 69 66  ..    /// specif
9dd0: 69 65 64 20 28 6f 72 20 63 75 72 72 65 6e 74 29  ied (or current)
9de0: 20 66 6f 72 6d 61 74 20 70 72 6f 76 69 64 65 72   format provider
9df0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
9e00: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
9e10: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 62 6a 22  param name="obj"
9e20: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f  >..    /// The o
9e30: 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 74  bject instance t
9e40: 6f 20 72 65 74 75 72 6e 20 74 68 65 20 73 74 72  o return the str
9e50: 69 6e 67 20 72 65 70 72 65 73 65 6e 74 61 74 69  ing representati
9e60: 6f 6e 20 66 6f 72 2e 0d 0a 20 20 20 20 2f 2f 2f  on for...    ///
9e70: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
9e80: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
9e90: 70 72 6f 76 69 64 65 72 22 3e 0d 0a 20 20 20 20  provider">..    
9ea0: 2f 2f 2f 20 54 68 65 20 66 6f 72 6d 61 74 20 70  /// The format p
9eb0: 72 6f 76 69 64 65 72 20 74 6f 20 75 73 65 20 2d  rovider to use -
9ec0: 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 74 68 65 20  OR- null if the 
9ed0: 63 75 72 72 65 6e 74 20 66 6f 72 6d 61 74 20 70  current format p
9ee0: 72 6f 76 69 64 65 72 20 66 6f 72 0d 0a 20 20 20  rovider for..   
9ef0: 20 2f 2f 2f 20 74 68 65 20 74 68 72 65 61 64 20   /// the thread 
9f00: 73 68 6f 75 6c 64 20 62 65 20 75 73 65 64 20 69  should be used i
9f10: 6e 73 74 65 61 64 2e 0d 0a 20 20 20 20 2f 2f 2f  nstead...    ///
9f20: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
9f30: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
9f40: 20 20 2f 2f 2f 20 54 68 65 20 73 74 72 69 6e 67    /// The string
9f50: 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20   representation 
9f60: 66 6f 72 20 74 68 65 20 6f 62 6a 65 63 74 20 69  for the object i
9f70: 6e 73 74 61 6e 63 65 20 2d 4f 52 2d 20 6e 75 6c  nstance -OR- nul
9f80: 6c 20 69 66 20 74 68 65 0d 0a 20 20 20 20 2f 2f  l if the..    //
9f90: 2f 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  / object instanc
9fa0: 65 20 69 73 20 61 6c 73 6f 20 6e 75 6c 6c 2e 0d  e is also null..
9fb0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72  .    /// </retur
9fc0: 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ns>..    public 
9fd0: 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 54 6f  static string To
9fe0: 53 74 72 69 6e 67 57 69 74 68 50 72 6f 76 69 64  StringWithProvid
9ff0: 65 72 28 0d 0a 20 20 20 20 20 20 20 20 6f 62 6a  er(..        obj
a000: 65 63 74 20 6f 62 6a 2c 0d 0a 20 20 20 20 20 20  ect obj,..      
a010: 20 20 49 46 6f 72 6d 61 74 50 72 6f 76 69 64 65    IFormatProvide
a020: 72 20 70 72 6f 76 69 64 65 72 0d 0a 20 20 20 20  r provider..    
a030: 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20      )..    {..  
a040: 20 20 20 20 20 20 69 66 20 28 6f 62 6a 20 3d 3d        if (obj ==
a050: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
a060: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
a070: 20 2f 2a 20 6e 75 6c 6c 20 2d 2d 3e 20 6e 75 6c   /* null --> nul
a080: 6c 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  l */....        
a090: 69 66 20 28 6f 62 6a 20 69 73 20 73 74 72 69 6e  if (obj is strin
a0a0: 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g)..            
a0b0: 72 65 74 75 72 6e 20 28 73 74 72 69 6e 67 29 6f  return (string)o
a0c0: 62 6a 3b 20 2f 2a 20 69 64 65 6e 74 69 74 79 20  bj; /* identity 
a0d0: 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 49 43  */....        IC
a0e0: 6f 6e 76 65 72 74 69 62 6c 65 20 63 6f 6e 76 65  onvertible conve
a0f0: 72 74 69 62 6c 65 20 3d 20 6f 62 6a 20 61 73 20  rtible = obj as 
a100: 49 43 6f 6e 76 65 72 74 69 62 6c 65 3b 0d 0a 0d  IConvertible;...
a110: 0a 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e  .        if (con
a120: 76 65 72 74 69 62 6c 65 20 21 3d 20 6e 75 6c 6c  vertible != null
a130: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  )..            r
a140: 65 74 75 72 6e 20 63 6f 6e 76 65 72 74 69 62 6c  eturn convertibl
a150: 65 2e 54 6f 53 74 72 69 6e 67 28 70 72 6f 76 69  e.ToString(provi
a160: 64 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  der);....       
a170: 20 72 65 74 75 72 6e 20 6f 62 6a 2e 54 6f 53 74   return obj.ToSt
a180: 72 69 6e 67 28 29 3b 20 2f 2a 20 6e 6f 74 20 49  ring(); /* not I
a190: 43 6f 6e 76 65 72 74 69 62 6c 65 20 2a 2f 0d 0a  Convertible */..
a1a0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
a1b0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
a1c0: 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20  /// Attempts to 
a1d0: 63 6f 6e 76 65 72 74 20 61 6e 20 61 72 62 69 74  convert an arbit
a1e0: 72 61 72 79 20 6f 62 6a 65 63 74 20 74 6f 20 74  rary object to t
a1f0: 68 65 20 42 6f 6f 6c 65 61 6e 20 64 61 74 61 20  he Boolean data 
a200: 74 79 70 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 4e  type...    /// N
a210: 75 6c 6c 20 6f 62 6a 65 63 74 20 76 61 6c 75 65  ull object value
a220: 73 20 61 72 65 20 63 6f 6e 76 65 72 74 65 64 20  s are converted 
a230: 74 6f 20 66 61 6c 73 65 2e 20 20 54 68 72 6f 77  to false.  Throw
a240: 73 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 0d 0a  s an exception..
a250: 20 20 20 20 2f 2f 2f 20 75 70 6f 6e 20 66 61 69      /// upon fai
a260: 6c 75 72 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  lure...    /// <
a270: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
a280: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
a290: 6f 62 6a 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  obj">..    /// T
a2a0: 68 65 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 20  he object value 
a2b0: 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20  to convert...   
a2c0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
a2d0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
a2e0: 6d 65 3d 22 70 72 6f 76 69 64 65 72 22 3e 0d 0a  me="provider">..
a2f0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6f 72 6d      /// The form
a300: 61 74 20 70 72 6f 76 69 64 65 72 20 74 6f 20 75  at provider to u
a310: 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70  se...    /// </p
a320: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
a330: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 69 61 46  param name="viaF
a340: 72 61 6d 65 77 6f 72 6b 22 3e 0d 0a 20 20 20 20  ramework">..    
a350: 2f 2f 2f 20 49 66 20 6e 6f 6e 2d 7a 65 72 6f 2c  /// If non-zero,
a360: 20 61 20 73 74 72 69 6e 67 20 76 61 6c 75 65 20   a string value 
a370: 77 69 6c 6c 20 62 65 20 63 6f 6e 76 65 72 74 65  will be converte
a380: 64 20 75 73 69 6e 67 20 74 68 65 0d 0a 20 20 20  d using the..   
a390: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
a3a0: 43 6f 6e 76 65 72 74 2e 54 6f 42 6f 6f 6c 65 61  Convert.ToBoolea
a3b0: 6e 28 4f 62 6a 65 63 74 2c 20 49 46 6f 72 6d 61  n(Object, IForma
a3c0: 74 50 72 6f 76 69 64 65 72 29 22 20 2f 3e 0d 0a  tProvider)" />..
a3d0: 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 3b 20      /// method; 
a3e0: 6f 74 68 65 72 77 69 73 65 2c 20 74 68 65 20 3c  otherwise, the <
a3f0: 73 65 65 20 63 72 65 66 3d 22 54 6f 42 6f 6f 6c  see cref="ToBool
a400: 65 61 6e 28 53 74 72 69 6e 67 29 22 20 2f 3e 0d  ean(String)" />.
a410: 0a 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 20  .    /// method 
a420: 77 69 6c 6c 20 62 65 20 75 73 65 64 2e 0d 0a 20  will be used... 
a430: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
a440: 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
a450: 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  s>..    /// The 
a460: 63 6f 6e 76 65 72 74 65 64 20 62 6f 6f 6c 65 61  converted boolea
a470: 6e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f  n value...    //
a480: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
a490: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
a4a0: 63 20 62 6f 6f 6c 20 54 6f 42 6f 6f 6c 65 61 6e  c bool ToBoolean
a4b0: 28 0d 0a 20 20 20 20 20 20 20 20 6f 62 6a 65 63  (..        objec
a4c0: 74 20 6f 62 6a 2c 0d 0a 20 20 20 20 20 20 20 20  t obj,..        
a4d0: 49 46 6f 72 6d 61 74 50 72 6f 76 69 64 65 72 20  IFormatProvider 
a4e0: 70 72 6f 76 69 64 65 72 2c 0d 0a 20 20 20 20 20  provider,..     
a4f0: 20 20 20 62 6f 6f 6c 20 76 69 61 46 72 61 6d 65     bool viaFrame
a500: 77 6f 72 6b 0d 0a 20 20 20 20 20 20 20 20 29 0d  work..        ).
a510: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
a520: 69 66 20 28 6f 62 6a 20 3d 3d 20 6e 75 6c 6c 29  if (obj == null)
a530: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
a540: 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
a550: 20 20 20 20 20 20 20 54 79 70 65 43 6f 64 65 20         TypeCode 
a560: 74 79 70 65 43 6f 64 65 20 3d 20 54 79 70 65 2e  typeCode = Type.
a570: 47 65 74 54 79 70 65 43 6f 64 65 28 6f 62 6a 2e  GetTypeCode(obj.
a580: 47 65 74 54 79 70 65 28 29 29 3b 0d 0a 0d 0a 20  GetType());.... 
a590: 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 74         switch (t
a5a0: 79 70 65 43 6f 64 65 29 0d 0a 20 20 20 20 20 20  ypeCode)..      
a5b0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
a5c0: 20 63 61 73 65 20 54 79 70 65 43 6f 64 65 2e 45   case TypeCode.E
a5d0: 6d 70 74 79 3a 0d 0a 20 20 20 20 20 20 20 20 20  mpty:..         
a5e0: 20 20 20 63 61 73 65 20 54 79 70 65 43 6f 64 65     case TypeCode
a5f0: 2e 44 42 4e 75 6c 6c 3a 0d 0a 20 20 20 20 20 20  .DBNull:..      
a600: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
a610: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
a620: 20 20 20 20 20 63 61 73 65 20 54 79 70 65 43 6f       case TypeCo
a630: 64 65 2e 42 6f 6f 6c 65 61 6e 3a 0d 0a 20 20 20  de.Boolean:..   
a640: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
a650: 75 72 6e 20 28 62 6f 6f 6c 29 6f 62 6a 3b 0d 0a  urn (bool)obj;..
a660: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
a670: 20 54 79 70 65 43 6f 64 65 2e 43 68 61 72 3a 0d   TypeCode.Char:.
a680: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a690: 20 72 65 74 75 72 6e 20 28 28 63 68 61 72 29 6f   return ((char)o
a6a0: 62 6a 29 20 21 3d 20 28 63 68 61 72 29 30 20 3f  bj) != (char)0 ?
a6b0: 20 74 72 75 65 20 3a 20 66 61 6c 73 65 3b 0d 0a   true : false;..
a6c0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
a6d0: 20 54 79 70 65 43 6f 64 65 2e 53 42 79 74 65 3a   TypeCode.SByte:
a6e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a6f0: 20 20 72 65 74 75 72 6e 20 28 28 73 62 79 74 65    return ((sbyte
a700: 29 6f 62 6a 29 20 21 3d 20 28 73 62 79 74 65 29  )obj) != (sbyte)
a710: 30 20 3f 20 74 72 75 65 20 3a 20 66 61 6c 73 65  0 ? true : false
a720: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  ;..            c
a730: 61 73 65 20 54 79 70 65 43 6f 64 65 2e 42 79 74  ase TypeCode.Byt
a740: 65 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e:..            
a750: 20 20 20 20 72 65 74 75 72 6e 20 28 28 62 79 74      return ((byt
a760: 65 29 6f 62 6a 29 20 21 3d 20 28 62 79 74 65 29  e)obj) != (byte)
a770: 30 20 3f 20 74 72 75 65 20 3a 20 66 61 6c 73 65  0 ? true : false
a780: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  ;..            c
a790: 61 73 65 20 54 79 70 65 43 6f 64 65 2e 49 6e 74  ase TypeCode.Int
a7a0: 31 36 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  16:..           
a7b0: 20 20 20 20 20 72 65 74 75 72 6e 20 28 28 73 68       return ((sh
a7c0: 6f 72 74 29 6f 62 6a 29 20 21 3d 20 28 73 68 6f  ort)obj) != (sho
a7d0: 72 74 29 30 20 3f 20 74 72 75 65 20 3a 20 66 61  rt)0 ? true : fa
a7e0: 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lse;..          
a7f0: 20 20 63 61 73 65 20 54 79 70 65 43 6f 64 65 2e    case TypeCode.
a800: 55 49 6e 74 31 36 3a 0d 0a 20 20 20 20 20 20 20  UInt16:..       
a810: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
a820: 28 28 75 73 68 6f 72 74 29 6f 62 6a 29 20 21 3d  ((ushort)obj) !=
a830: 20 28 75 73 68 6f 72 74 29 30 20 3f 20 74 72 75   (ushort)0 ? tru
a840: 65 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  e : false;..    
a850: 20 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70          case Typ
a860: 65 43 6f 64 65 2e 49 6e 74 33 32 3a 0d 0a 20 20  eCode.Int32:..  
a870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
a880: 74 75 72 6e 20 28 28 69 6e 74 29 6f 62 6a 29 20  turn ((int)obj) 
a890: 21 3d 20 28 69 6e 74 29 30 20 3f 20 74 72 75 65  != (int)0 ? true
a8a0: 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20   : false;..     
a8b0: 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70 65         case Type
a8c0: 43 6f 64 65 2e 55 49 6e 74 33 32 3a 0d 0a 20 20  Code.UInt32:..  
a8d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
a8e0: 74 75 72 6e 20 28 28 75 69 6e 74 29 6f 62 6a 29  turn ((uint)obj)
a8f0: 20 21 3d 20 28 75 69 6e 74 29 30 20 3f 20 74 72   != (uint)0 ? tr
a900: 75 65 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20 20  ue : false;..   
a910: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 54 79           case Ty
a920: 70 65 43 6f 64 65 2e 49 6e 74 36 34 3a 0d 0a 20  peCode.Int64:.. 
a930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
a940: 65 74 75 72 6e 20 28 28 6c 6f 6e 67 29 6f 62 6a  eturn ((long)obj
a950: 29 20 21 3d 20 28 6c 6f 6e 67 29 30 20 3f 20 74  ) != (long)0 ? t
a960: 72 75 65 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20  rue : false;..  
a970: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 54            case T
a980: 79 70 65 43 6f 64 65 2e 55 49 6e 74 36 34 3a 0d  ypeCode.UInt64:.
a990: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a9a0: 20 72 65 74 75 72 6e 20 28 28 75 6c 6f 6e 67 29   return ((ulong)
a9b0: 6f 62 6a 29 20 21 3d 20 28 75 6c 6f 6e 67 29 30  obj) != (ulong)0
a9c0: 20 3f 20 74 72 75 65 20 3a 20 66 61 6c 73 65 3b   ? true : false;
a9d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
a9e0: 73 65 20 54 79 70 65 43 6f 64 65 2e 53 69 6e 67  se TypeCode.Sing
a9f0: 6c 65 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le:..           
aa00: 20 20 20 20 20 72 65 74 75 72 6e 20 28 28 66 6c       return ((fl
aa10: 6f 61 74 29 6f 62 6a 29 20 21 3d 20 28 66 6c 6f  oat)obj) != (flo
aa20: 61 74 29 30 2e 30 20 3f 20 74 72 75 65 20 3a 20  at)0.0 ? true : 
aa30: 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  false;..        
aa40: 20 20 20 20 63 61 73 65 20 54 79 70 65 43 6f 64      case TypeCod
aa50: 65 2e 44 6f 75 62 6c 65 3a 0d 0a 20 20 20 20 20  e.Double:..     
aa60: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
aa70: 6e 20 28 28 64 6f 75 62 6c 65 29 6f 62 6a 29 20  n ((double)obj) 
aa80: 21 3d 20 28 64 6f 75 62 6c 65 29 30 2e 30 20 3f  != (double)0.0 ?
aa90: 20 74 72 75 65 20 3a 20 66 61 6c 73 65 3b 0d 0a   true : false;..
aaa0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
aab0: 20 54 79 70 65 43 6f 64 65 2e 44 65 63 69 6d 61   TypeCode.Decima
aac0: 6c 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l:..            
aad0: 20 20 20 20 72 65 74 75 72 6e 20 28 28 64 65 63      return ((dec
aae0: 69 6d 61 6c 29 6f 62 6a 29 20 21 3d 20 44 65 63  imal)obj) != Dec
aaf0: 69 6d 61 6c 2e 5a 65 72 6f 20 3f 20 74 72 75 65  imal.Zero ? true
ab00: 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20   : false;..     
ab10: 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70 65         case Type
ab20: 43 6f 64 65 2e 53 74 72 69 6e 67 3a 0d 0a 20 20  Code.String:..  
ab30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
ab40: 74 75 72 6e 20 76 69 61 46 72 61 6d 65 77 6f 72  turn viaFramewor
ab50: 6b 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  k ?..           
ab60: 20 20 20 20 20 20 20 20 20 43 6f 6e 76 65 72 74           Convert
ab70: 2e 54 6f 42 6f 6f 6c 65 61 6e 28 6f 62 6a 2c 20  .ToBoolean(obj, 
ab80: 70 72 6f 76 69 64 65 72 29 20 3a 0d 0a 20 20 20  provider) :..   
ab90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aba0: 20 54 6f 42 6f 6f 6c 65 61 6e 28 54 6f 53 74 72   ToBoolean(ToStr
abb0: 69 6e 67 57 69 74 68 50 72 6f 76 69 64 65 72 28  ingWithProvider(
abc0: 6f 62 6a 2c 20 70 72 6f 76 69 64 65 72 29 29 3b  obj, provider));
abd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65  ..            de
abe0: 66 61 75 6c 74 3a 0d 0a 20 20 20 20 20 20 20 20  fault:..        
abf0: 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65          throw ne
ac00: 77 20 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f  w SQLiteExceptio
ac10: 6e 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  n(HelperMethods.
ac20: 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
ac30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ac40: 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
ac50: 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
ac60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ac70: 20 20 20 20 22 43 61 6e 6e 6f 74 20 63 6f 6e 76      "Cannot conv
ac80: 65 72 74 20 74 79 70 65 20 7b 30 7d 20 74 6f 20  ert type {0} to 
ac90: 62 6f 6f 6c 65 61 6e 22 2c 0d 0a 20 20 20 20 20  boolean",..     
aca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
acb0: 79 70 65 43 6f 64 65 29 29 3b 0d 0a 20 20 20 20  ypeCode));..    
acc0: 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a      }..    }....
acd0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
ace0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65  >..    /// Conve
acf0: 72 74 20 61 20 76 61 6c 75 65 20 74 6f 20 74 72  rt a value to tr
ad00: 75 65 20 6f 72 20 66 61 6c 73 65 2e 0d 0a 20 20  ue or false...  
ad10: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
ad20: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
ad30: 20 6e 61 6d 65 3d 22 73 6f 75 72 63 65 22 3e 41   name="source">A
ad40: 20 73 74 72 69 6e 67 20 6f 72 20 6e 75 6d 62 65   string or numbe
ad50: 72 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74  r representing t
ad60: 72 75 65 20 6f 72 20 66 61 6c 73 65 3c 2f 70 61  rue or false</pa
ad70: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
ad80: 65 74 75 72 6e 73 3e 3c 2f 72 65 74 75 72 6e 73  eturns></returns
ad90: 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74  >..    public st
ada0: 61 74 69 63 20 62 6f 6f 6c 20 54 6f 42 6f 6f 6c  atic bool ToBool
adb0: 65 61 6e 28 6f 62 6a 65 63 74 20 73 6f 75 72 63  ean(object sourc
adc0: 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  e)..    {..     
add0: 20 69 66 20 28 73 6f 75 72 63 65 20 69 73 20 62   if (source is b
ade0: 6f 6f 6c 29 20 72 65 74 75 72 6e 20 28 62 6f 6f  ool) return (boo
adf0: 6c 29 73 6f 75 72 63 65 3b 0d 0a 0d 0a 20 20 20  l)source;....   
ae00: 20 20 20 72 65 74 75 72 6e 20 54 6f 42 6f 6f 6c     return ToBool
ae10: 65 61 6e 28 54 6f 53 74 72 69 6e 67 57 69 74 68  ean(ToStringWith
ae20: 50 72 6f 76 69 64 65 72 28 0d 0a 20 20 20 20 20  Provider(..     
ae30: 20 20 20 20 20 73 6f 75 72 63 65 2c 20 43 75 6c       source, Cul
ae40: 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61  tureInfo.Invaria
ae50: 6e 74 43 75 6c 74 75 72 65 29 29 3b 0d 0a 20 20  ntCulture));..  
ae60: 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f    }....    /////
ae70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aeb0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f  //////....    //
aec0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
aed0: 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 6e   /// Converts an
aee0: 20 69 6e 74 65 67 65 72 20 74 6f 20 61 20 73 74   integer to a st
aef0: 72 69 6e 67 20 74 68 61 74 20 63 61 6e 20 62 65  ring that can be
af00: 20 72 6f 75 6e 64 2d 74 72 69 70 70 65 64 20 75   round-tripped u
af10: 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 2f 2f  sing the..    //
af20: 2f 20 69 6e 76 61 72 69 61 6e 74 20 63 75 6c 74  / invariant cult
af30: 75 72 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ure...    /// </
af40: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
af50: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76  / <param name="v
af60: 61 6c 75 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  alue">..    /// 
af70: 54 68 65 20 69 6e 74 65 67 65 72 20 76 61 6c 75  The integer valu
af80: 65 20 74 6f 20 72 65 74 75 72 6e 20 74 68 65 20  e to return the 
af90: 73 74 72 69 6e 67 20 72 65 70 72 65 73 65 6e 74  string represent
afa0: 61 74 69 6f 6e 20 66 6f 72 2e 0d 0a 20 20 20 20  ation for...    
afb0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
afc0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
afd0: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 74 72  .    /// The str
afe0: 69 6e 67 20 72 65 70 72 65 73 65 6e 74 61 74 69  ing representati
aff0: 6f 6e 20 6f 66 20 74 68 65 20 73 70 65 63 69 66  on of the specif
b000: 69 65 64 20 69 6e 74 65 67 65 72 20 76 61 6c 75  ied integer valu
b010: 65 2c 20 75 73 69 6e 67 20 74 68 65 0d 0a 20 20  e, using the..  
b020: 20 20 2f 2f 2f 20 69 6e 76 61 72 69 61 6e 74 20    /// invariant 
b030: 63 75 6c 74 75 72 65 2e 0d 0a 20 20 20 20 2f 2f  culture...    //
b040: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
b050: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
b060: 63 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e  c string ToStrin
b070: 67 28 69 6e 74 20 76 61 6c 75 65 29 0d 0a 20 20  g(int value)..  
b080: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74    {..        ret
b090: 75 72 6e 20 76 61 6c 75 65 2e 54 6f 53 74 72 69  urn value.ToStri
b0a0: 6e 67 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49  ng(CultureInfo.I
b0b0: 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 29  nvariantCulture)
b0c0: 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
b0d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b0e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b0f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
b120: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
b130: 0d 0a 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70  ..    /// Attemp
b140: 74 73 20 74 6f 20 63 6f 6e 76 65 72 74 20 61 20  ts to convert a 
b150: 3c 73 65 65 20 63 72 65 66 3d 22 53 74 72 69 6e  <see cref="Strin
b160: 67 22 20 2f 3e 20 69 6e 74 6f 20 61 20 3c 73 65  g" /> into a <se
b170: 65 20 63 72 65 66 3d 22 42 6f 6f 6c 65 61 6e 22  e cref="Boolean"
b180: 20 2f 3e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f   />...    /// </
b190: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
b1a0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73  / <param name="s
b1b0: 6f 75 72 63 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f  ource">..    ///
b1c0: 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
b1d0: 53 74 72 69 6e 67 22 20 2f 3e 20 74 6f 20 63 6f  String" /> to co
b1e0: 6e 76 65 72 74 2c 20 63 61 6e 6e 6f 74 20 62 65  nvert, cannot be
b1f0: 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 2f 2f 2f 20   null...    /// 
b200: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
b210: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
b220: 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 76 65 72 74   /// The convert
b230: 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22 42 6f  ed <see cref="Bo
b240: 6f 6c 65 61 6e 22 20 2f 3e 20 76 61 6c 75 65 2e  olean" /> value.
b250: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75  ..    /// </retu
b260: 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  rns>..    /// <r
b270: 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f  emarks>..    ///
b280: 20 54 68 65 20 73 75 70 70 6f 72 74 65 64 20 73   The supported s
b290: 74 72 69 6e 67 73 20 61 72 65 20 22 79 65 73 22  trings are "yes"
b2a0: 2c 20 22 6e 6f 22 2c 20 22 79 22 2c 20 22 6e 22  , "no", "y", "n"
b2b0: 2c 20 22 6f 6e 22 2c 20 22 6f 66 66 22 2c 20 22  , "on", "off", "
b2c0: 30 22 2c 20 22 31 22 2c 0d 0a 20 20 20 20 2f 2f  0", "1",..    //
b2d0: 2f 20 61 73 20 77 65 6c 6c 20 61 73 20 61 6e 79  / as well as any
b2e0: 20 70 72 65 66 69 78 20 6f 66 20 74 68 65 20 73   prefix of the s
b2f0: 74 72 69 6e 67 73 20 3c 73 65 65 20 63 72 65 66  trings <see cref
b300: 3d 22 42 6f 6f 6c 65 61 6e 2e 46 61 6c 73 65 53  ="Boolean.FalseS
b310: 74 72 69 6e 67 22 20 2f 3e 0d 0a 20 20 20 20 2f  tring" />..    /
b320: 2f 2f 20 61 6e 64 20 3c 73 65 65 20 63 72 65 66  // and <see cref
b330: 3d 22 42 6f 6f 6c 65 61 6e 2e 54 72 75 65 53 74  ="Boolean.TrueSt
b340: 72 69 6e 67 22 20 2f 3e 2e 20 20 41 6c 6c 20 73  ring" />.  All s
b350: 74 72 69 6e 67 73 20 61 72 65 20 74 72 65 61 74  trings are treat
b360: 65 64 20 69 6e 20 61 0d 0a 20 20 20 20 2f 2f 2f  ed in a..    ///
b370: 20 63 61 73 65 2d 69 6e 73 65 6e 73 69 74 69 76   case-insensitiv
b380: 65 20 6d 61 6e 6e 65 72 2e 0d 0a 20 20 20 20 2f  e manner...    /
b390: 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20  // </remarks>.. 
b3a0: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
b3b0: 20 62 6f 6f 6c 20 54 6f 42 6f 6f 6c 65 61 6e 28   bool ToBoolean(
b3c0: 73 74 72 69 6e 67 20 73 6f 75 72 63 65 29 0d 0a  string source)..
b3d0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69      {..        i
b3e0: 66 20 28 73 6f 75 72 63 65 20 3d 3d 20 6e 75 6c  f (source == nul
b3f0: 6c 29 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67  l) throw new Arg
b400: 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65 70 74 69  umentNullExcepti
b410: 6f 6e 28 22 73 6f 75 72 63 65 22 29 3b 0d 0a 20  on("source");.. 
b420: 20 20 20 20 20 20 20 69 66 20 28 53 74 72 69 6e         if (Strin
b430: 67 2e 43 6f 6d 70 61 72 65 28 73 6f 75 72 63 65  g.Compare(source
b440: 2c 20 30 2c 20 62 6f 6f 6c 2e 54 72 75 65 53 74  , 0, bool.TrueSt
b450: 72 69 6e 67 2c 20 30 2c 20 73 6f 75 72 63 65 2e  ring, 0, source.
b460: 4c 65 6e 67 74 68 2c 20 53 74 72 69 6e 67 43 6f  Length, StringCo
b470: 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c  mparison.Ordinal
b480: 49 67 6e 6f 72 65 43 61 73 65 29 20 3d 3d 20 30  IgnoreCase) == 0
b490: 29 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a  ) return true;..
b4a0: 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20          else if 
b4b0: 28 53 74 72 69 6e 67 2e 43 6f 6d 70 61 72 65 28  (String.Compare(
b4c0: 73 6f 75 72 63 65 2c 20 30 2c 20 62 6f 6f 6c 2e  source, 0, bool.
b4d0: 46 61 6c 73 65 53 74 72 69 6e 67 2c 20 30 2c 20  FalseString, 0, 
b4e0: 73 6f 75 72 63 65 2e 4c 65 6e 67 74 68 2c 20 53  source.Length, S
b4f0: 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e  tringComparison.
b500: 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73  OrdinalIgnoreCas
b510: 65 29 20 3d 3d 20 30 29 20 72 65 74 75 72 6e 20  e) == 0) return 
b520: 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
b530: 20 20 73 77 69 74 63 68 20 28 73 6f 75 72 63 65    switch (source
b540: 2e 54 6f 4c 6f 77 65 72 28 43 75 6c 74 75 72 65  .ToLower(Culture
b550: 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75  Info.InvariantCu
b560: 6c 74 75 72 65 29 29 0d 0a 20 20 20 20 20 20 20  lture))..       
b570: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
b580: 63 61 73 65 20 22 79 22 3a 0d 0a 20 20 20 20 20  case "y":..     
b590: 20 20 20 20 20 20 20 63 61 73 65 20 22 79 65 73         case "yes
b5a0: 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ":..            
b5b0: 63 61 73 65 20 22 6f 6e 22 3a 0d 0a 20 20 20 20  case "on":..    
b5c0: 20 20 20 20 20 20 20 20 63 61 73 65 20 22 31 22          case "1"
b5d0: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
b5e0: 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
b5f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
b600: 65 20 22 6e 22 3a 0d 0a 20 20 20 20 20 20 20 20  e "n":..        
b610: 20 20 20 20 63 61 73 65 20 22 6e 6f 22 3a 0d 0a      case "no":..
b620: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
b630: 20 22 6f 66 66 22 3a 0d 0a 20 20 20 20 20 20 20   "off":..       
b640: 20 20 20 20 20 63 61 73 65 20 22 30 22 3a 0d 0a       case "0":..
b650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b660: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20  return false;.. 
b670: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
b680: 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72      throw new Ar
b690: 67 75 6d 65 6e 74 45 78 63 65 70 74 69 6f 6e 28  gumentException(
b6a0: 22 73 6f 75 72 63 65 22 29 3b 0d 0a 20 20 20 20  "source");..    
b6b0: 7d 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  }....    #region
b6c0: 20 54 79 70 65 20 43 6f 6e 76 65 72 73 69 6f 6e   Type Conversion
b6d0: 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  s..    /// <summ
b6e0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f  ary>..    /// Co
b6f0: 6e 76 65 72 74 73 20 61 20 53 51 4c 69 74 65 54  nverts a SQLiteT
b700: 79 70 65 20 74 6f 20 61 20 2e 4e 45 54 20 54 79  ype to a .NET Ty
b710: 70 65 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 2f  pe object..    /
b720: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
b730: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
b740: 6d 65 3d 22 74 22 3e 54 68 65 20 53 51 4c 69 74  me="t">The SQLit
b750: 65 54 79 70 65 20 74 6f 20 63 6f 6e 76 65 72 74  eType to convert
b760: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
b770: 2f 20 3c 72 65 74 75 72 6e 73 3e 52 65 74 75 72  / <returns>Retur
b780: 6e 73 20 61 20 2e 4e 45 54 20 54 79 70 65 20 6f  ns a .NET Type o
b790: 62 6a 65 63 74 3c 2f 72 65 74 75 72 6e 73 3e 0d  bject</returns>.
b7a0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
b7b0: 61 74 69 63 20 54 79 70 65 20 53 51 4c 69 74 65  atic Type SQLite
b7c0: 54 79 70 65 54 6f 54 79 70 65 28 53 51 4c 69 74  TypeToType(SQLit
b7d0: 65 54 79 70 65 20 74 29 0d 0a 20 20 20 20 7b 0d  eType t)..    {.
b7e0: 0a 20 20 20 20 20 20 69 66 20 28 74 2e 54 79 70  .      if (t.Typ
b7f0: 65 20 3d 3d 20 44 62 54 79 70 65 2e 4f 62 6a 65  e == DbType.Obje
b800: 63 74 29 0d 0a 20 20 20 20 20 20 20 20 72 65 74  ct)..        ret
b810: 75 72 6e 20 5f 61 66 66 69 6e 69 74 79 74 6f 74  urn _affinitytot
b820: 79 70 65 5b 28 69 6e 74 29 74 2e 41 66 66 69 6e  ype[(int)t.Affin
b830: 69 74 79 5d 3b 0d 0a 20 20 20 20 20 20 65 6c 73  ity];..      els
b840: 65 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  e..        retur
b850: 6e 20 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 2e  n SQLiteConvert.
b860: 44 62 54 79 70 65 54 6f 54 79 70 65 28 74 2e 54  DbTypeToType(t.T
b870: 79 70 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  ype);..    }....
b880: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
b890: 69 63 20 54 79 70 65 5b 5d 20 5f 61 66 66 69 6e  ic Type[] _affin
b8a0: 69 74 79 74 6f 74 79 70 65 20 3d 20 7b 0d 0a 20  itytotype = {.. 
b8b0: 20 20 20 20 20 74 79 70 65 6f 66 28 6f 62 6a 65       typeof(obje
b8c0: 63 74 29 2c 20 20 20 2f 2f 20 55 6e 69 6e 69 74  ct),   // Uninit
b8d0: 69 61 6c 69 7a 65 64 20 28 30 29 0d 0a 20 20 20  ialized (0)..   
b8e0: 20 20 20 74 79 70 65 6f 66 28 49 6e 74 36 34 29     typeof(Int64)
b8f0: 2c 20 20 20 20 2f 2f 20 49 6e 74 36 34 20 28 31  ,    // Int64 (1
b900: 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28  )..      typeof(
b910: 44 6f 75 62 6c 65 29 2c 20 20 20 2f 2f 20 44 6f  Double),   // Do
b920: 75 62 6c 65 20 28 32 29 0d 0a 20 20 20 20 20 20  uble (2)..      
b930: 74 79 70 65 6f 66 28 73 74 72 69 6e 67 29 2c 20  typeof(string), 
b940: 20 20 2f 2f 20 54 65 78 74 20 28 33 29 0d 0a 20    // Text (3).. 
b950: 20 20 20 20 20 74 79 70 65 6f 66 28 62 79 74 65       typeof(byte
b960: 5b 5d 29 2c 20 20 20 2f 2f 20 42 6c 6f 62 20 28  []),   // Blob (
b970: 34 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66  4)..      typeof
b980: 28 6f 62 6a 65 63 74 29 2c 20 20 20 2f 2f 20 4e  (object),   // N
b990: 75 6c 6c 20 28 35 29 0d 0a 20 20 20 20 20 20 74  ull (5)..      t
b9a0: 79 70 65 6f 66 28 44 61 74 65 54 69 6d 65 29 2c  ypeof(DateTime),
b9b0: 20 2f 2f 20 44 61 74 65 54 69 6d 65 20 28 31 30   // DateTime (10
b9c0: 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28  )..      typeof(
b9d0: 6f 62 6a 65 63 74 29 20 20 20 20 2f 2f 20 4e 6f  object)    // No
b9e0: 6e 65 20 28 31 31 29 0d 0a 20 20 20 20 7d 3b 0d  ne (11)..    };.
b9f0: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
ba00: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 46 6f  ary>..    /// Fo
ba10: 72 20 61 20 67 69 76 65 6e 20 69 6e 74 72 69 6e  r a given intrin
ba20: 73 69 63 20 74 79 70 65 2c 20 72 65 74 75 72 6e  sic type, return
ba30: 20 61 20 44 62 54 79 70 65 0d 0a 20 20 20 20 2f   a DbType..    /
ba40: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
ba50: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
ba60: 6d 65 3d 22 74 79 70 22 3e 54 68 65 20 6e 61 74  me="typ">The nat
ba70: 69 76 65 20 74 79 70 65 20 74 6f 20 63 6f 6e 76  ive type to conv
ba80: 65 72 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  ert</param>..   
ba90: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68   /// <returns>Th
baa0: 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20  e corresponding 
bab0: 28 63 6c 6f 73 65 73 74 20 6d 61 74 63 68 29 20  (closest match) 
bac0: 44 62 54 79 70 65 3c 2f 72 65 74 75 72 6e 73 3e  DbType</returns>
bad0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
bae0: 74 61 74 69 63 20 44 62 54 79 70 65 20 54 79 70  tatic DbType Typ
baf0: 65 54 6f 44 62 54 79 70 65 28 54 79 70 65 20 74  eToDbType(Type t
bb00: 79 70 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  yp)..    {..    
bb10: 20 20 54 79 70 65 43 6f 64 65 20 74 63 20 3d 20    TypeCode tc = 
bb20: 54 79 70 65 2e 47 65 74 54 79 70 65 43 6f 64 65  Type.GetTypeCode
bb30: 28 74 79 70 29 3b 0d 0a 20 20 20 20 20 20 69 66  (typ);..      if
bb40: 20 28 74 63 20 3d 3d 20 54 79 70 65 43 6f 64 65   (tc == TypeCode
bb50: 2e 4f 62 6a 65 63 74 29 0d 0a 20 20 20 20 20 20  .Object)..      
bb60: 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 74  {..        if (t
bb70: 79 70 20 3d 3d 20 74 79 70 65 6f 66 28 62 79 74  yp == typeof(byt
bb80: 65 5b 5d 29 29 20 72 65 74 75 72 6e 20 44 62 54  e[])) return DbT
bb90: 79 70 65 2e 42 69 6e 61 72 79 3b 0d 0a 20 20 20  ype.Binary;..   
bba0: 20 20 20 20 20 69 66 20 28 74 79 70 20 3d 3d 20       if (typ == 
bbb0: 74 79 70 65 6f 66 28 47 75 69 64 29 29 20 72 65  typeof(Guid)) re
bbc0: 74 75 72 6e 20 44 62 54 79 70 65 2e 47 75 69 64  turn DbType.Guid
bbd0: 3b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  ;..        retur
bbe0: 6e 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 3b  n DbType.String;
bbf0: 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20  ..      }..     
bc00: 20 72 65 74 75 72 6e 20 5f 74 79 70 65 74 6f 64   return _typetod
bc10: 62 74 79 70 65 5b 28 69 6e 74 29 74 63 5d 3b 0d  btype[(int)tc];.
bc20: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72  .    }....    pr
bc30: 69 76 61 74 65 20 73 74 61 74 69 63 20 44 62 54  ivate static DbT
bc40: 79 70 65 5b 5d 20 5f 74 79 70 65 74 6f 64 62 74  ype[] _typetodbt
bc50: 79 70 65 20 3d 20 7b 0d 0a 20 20 20 20 20 20 44  ype = {..      D
bc60: 62 54 79 70 65 2e 4f 62 6a 65 63 74 2c 20 20 20  bType.Object,   
bc70: 2f 2f 20 45 6d 70 74 79 20 28 30 29 0d 0a 20 20  // Empty (0)..  
bc80: 20 20 20 20 44 62 54 79 70 65 2e 42 69 6e 61 72      DbType.Binar
bc90: 79 2c 20 20 20 2f 2f 20 4f 62 6a 65 63 74 20 28  y,   // Object (
bca0: 31 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65  1)..      DbType
bcb0: 2e 4f 62 6a 65 63 74 2c 20 20 20 2f 2f 20 44 42  .Object,   // DB
bcc0: 4e 75 6c 6c 20 28 32 29 0d 0a 20 20 20 20 20 20  Null (2)..      
bcd0: 44 62 54 79 70 65 2e 42 6f 6f 6c 65 61 6e 2c 20  DbType.Boolean, 
bce0: 20 2f 2f 20 42 6f 6f 6c 65 61 6e 20 28 33 29 0d   // Boolean (3).
bcf0: 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 53 42  .      DbType.SB
bd00: 79 74 65 2c 20 20 20 20 2f 2f 20 43 68 61 72 20  yte,    // Char 
bd10: 28 34 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70  (4)..      DbTyp
bd20: 65 2e 53 42 79 74 65 2c 20 20 20 20 2f 2f 20 53  e.SByte,    // S
bd30: 42 79 74 65 20 28 35 29 0d 0a 20 20 20 20 20 20  Byte (5)..      
bd40: 44 62 54 79 70 65 2e 42 79 74 65 2c 20 20 20 20  DbType.Byte,    
bd50: 20 2f 2f 20 42 79 74 65 20 28 36 29 0d 0a 20 20   // Byte (6)..  
bd60: 20 20 20 20 44 62 54 79 70 65 2e 49 6e 74 31 36      DbType.Int16
bd70: 2c 20 20 20 20 2f 2f 20 49 6e 74 31 36 20 28 37  ,    // Int16 (7
bd80: 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e  )..      DbType.
bd90: 55 49 6e 74 31 36 2c 20 20 20 2f 2f 20 55 49 6e  UInt16,   // UIn
bda0: 74 31 36 20 28 38 29 0d 0a 20 20 20 20 20 20 44  t16 (8)..      D
bdb0: 62 54 79 70 65 2e 49 6e 74 33 32 2c 20 20 20 20  bType.Int32,    
bdc0: 2f 2f 20 49 6e 74 33 32 20 28 39 29 0d 0a 20 20  // Int32 (9)..  
bdd0: 20 20 20 20 44 62 54 79 70 65 2e 55 49 6e 74 33      DbType.UInt3
bde0: 32 2c 20 20 20 2f 2f 20 55 49 6e 74 33 32 20 28  2,   // UInt32 (
bdf0: 31 30 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70  10)..      DbTyp
be00: 65 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 49  e.Int64,    // I
be10: 6e 74 36 34 20 28 31 31 29 0d 0a 20 20 20 20 20  nt64 (11)..     
be20: 20 44 62 54 79 70 65 2e 55 49 6e 74 36 34 2c 20   DbType.UInt64, 
be30: 20 20 2f 2f 20 55 49 6e 74 36 34 20 28 31 32 29    // UInt64 (12)
be40: 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 53  ..      DbType.S
be50: 69 6e 67 6c 65 2c 20 20 20 2f 2f 20 53 69 6e 67  ingle,   // Sing
be60: 6c 65 20 28 31 33 29 0d 0a 20 20 20 20 20 20 44  le (13)..      D
be70: 62 54 79 70 65 2e 44 6f 75 62 6c 65 2c 20 20 20  bType.Double,   
be80: 2f 2f 20 44 6f 75 62 6c 65 20 28 31 34 29 0d 0a  // Double (14)..
be90: 20 20 20 20 20 20 44 62 54 79 70 65 2e 44 65 63        DbType.Dec
bea0: 69 6d 61 6c 2c 20 20 2f 2f 20 44 65 63 69 6d 61  imal,  // Decima
beb0: 6c 20 28 31 35 29 0d 0a 20 20 20 20 20 20 44 62  l (15)..      Db
bec0: 54 79 70 65 2e 44 61 74 65 54 69 6d 65 2c 20 2f  Type.DateTime, /
bed0: 2f 20 44 61 74 65 54 69 6d 65 20 28 31 36 29 0d  / DateTime (16).
bee0: 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 4f 62  .      DbType.Ob
bef0: 6a 65 63 74 2c 20 20 20 2f 2f 20 3f 3f 20 28 31  ject,   // ?? (1
bf00: 37 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65  7)..      DbType
bf10: 2e 53 74 72 69 6e 67 20 20 20 20 2f 2f 20 53 74  .String    // St
bf20: 72 69 6e 67 20 28 31 38 29 0d 0a 20 20 20 20 7d  ring (18)..    }
bf30: 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  ;....    /// <su
bf40: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
bf50: 52 65 74 75 72 6e 73 20 74 68 65 20 43 6f 6c 75  Returns the Colu
bf60: 6d 6e 53 69 7a 65 20 66 6f 72 20 74 68 65 20 67  mnSize for the g
bf70: 69 76 65 6e 20 44 62 54 79 70 65 0d 0a 20 20 20  iven DbType..   
bf80: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
bf90: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
bfa0: 6e 61 6d 65 3d 22 74 79 70 22 3e 54 68 65 20 44  name="typ">The D
bfb0: 62 54 79 70 65 20 74 6f 20 67 65 74 20 74 68 65  bType to get the
bfc0: 20 73 69 7a 65 20 6f 66 3c 2f 70 61 72 61 6d 3e   size of</param>
bfd0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
bfe0: 6e 73 3e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  ns></returns>.. 
bff0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
c000: 69 63 20 69 6e 74 20 44 62 54 79 70 65 54 6f 43  ic int DbTypeToC
c010: 6f 6c 75 6d 6e 53 69 7a 65 28 44 62 54 79 70 65  olumnSize(DbType
c020: 20 74 79 70 29 0d 0a 20 20 20 20 7b 0d 0a 20 20   typ)..    {..  
c030: 20 20 20 20 72 65 74 75 72 6e 20 5f 64 62 74 79      return _dbty
c040: 70 65 74 6f 63 6f 6c 75 6d 6e 73 69 7a 65 5b 28  petocolumnsize[(
c050: 69 6e 74 29 74 79 70 5d 3b 0d 0a 20 20 20 20 7d  int)typ];..    }
c060: 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20  ....    private 
c070: 73 74 61 74 69 63 20 69 6e 74 5b 5d 20 5f 64 62  static int[] _db
c080: 74 79 70 65 74 6f 63 6f 6c 75 6d 6e 73 69 7a 65  typetocolumnsize
c090: 20 3d 20 7b 0d 0a 20 20 20 20 20 20 69 6e 74 2e   = {..      int.
c0a0: 4d 61 78 56 61 6c 75 65 2c 20 2f 2f 20 41 6e 73  MaxValue, // Ans
c0b0: 69 53 74 72 69 6e 67 20 28 30 29 0d 0a 20 20 20  iString (0)..   
c0c0: 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75 65 2c     int.MaxValue,
c0d0: 20 2f 2f 20 42 69 6e 61 72 79 20 28 31 29 0d 0a   // Binary (1)..
c0e0: 20 20 20 20 20 20 31 2c 20 20 20 20 20 20 20 20        1,        
c0f0: 20 20 20 20 2f 2f 20 42 79 74 65 20 28 32 29 0d      // Byte (2).
c100: 0a 20 20 20 20 20 20 31 2c 20 20 20 20 20 20 20  .      1,       
c110: 20 20 20 20 20 2f 2f 20 42 6f 6f 6c 65 61 6e 20       // Boolean 
c120: 28 33 29 0d 0a 20 20 20 20 20 20 38 2c 20 20 20  (3)..      8,   
c130: 20 20 20 20 20 20 20 20 20 2f 2f 20 43 75 72 72           // Curr
c140: 65 6e 63 79 20 28 34 29 0d 0a 20 20 20 20 20 20  ency (4)..      
c150: 38 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  8,            //
c160: 20 44 61 74 65 20 28 35 29 0d 0a 20 20 20 20 20   Date (5)..     
c170: 20 38 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f   8,            /
c180: 2f 20 44 61 74 65 54 69 6d 65 20 28 36 29 0d 0a  / DateTime (6)..
c190: 20 20 20 20 20 20 38 2c 20 20 20 20 20 20 20 20        8,        
c1a0: 20 20 20 20 2f 2f 20 44 65 63 69 6d 61 6c 20 28      // Decimal (
c1b0: 37 29 0d 0a 20 20 20 20 20 20 38 2c 20 20 20 20  7)..      8,    
c1c0: 20 20 20 20 20 20 20 20 2f 2f 20 44 6f 75 62 6c          // Doubl
c1d0: 65 20 28 38 29 0d 0a 20 20 20 20 20 20 31 36 2c  e (8)..      16,
c1e0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 47 75             // Gu
c1f0: 69 64 20 28 39 29 0d 0a 20 20 20 20 20 20 32 2c  id (9)..      2,
c200: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49              // I
c210: 6e 74 31 36 20 28 31 30 29 0d 0a 20 20 20 20 20  nt16 (10)..     
c220: 20 34 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f   4,            /
c230: 2f 20 49 6e 74 33 32 20 28 31 31 29 0d 0a 20 20  / Int32 (11)..  
c240: 20 20 20 20 38 2c 20 20 20 20 20 20 20 20 20 20      8,          
c250: 20 20 2f 2f 20 49 6e 74 36 34 20 28 31 32 29 0d    // Int64 (12).
c260: 0a 20 20 20 20 20 20 69 6e 74 2e 4d 61 78 56 61  .      int.MaxVa
c270: 6c 75 65 2c 20 2f 2f 20 4f 62 6a 65 63 74 20 28  lue, // Object (
c280: 31 33 29 0d 0a 20 20 20 20 20 20 31 2c 20 20 20  13)..      1,   
c290: 20 20 20 20 20 20 20 20 20 2f 2f 20 53 42 79 74           // SByt
c2a0: 65 20 28 31 34 29 0d 0a 20 20 20 20 20 20 34 2c  e (14)..      4,
c2b0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 53              // S
c2c0: 69 6e 67 6c 65 20 28 31 35 29 0d 0a 20 20 20 20  ingle (15)..    
c2d0: 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75 65 2c 20    int.MaxValue, 
c2e0: 2f 2f 20 53 74 72 69 6e 67 20 28 31 36 29 0d 0a  // String (16)..
c2f0: 20 20 20 20 20 20 38 2c 20 20 20 20 20 20 20 20        8,        
c300: 20 20 20 20 2f 2f 20 54 69 6d 65 20 28 31 37 29      // Time (17)
c310: 0d 0a 20 20 20 20 20 20 32 2c 20 20 20 20 20 20  ..      2,      
c320: 20 20 20 20 20 20 2f 2f 20 55 49 6e 74 31 36 20        // UInt16 
c330: 28 31 38 29 0d 0a 20 20 20 20 20 20 34 2c 20 20  (18)..      4,  
c340: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 55 49 6e            // UIn
c350: 74 33 32 20 28 31 39 29 0d 0a 20 20 20 20 20 20  t32 (19)..      
c360: 38 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  8,            //
c370: 20 55 49 6e 74 36 34 20 28 32 30 29 0d 0a 20 20   UInt64 (20)..  
c380: 20 20 20 20 38 2c 20 20 20 20 20 20 20 20 20 20      8,          
c390: 20 20 2f 2f 20 56 61 72 4e 75 6d 65 72 69 63 20    // VarNumeric 
c3a0: 28 32 31 29 0d 0a 20 20 20 20 20 20 69 6e 74 2e  (21)..      int.
c3b0: 4d 61 78 56 61 6c 75 65 2c 20 2f 2f 20 41 6e 73  MaxValue, // Ans
c3c0: 69 53 74 72 69 6e 67 46 69 78 65 64 4c 65 6e 67  iStringFixedLeng
c3d0: 74 68 20 28 32 32 29 0d 0a 20 20 20 20 20 20 69  th (22)..      i
c3e0: 6e 74 2e 4d 61 78 56 61 6c 75 65 2c 20 2f 2f 20  nt.MaxValue, // 
c3f0: 53 74 72 69 6e 67 46 69 78 65 64 4c 65 6e 67 74  StringFixedLengt
c400: 68 20 28 32 33 29 0d 0a 20 20 20 20 20 20 69 6e  h (23)..      in
c410: 74 2e 4d 61 78 56 61 6c 75 65 2c 20 2f 2f 20 3f  t.MaxValue, // ?
c420: 3f 20 28 32 34 29 0d 0a 20 20 20 20 20 20 69 6e  ? (24)..      in
c430: 74 2e 4d 61 78 56 61 6c 75 65 20 20 2f 2f 20 58  t.MaxValue  // X
c440: 6d 6c 20 28 32 35 29 0d 0a 20 20 20 20 7d 3b 0d  ml (25)..    };.
c450: 0a 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ...    internal 
c460: 73 74 61 74 69 63 20 6f 62 6a 65 63 74 20 44 62  static object Db
c470: 54 79 70 65 54 6f 4e 75 6d 65 72 69 63 50 72 65  TypeToNumericPre
c480: 63 69 73 69 6f 6e 28 44 62 54 79 70 65 20 74 79  cision(DbType ty
c490: 70 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  p)..    {..     
c4a0: 20 72 65 74 75 72 6e 20 5f 64 62 74 79 70 65 74   return _dbtypet
c4b0: 6f 6e 75 6d 65 72 69 63 70 72 65 63 69 73 69 6f  onumericprecisio
c4c0: 6e 5b 28 69 6e 74 29 74 79 70 5d 3b 0d 0a 20 20  n[(int)typ];..  
c4d0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61    }....    priva
c4e0: 74 65 20 73 74 61 74 69 63 20 6f 62 6a 65 63 74  te static object
c4f0: 5b 5d 20 5f 64 62 74 79 70 65 74 6f 6e 75 6d 65  [] _dbtypetonume
c500: 72 69 63 70 72 65 63 69 73 69 6f 6e 20 3d 20 7b  ricprecision = {
c510: 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56  ..      DBNull.V
c520: 61 6c 75 65 2c 20 2f 2f 20 41 6e 73 69 53 74 72  alue, // AnsiStr
c530: 69 6e 67 20 28 30 29 0d 0a 20 20 20 20 20 20 44  ing (0)..      D
c540: 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20  BNull.Value, // 
c550: 42 69 6e 61 72 79 20 28 31 29 0d 0a 20 20 20 20  Binary (1)..    
c560: 20 20 33 2c 20 20 20 20 20 20 20 20 20 20 20 20    3,            
c570: 2f 2f 20 42 79 74 65 20 28 32 29 0d 0a 20 20 20  // Byte (2)..   
c580: 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c     DBNull.Value,
c590: 20 2f 2f 20 42 6f 6f 6c 65 61 6e 20 28 33 29 0d   // Boolean (3).
c5a0: 0a 20 20 20 20 20 20 31 39 2c 20 20 20 20 20 20  .      19,      
c5b0: 20 20 20 20 20 2f 2f 20 43 75 72 72 65 6e 63 79       // Currency
c5c0: 20 28 34 29 0d 0a 20 20 20 20 20 20 44 42 4e 75   (4)..      DBNu
c5d0: 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 44 61 74  ll.Value, // Dat
c5e0: 65 20 28 35 29 0d 0a 20 20 20 20 20 20 44 42 4e  e (5)..      DBN
c5f0: 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 44 61  ull.Value, // Da
c600: 74 65 54 69 6d 65 20 28 36 29 0d 0a 20 20 20 20  teTime (6)..    
c610: 20 20 35 33 2c 20 20 20 20 20 20 20 20 20 20 20    53,           
c620: 2f 2f 20 44 65 63 69 6d 61 6c 20 28 37 29 0d 0a  // Decimal (7)..
c630: 20 20 20 20 20 20 35 33 2c 20 20 20 20 20 20 20        53,       
c640: 20 20 20 20 2f 2f 20 44 6f 75 62 6c 65 20 28 38      // Double (8
c650: 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e  )..      DBNull.
c660: 56 61 6c 75 65 2c 20 2f 2f 20 47 75 69 64 20 28  Value, // Guid (
c670: 39 29 0d 0a 20 20 20 20 20 20 35 2c 20 20 20 20  9)..      5,    
c680: 20 20 20 20 20 20 20 20 2f 2f 20 49 6e 74 31 36          // Int16
c690: 20 28 31 30 29 0d 0a 20 20 20 20 20 20 31 30 2c   (10)..      10,
c6a0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49 6e             // In
c6b0: 74 33 32 20 28 31 31 29 0d 0a 20 20 20 20 20 20  t32 (11)..      
c6c0: 31 39 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2f  19,           //
c6d0: 20 49 6e 74 36 34 20 28 31 32 29 0d 0a 20 20 20   Int64 (12)..   
c6e0: 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c     DBNull.Value,
c6f0: 20 2f 2f 20 4f 62 6a 65 63 74 20 28 31 33 29 0d   // Object (13).
c700: 0a 20 20 20 20 20 20 33 2c 20 20 20 20 20 20 20  .      3,       
c710: 20 20 20 20 20 2f 2f 20 53 42 79 74 65 20 28 31       // SByte (1
c720: 34 29 0d 0a 20 20 20 20 20 20 32 34 2c 20 20 20  4)..      24,   
c730: 20 20 20 20 20 20 20 20 2f 2f 20 53 69 6e 67 6c          // Singl
c740: 65 20 28 31 35 29 0d 0a 20 20 20 20 20 20 44 42  e (15)..      DB
c750: 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 53  Null.Value, // S
c760: 74 72 69 6e 67 20 28 31 36 29 0d 0a 20 20 20 20  tring (16)..    
c770: 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20    DBNull.Value, 
c780: 2f 2f 20 54 69 6d 65 20 28 31 37 29 0d 0a 20 20  // Time (17)..  
c790: 20 20 20 20 35 2c 20 20 20 20 20 20 20 20 20 20      5,          
c7a0: 20 20 2f 2f 20 55 49 6e 74 31 36 20 28 31 38 29    // UInt16 (18)
c7b0: 0d 0a 20 20 20 20 20 20 31 30 2c 20 20 20 20 20  ..      10,     
c7c0: 20 20 20 20 20 20 2f 2f 20 55 49 6e 74 33 32 20        // UInt32 
c7d0: 28 31 39 29 0d 0a 20 20 20 20 20 20 31 39 2c 20  (19)..      19, 
c7e0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 55 49 6e            // UIn
c7f0: 74 36 34 20 28 32 30 29 0d 0a 20 20 20 20 20 20  t64 (20)..      
c800: 35 33 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2f  53,           //
c810: 20 56 61 72 4e 75 6d 65 72 69 63 20 28 32 31 29   VarNumeric (21)
c820: 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56  ..      DBNull.V
c830: 61 6c 75 65 2c 20 2f 2f 20 41 6e 73 69 53 74 72  alue, // AnsiStr
c840: 69 6e 67 46 69 78 65 64 4c 65 6e 67 74 68 20 28  ingFixedLength (
c850: 32 32 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c  22)..      DBNul
c860: 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 53 74 72 69  l.Value, // Stri
c870: 6e 67 46 69 78 65 64 4c 65 6e 67 74 68 20 28 32  ngFixedLength (2
c880: 33 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  3)..      DBNull
c890: 2e 56 61 6c 75 65 2c 20 2f 2f 20 3f 3f 20 28 32  .Value, // ?? (2
c8a0: 34 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  4)..      DBNull
c8b0: 2e 56 61 6c 75 65 20 20 2f 2f 20 58 6d 6c 20 28  .Value  // Xml (
c8c0: 32 35 29 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20  25)..    };.... 
c8d0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
c8e0: 69 63 20 6f 62 6a 65 63 74 20 44 62 54 79 70 65  ic object DbType
c8f0: 54 6f 4e 75 6d 65 72 69 63 53 63 61 6c 65 28 44  ToNumericScale(D
c900: 62 54 79 70 65 20 74 79 70 29 0d 0a 20 20 20 20  bType typ)..    
c910: 7b 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  {..      return 
c920: 5f 64 62 74 79 70 65 74 6f 6e 75 6d 65 72 69 63  _dbtypetonumeric
c930: 73 63 61 6c 65 5b 28 69 6e 74 29 74 79 70 5d 3b  scale[(int)typ];
c940: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
c950: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 6f 62  rivate static ob
c960: 6a 65 63 74 5b 5d 20 5f 64 62 74 79 70 65 74 6f  ject[] _dbtypeto
c970: 6e 75 6d 65 72 69 63 73 63 61 6c 65 20 3d 20 7b  numericscale = {
c980: 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56  ..      DBNull.V
c990: 61 6c 75 65 2c 20 2f 2f 20 41 6e 73 69 53 74 72  alue, // AnsiStr
c9a0: 69 6e 67 20 28 30 29 0d 0a 20 20 20 20 20 20 44  ing (0)..      D
c9b0: 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20  BNull.Value, // 
c9c0: 42 69 6e 61 72 79 20 28 31 29 0d 0a 20 20 20 20  Binary (1)..    
c9d0: 20 20 30 2c 20 20 20 20 20 20 20 20 20 20 20 20    0,            
c9e0: 2f 2f 20 42 79 74 65 20 28 32 29 0d 0a 20 20 20  // Byte (2)..   
c9f0: 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c     DBNull.Value,
ca00: 20 2f 2f 20 42 6f 6f 6c 65 61 6e 20 28 33 29 0d   // Boolean (3).
ca10: 0a 20 20 20 20 20 20 34 2c 20 20 20 20 20 20 20  .      4,       
ca20: 20 20 20 20 20 2f 2f 20 43 75 72 72 65 6e 63 79       // Currency
ca30: 20 28 34 29 0d 0a 20 20 20 20 20 20 44 42 4e 75   (4)..      DBNu
ca40: 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 44 61 74  ll.Value, // Dat
ca50: 65 20 28 35 29 0d 0a 20 20 20 20 20 20 44 42 4e  e (5)..      DBN
ca60: 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 44 61  ull.Value, // Da
ca70: 74 65 54 69 6d 65 20 28 36 29 0d 0a 20 20 20 20  teTime (6)..    
ca80: 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20    DBNull.Value, 
ca90: 2f 2f 20 44 65 63 69 6d 61 6c 20 28 37 29 0d 0a  // Decimal (7)..
caa0: 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c        DBNull.Val
cab0: 75 65 2c 20 2f 2f 20 44 6f 75 62 6c 65 20 28 38  ue, // Double (8
cac0: 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e  )..      DBNull.
cad0: 56 61 6c 75 65 2c 20 2f 2f 20 47 75 69 64 20 28  Value, // Guid (
cae0: 39 29 0d 0a 20 20 20 20 20 20 30 2c 20 20 20 20  9)..      0,    
caf0: 20 20 20 20 20 20 20 20 2f 2f 20 49 6e 74 31 36          // Int16
cb00: 20 28 31 30 29 0d 0a 20 20 20 20 20 20 30 2c 20   (10)..      0, 
cb10: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49 6e             // In
cb20: 74 33 32 20 28 31 31 29 0d 0a 20 20 20 20 20 20  t32 (11)..      
cb30: 30 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  0,            //
cb40: 20 49 6e 74 36 34 20 28 31 32 29 0d 0a 20 20 20   Int64 (12)..   
cb50: 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c     DBNull.Value,
cb60: 20 2f 2f 20 4f 62 6a 65 63 74 20 28 31 33 29 0d   // Object (13).
cb70: 0a 20 20 20 20 20 20 30 2c 20 20 20 20 20 20 20  .      0,       
cb80: 20 20 20 20 20 2f 2f 20 53 42 79 74 65 20 28 31       // SByte (1
cb90: 34 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  4)..      DBNull
cba0: 2e 56 61 6c 75 65 2c 20 2f 2f 20 53 69 6e 67 6c  .Value, // Singl
cbb0: 65 20 28 31 35 29 0d 0a 20 20 20 20 20 20 44 42  e (15)..      DB
cbc0: 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 53  Null.Value, // S
cbd0: 74 72 69 6e 67 20 28 31 36 29 0d 0a 20 20 20 20  tring (16)..    
cbe0: 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20    DBNull.Value, 
cbf0: 2f 2f 20 54 69 6d 65 20 28 31 37 29 0d 0a 20 20  // Time (17)..  
cc00: 20 20 20 20 30 2c 20 20 20 20 20 20 20 20 20 20      0,          
cc10: 20 20 2f 2f 20 55 49 6e 74 31 36 20 28 31 38 29    // UInt16 (18)
cc20: 0d 0a 20 20 20 20 20 20 30 2c 20 20 20 20 20 20  ..      0,      
cc30: 20 20 20 20 20 20 2f 2f 20 55 49 6e 74 33 32 20        // UInt32 
cc40: 28 31 39 29 0d 0a 20 20 20 20 20 20 30 2c 20 20  (19)..      0,  
cc50: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 55 49 6e            // UIn
cc60: 74 36 34 20 28 32 30 29 0d 0a 20 20 20 20 20 20  t64 (20)..      
cc70: 30 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  0,            //
cc80: 20 56 61 72 4e 75 6d 65 72 69 63 20 28 32 31 29   VarNumeric (21)
cc90: 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56  ..      DBNull.V
cca0: 61 6c 75 65 2c 20 2f 2f 20 41 6e 73 69 53 74 72  alue, // AnsiStr
ccb0: 69 6e 67 46 69 78 65 64 4c 65 6e 67 74 68 20 28  ingFixedLength (
ccc0: 32 32 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c  22)..      DBNul
ccd0: 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 53 74 72 69  l.Value, // Stri
cce0: 6e 67 46 69 78 65 64 4c 65 6e 67 74 68 20 28 32  ngFixedLength (2
ccf0: 33 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  3)..      DBNull
cd00: 2e 56 61 6c 75 65 2c 20 2f 2f 20 3f 3f 20 28 32  .Value, // ?? (2
cd10: 34 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  4)..      DBNull
cd20: 2e 56 61 6c 75 65 20 20 2f 2f 20 58 6d 6c 20 28  .Value  // Xml (
cd30: 32 35 29 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20  25)..    };.... 
cd40: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
cd50: 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d  ..    /// Determ
cd60: 69 6e 65 73 20 74 68 65 20 64 65 66 61 75 6c 74  ines the default
cd70: 20 64 61 74 61 62 61 73 65 20 74 79 70 65 20 6e   database type n
cd80: 61 6d 65 20 74 6f 20 62 65 20 75 73 65 64 20 77  ame to be used w
cd90: 68 65 6e 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 70  hen a..    /// p
cda0: 65 72 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20 76 61  er-connection va
cdb0: 6c 75 65 20 69 73 20 6e 6f 74 20 61 76 61 69 6c  lue is not avail
cdc0: 61 62 6c 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  able...    /// <
cdd0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
cde0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
cdf0: 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e 0d 0a 20 20  connection">..  
ce00: 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65 63    /// The connec
ce10: 74 69 6f 6e 20 63 6f 6e 74 65 78 74 20 66 6f 72  tion context for
ce20: 20 74 79 70 65 20 6d 61 70 70 69 6e 67 73 2c 20   type mappings, 
ce30: 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 2f 2f 2f  if any...    ///
ce40: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
ce50: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
ce60: 20 20 2f 2f 2f 20 54 68 65 20 64 65 66 61 75 6c    /// The defaul
ce70: 74 20 64 61 74 61 62 61 73 65 20 74 79 70 65 20  t database type 
ce80: 6e 61 6d 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20  name to use...  
ce90: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
cea0: 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74  ..    private st
ceb0: 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 44  atic string GetD
cec0: 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 28 0d  efaultTypeName(.
ced0: 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43  .        SQLiteC
cee0: 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65 63  onnection connec
cef0: 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 29 0d  tion..        ).
cf00: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
cf10: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
cf20: 46 6c 61 67 73 20 66 6c 61 67 73 20 3d 20 28 63  Flags flags = (c
cf30: 6f 6e 6e 65 63 74 69 6f 6e 20 21 3d 20 6e 75 6c  onnection != nul
cf40: 6c 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20  l) ?..          
cf50: 20 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 46 6c 61    connection.Fla
cf60: 67 73 20 3a 20 53 51 4c 69 74 65 43 6f 6e 6e 65  gs : SQLiteConne
cf70: 63 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f 6e 65 3b  ctionFlags.None;
cf80: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  ....        if (
cf90: 28 66 6c 61 67 73 20 26 20 53 51 4c 69 74 65 43  (flags & SQLiteC
cfa0: 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e  onnectionFlags.N
cfb0: 6f 43 6f 6e 76 65 72 74 53 65 74 74 69 6e 67 73  oConvertSettings
cfc0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
cfd0: 20 20 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e     == SQLiteConn
cfe0: 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f 43 6f  ectionFlags.NoCo
cff0: 6e 76 65 72 74 53 65 74 74 69 6e 67 73 29 0d 0a  nvertSettings)..
d000: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
d010: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 46 61         return Fa
d020: 6c 6c 62 61 63 6b 44 65 66 61 75 6c 74 54 79 70  llbackDefaultTyp
d030: 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20  eName;..        
d040: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 73 74 72  }....        str
d050: 69 6e 67 20 6e 61 6d 65 20 3d 20 22 55 73 65 5f  ing name = "Use_
d060: 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 5f 44 65  SQLiteConvert_De
d070: 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 22 3b 0d  faultTypeName";.
d080: 0a 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20  .        object 
d090: 76 61 6c 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20  value = null;.. 
d0a0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 40 64         string @d
d0b0: 65 66 61 75 6c 74 20 3d 20 6e 75 6c 6c 3b 0d 0a  efault = null;..
d0c0: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 28 63  ..        if ((c
d0d0: 6f 6e 6e 65 63 74 69 6f 6e 20 3d 3d 20 6e 75 6c  onnection == nul
d0e0: 6c 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20  l) ||..         
d0f0: 20 20 20 21 63 6f 6e 6e 65 63 74 69 6f 6e 2e 54     !connection.T
d100: 72 79 47 65 74 43 61 63 68 65 64 53 65 74 74 69  ryGetCachedSetti
d110: 6e 67 28 6e 61 6d 65 2c 20 40 64 65 66 61 75 6c  ng(name, @defaul
d120: 74 2c 20 6f 75 74 20 76 61 6c 75 65 29 29 0d 0a  t, out value))..
d130: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
d140: 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
d150: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
d160: 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65             value
d170: 20 3d 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d   = UnsafeNativeM
d180: 65 74 68 6f 64 73 2e 47 65 74 53 65 74 74 69 6e  ethods.GetSettin
d190: 67 56 61 6c 75 65 28 6e 61 6d 65 2c 20 40 64 65  gValue(name, @de
d1a0: 66 61 75 6c 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  fault);....     
d1b0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76             if (v
d1c0: 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  alue == null).. 
d1d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d1e0: 20 20 20 76 61 6c 75 65 20 3d 20 46 61 6c 6c 62     value = Fallb
d1f0: 61 63 6b 44 65 66 61 75 6c 74 54 79 70 65 4e 61  ackDefaultTypeNa
d200: 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me;..           
d210: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
d220: 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20  finally..       
d230: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
d240: 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 6e          if (conn
d250: 65 63 74 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29 0d  ection != null).
d260: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d270: 20 20 20 20 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e       connection.
d280: 53 65 74 43 61 63 68 65 64 53 65 74 74 69 6e 67  SetCachedSetting
d290: 28 6e 61 6d 65 2c 20 76 61 6c 75 65 29 3b 0d 0a  (name, value);..
d2a0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
d2b0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
d2c0: 20 20 20 20 72 65 74 75 72 6e 20 53 65 74 74 69      return Setti
d2d0: 6e 67 56 61 6c 75 65 54 6f 53 74 72 69 6e 67 28  ngValueToString(
d2e0: 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a  value);..    }..
d2f0: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
d300: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 57  CT_20 && TRACE_W
d310: 41 52 4e 49 4e 47 0d 0a 20 20 20 20 2f 2f 2f 20  ARNING..    /// 
d320: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
d330: 2f 2f 20 49 66 20 61 70 70 6c 69 63 61 62 6c 65  // If applicable
d340: 2c 20 69 73 73 75 65 73 20 61 20 74 72 61 63 65  , issues a trace
d350: 20 6c 6f 67 20 6d 65 73 73 61 67 65 20 77 61 72   log message war
d360: 6e 69 6e 67 20 61 62 6f 75 74 20 66 61 6c 6c 69  ning about falli
d370: 6e 67 20 62 61 63 6b 20 74 6f 0d 0a 20 20 20 20  ng back to..    
d380: 2f 2f 2f 20 74 68 65 20 64 65 66 61 75 6c 74 20  /// the default 
d390: 64 61 74 61 62 61 73 65 20 74 79 70 65 20 6e 61  database type na
d3a0: 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  me...    /// </s
d3b0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
d3c0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 62   <param name="db
d3d0: 54 79 70 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  Type">..    /// 
d3e0: 54 68 65 20 64 61 74 61 62 61 73 65 20 76 61 6c  The database val
d3f0: 75 65 20 74 79 70 65 2e 0d 0a 20 20 20 20 2f 2f  ue type...    //
d400: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
d410: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
d420: 22 66 6c 61 67 73 22 3e 0d 0a 20 20 20 20 2f 2f  "flags">..    //
d430: 2f 20 54 68 65 20 66 6c 61 67 73 20 61 73 73 6f  / The flags asso
d440: 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20  ciated with the 
d450: 70 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f  parent connectio
d460: 6e 20 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20 2f  n object...    /
d470: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
d480: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
d490: 3d 22 74 79 70 65 4e 61 6d 65 22 3e 0d 0a 20 20  ="typeName">..  
d4a0: 20 20 2f 2f 2f 20 54 68 65 20 74 65 78 74 75 61    /// The textua
d4b0: 6c 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 64 61  l name of the da
d4c0: 74 61 62 61 73 65 20 74 79 70 65 2e 0d 0a 20 20  tabase type...  
d4d0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
d4e0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
d4f0: 69 63 20 76 6f 69 64 20 44 65 66 61 75 6c 74 54  ic void DefaultT
d500: 79 70 65 4e 61 6d 65 57 61 72 6e 69 6e 67 28 0d  ypeNameWarning(.
d510: 0a 20 20 20 20 20 20 20 20 44 62 54 79 70 65 20  .        DbType 
d520: 64 62 54 79 70 65 2c 0d 0a 20 20 20 20 20 20 20  dbType,..       
d530: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
d540: 6e 46 6c 61 67 73 20 66 6c 61 67 73 2c 0d 0a 20  nFlags flags,.. 
d550: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 74 79         string ty
d560: 70 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20  peName..        
d570: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
d580: 20 20 69 66 20 28 28 66 6c 61 67 73 20 26 20 53    if ((flags & S
d590: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
d5a0: 6c 61 67 73 2e 54 72 61 63 65 57 61 72 6e 69 6e  lags.TraceWarnin
d5b0: 67 29 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e  g) == SQLiteConn
d5c0: 65 63 74 69 6f 6e 46 6c 61 67 73 2e 54 72 61 63  ectionFlags.Trac
d5d0: 65 57 61 72 6e 69 6e 67 29 0d 0a 20 20 20 20 20  eWarning)..     
d5e0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
d5f0: 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
d600: 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
d610: 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
d620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
d630: 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
d640: 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20  ntCulture,..    
d650: 20 20 20 20 20 20 20 20 20 20 20 20 22 57 41 52              "WAR
d660: 4e 49 4e 47 3a 20 54 79 70 65 20 6d 61 70 70 69  NING: Type mappi
d670: 6e 67 20 66 61 69 6c 65 64 2c 20 72 65 74 75 72  ng failed, retur
d680: 6e 69 6e 67 20 64 65 66 61 75 6c 74 20 6e 61 6d  ning default nam
d690: 65 20 5c 22 7b 30 7d 5c 22 20 66 6f 72 20 74 79  e \"{0}\" for ty
d6a0: 70 65 20 7b 31 7d 2e 22 2c 0d 0a 20 20 20 20 20  pe {1}.",..     
d6b0: 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65 4e             typeN
d6c0: 61 6d 65 2c 20 64 62 54 79 70 65 29 29 3b 0d 0a  ame, dbType));..
d6d0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d          }..    }
d6e0: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
d6f0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49  mary>..    /// I
d700: 66 20 61 70 70 6c 69 63 61 62 6c 65 2c 20 69 73  f applicable, is
d710: 73 75 65 73 20 61 20 74 72 61 63 65 20 6c 6f 67  sues a trace log
d720: 20 6d 65 73 73 61 67 65 20 77 61 72 6e 69 6e 67   message warning
d730: 20 61 62 6f 75 74 20 66 61 6c 6c 69 6e 67 20 62   about falling b
d740: 61 63 6b 20 74 6f 0d 0a 20 20 20 20 2f 2f 2f 20  ack to..    /// 
d750: 74 68 65 20 64 65 66 61 75 6c 74 20 64 61 74 61  the default data
d760: 62 61 73 65 20 76 61 6c 75 65 20 74 79 70 65 2e  base value type.
d770: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
d780: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
d790: 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70 65 4e  aram name="typeN
d7a0: 61 6d 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  ame">..    /// T
d7b0: 68 65 20 74 65 78 74 75 61 6c 20 6e 61 6d 65 20  he textual name 
d7c0: 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20  of the database 
d7d0: 74 79 70 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  type...    /// <
d7e0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
d7f0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c   <param name="fl
d800: 61 67 73 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  ags">..    /// T
d810: 68 65 20 66 6c 61 67 73 20 61 73 73 6f 63 69 61  he flags associa
d820: 74 65 64 20 77 69 74 68 20 74 68 65 20 70 61 72  ted with the par
d830: 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f  ent connection o
d840: 62 6a 65 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20  bject...    /// 
d850: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
d860: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64  / <param name="d
d870: 62 54 79 70 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f  bType">..    ///
d880: 20 54 68 65 20 64 61 74 61 62 61 73 65 20 76 61   The database va
d890: 6c 75 65 20 74 79 70 65 2e 0d 0a 20 20 20 20 2f  lue type...    /
d8a0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
d8b0: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
d8c0: 76 6f 69 64 20 44 65 66 61 75 6c 74 44 62 54 79  void DefaultDbTy
d8d0: 70 65 57 61 72 6e 69 6e 67 28 0d 0a 20 20 20 20  peWarning(..    
d8e0: 20 20 20 20 73 74 72 69 6e 67 20 74 79 70 65 4e      string typeN
d8f0: 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 53 51  ame,..        SQ
d900: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
d910: 61 67 73 20 66 6c 61 67 73 2c 0d 0a 20 20 20 20  ags flags,..    
d920: 20 20 20 20 44 62 54 79 70 65 3f 20 64 62 54 79      DbType? dbTy
d930: 70 65 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20  pe..        ).. 
d940: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66     {..        if
d950: 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c   (!String.IsNull
d960: 4f 72 45 6d 70 74 79 28 74 79 70 65 4e 61 6d 65  OrEmpty(typeName
d970: 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20  ) &&..          
d980: 20 20 28 28 66 6c 61 67 73 20 26 20 53 51 4c 69    ((flags & SQLi
d990: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67  teConnectionFlag
d9a0: 73 2e 54 72 61 63 65 57 61 72 6e 69 6e 67 29 20  s.TraceWarning) 
d9b0: 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  == SQLiteConnect
d9c0: 69 6f 6e 46 6c 61 67 73 2e 54 72 61 63 65 57 61  ionFlags.TraceWa
d9d0: 72 6e 69 6e 67 29 29 0d 0a 20 20 20 20 20 20 20  rning))..       
d9e0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
d9f0: 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
da00: 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
da10: 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
da20: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
da30: 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
da40: 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
da50: 20 20 20 20 20 20 20 20 20 20 22 57 41 52 4e 49            "WARNI
da60: 4e 47 3a 20 54 79 70 65 20 6d 61 70 70 69 6e 67  NG: Type mapping
da70: 20 66 61 69 6c 65 64 2c 20 72 65 74 75 72 6e 69   failed, returni
da80: 6e 67 20 64 65 66 61 75 6c 74 20 74 79 70 65 20  ng default type 
da90: 7b 30 7d 20 66 6f 72 20 6e 61 6d 65 20 5c 22 7b  {0} for name \"{
daa0: 31 7d 5c 22 2e 22 2c 0d 0a 20 20 20 20 20 20 20  1}\".",..       
dab0: 20 20 20 20 20 20 20 20 20 64 62 54 79 70 65 2c           dbType,
dac0: 20 74 79 70 65 4e 61 6d 65 29 29 3b 0d 0a 20 20   typeName));..  
dad0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a        }..    }..
dae0: 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f  #endif....    //
daf0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
db00: 20 2f 2f 2f 20 46 6f 72 20 61 20 67 69 76 65 6e   /// For a given
db10: 20 64 61 74 61 62 61 73 65 20 76 61 6c 75 65 20   database value 
db20: 74 79 70 65 2c 20 72 65 74 75 72 6e 20 74 68 65  type, return the
db30: 20 22 63 6c 6f 73 65 73 74 2d 6d 61 74 63 68 22   "closest-match"
db40: 20 74 65 78 74 75 61 6c 20 64 61 74 61 62 61 73   textual databas
db50: 65 20 74 79 70 65 20 6e 61 6d 65 2e 0d 0a 20 20  e type name...  
db60: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
db70: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
db80: 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f   name="connectio
db90: 6e 22 3e 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f  n">The connectio
dba0: 6e 20 63 6f 6e 74 65 78 74 20 66 6f 72 20 63 75  n context for cu
dbb0: 73 74 6f 6d 20 74 79 70 65 20 6d 61 70 70 69 6e  stom type mappin
dbc0: 67 73 2c 20 69 66 20 61 6e 79 2e 3c 2f 70 61 72  gs, if any.</par
dbd0: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
dbe0: 72 61 6d 20 6e 61 6d 65 3d 22 64 62 54 79 70 65  ram name="dbType
dbf0: 22 3e 54 68 65 20 64 61 74 61 62 61 73 65 20 76  ">The database v
dc00: 61 6c 75 65 20 74 79 70 65 2e 3c 2f 70 61 72 61  alue type.</para
dc10: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
dc20: 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e  am name="flags">
dc30: 54 68 65 20 66 6c 61 67 73 20 61 73 73 6f 63 69  The flags associ
dc40: 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70 61  ated with the pa
dc50: 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  rent connection 
dc60: 6f 62 6a 65 63 74 2e 3c 2f 70 61 72 61 6d 3e 0d  object.</param>.
dc70: 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
dc80: 73 3e 54 68 65 20 74 79 70 65 20 6e 61 6d 65 20  s>The type name 
dc90: 6f 72 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69  or an empty stri
dca0: 6e 67 20 69 66 20 69 74 20 63 61 6e 6e 6f 74 20  ng if it cannot 
dcb0: 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 3c 2f  be determined.</
dcc0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e  returns>..    in
dcd0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 73 74  ternal static st
dce0: 72 69 6e 67 20 44 62 54 79 70 65 54 6f 54 79 70  ring DbTypeToTyp
dcf0: 65 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  eName(..        
dd00: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
dd10: 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 0d 0a 20 20   connection,..  
dd20: 20 20 20 20 20 20 44 62 54 79 70 65 20 64 62 54        DbType dbT
dd30: 79 70 65 2c 0d 0a 20 20 20 20 20 20 20 20 53 51  ype,..        SQ
dd40: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
dd50: 61 67 73 20 66 6c 61 67 73 0d 0a 20 20 20 20 20  ags flags..     
dd60: 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20     )..    {..   
dd70: 20 20 20 20 20 73 74 72 69 6e 67 20 64 65 66 61       string defa
dd80: 75 6c 74 54 79 70 65 4e 61 6d 65 20 3d 20 6e 75  ultTypeName = nu
dd90: 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69  ll;....        i
dda0: 66 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 21 3d  f (connection !=
ddb0: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
ddc0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66  {..            f
ddd0: 6c 61 67 73 20 7c 3d 20 63 6f 6e 6e 65 63 74 69  lags |= connecti
dde0: 6f 6e 2e 46 6c 61 67 73 3b 0d 0a 0d 0a 20 20 20  on.Flags;....   
ddf0: 20 20 20 20 20 20 20 20 20 69 66 20 28 28 66 6c           if ((fl
de00: 61 67 73 20 26 20 53 51 4c 69 74 65 43 6f 6e 6e  ags & SQLiteConn
de10: 65 63 74 69 6f 6e 46 6c 61 67 73 2e 55 73 65 43  ectionFlags.UseC
de20: 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65 73 29 20  onnectionTypes) 
de30: 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  == SQLiteConnect
de40: 69 6f 6e 46 6c 61 67 73 2e 55 73 65 43 6f 6e 6e  ionFlags.UseConn
de50: 65 63 74 69 6f 6e 54 79 70 65 73 29 0d 0a 20 20  ectionTypes)..  
de60: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
de70: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
de80: 69 74 65 44 62 54 79 70 65 4d 61 70 20 63 6f 6e  iteDbTypeMap con
de90: 6e 65 63 74 69 6f 6e 54 79 70 65 4e 61 6d 65 73  nectionTypeNames
dea0: 20 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 5f 74   = connection._t
deb0: 79 70 65 4e 61 6d 65 73 3b 0d 0a 0d 0a 20 20 20  ypeNames;....   
dec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
ded0: 28 63 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65 4e  (connectionTypeN
dee0: 61 6d 65 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  ames != null).. 
def0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
df00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
df10: 20 20 20 20 20 20 53 51 4c 69 74 65 44 62 54 79        SQLiteDbTy
df20: 70 65 4d 61 70 70 69 6e 67 20 76 61 6c 75 65 3b  peMapping value;
df30: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
df40: 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 6e          if (conn
df50: 65 63 74 69 6f 6e 54 79 70 65 4e 61 6d 65 73 2e  ectionTypeNames.
df60: 54 72 79 47 65 74 56 61 6c 75 65 28 64 62 54 79  TryGetValue(dbTy
df70: 70 65 2c 20 6f 75 74 20 76 61 6c 75 65 29 29 0d  pe, out value)).
df80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
df90: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
dfa0: 76 61 6c 75 65 2e 74 79 70 65 4e 61 6d 65 3b 0d  value.typeName;.
dfb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
dfc0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
dfd0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
dfe0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
dff0: 20 2f 2f 20 4e 4f 54 45 3a 20 55 73 65 20 74 68   // NOTE: Use th
e000: 65 20 64 65 66 61 75 6c 74 20 64 61 74 61 62 61  e default databa
e010: 73 65 20 74 79 70 65 20 6e 61 6d 65 20 66 6f 72  se type name for
e020: 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e   the connection.
e030: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
e040: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65  ..            de
e050: 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 20 3d 20  faultTypeName = 
e060: 63 6f 6e 6e 65 63 74 69 6f 6e 2e 44 65 66 61 75  connection.Defau
e070: 6c 74 54 79 70 65 4e 61 6d 65 3b 0d 0a 20 20 20  ltTypeName;..   
e080: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
e090: 20 20 69 66 20 28 28 66 6c 61 67 73 20 26 20 53    if ((flags & S
e0a0: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
e0b0: 6c 61 67 73 2e 4e 6f 47 6c 6f 62 61 6c 54 79 70  lags.NoGlobalTyp
e0c0: 65 73 29 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e  es) == SQLiteCon
e0d0: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f 47  nectionFlags.NoG
e0e0: 6c 6f 62 61 6c 54 79 70 65 73 29 0d 0a 20 20 20  lobalTypes)..   
e0f0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
e100: 20 20 20 20 69 66 20 28 64 65 66 61 75 6c 74 54      if (defaultT
e110: 79 70 65 4e 61 6d 65 20 21 3d 20 6e 75 6c 6c 29  ypeName != null)
e120: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e130: 20 20 72 65 74 75 72 6e 20 64 65 66 61 75 6c 74    return default
e140: 54 79 70 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20  TypeName;....   
e150: 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74           default
e160: 54 79 70 65 4e 61 6d 65 20 3d 20 47 65 74 44 65  TypeName = GetDe
e170: 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 28 63 6f  faultTypeName(co
e180: 6e 6e 65 63 74 69 6f 6e 29 3b 0d 0a 0d 0a 23 69  nnection);....#i
e190: 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
e1a0: 30 20 26 26 20 54 52 41 43 45 5f 57 41 52 4e 49  0 && TRACE_WARNI
e1b0: 4e 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  NG..            
e1c0: 44 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 57  DefaultTypeNameW
e1d0: 61 72 6e 69 6e 67 28 64 62 54 79 70 65 2c 20 66  arning(dbType, f
e1e0: 6c 61 67 73 2c 20 64 65 66 61 75 6c 74 54 79 70  lags, defaultTyp
e1f0: 65 4e 61 6d 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  eName);..#endif.
e200: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
e210: 65 74 75 72 6e 20 64 65 66 61 75 6c 74 54 79 70  eturn defaultTyp
e220: 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20  eName;..        
e230: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 6c 6f 63  }....        loc
e240: 6b 20 28 5f 73 79 6e 63 52 6f 6f 74 29 0d 0a 20  k (_syncRoot).. 
e250: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
e260: 20 20 20 20 20 20 69 66 20 28 5f 74 79 70 65 4e        if (_typeN
e270: 61 6d 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  ames == null).. 
e280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5f                 _
e290: 74 79 70 65 4e 61 6d 65 73 20 3d 20 47 65 74 53  typeNames = GetS
e2a0: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 28 29  QLiteDbTypeMap()
e2b0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
e2c0: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
e2d0: 70 69 6e 67 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20  ping value;.... 
e2e0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 5f             if (_
e2f0: 74 79 70 65 4e 61 6d 65 73 2e 54 72 79 47 65 74  typeNames.TryGet
e300: 56 61 6c 75 65 28 64 62 54 79 70 65 2c 20 6f 75  Value(dbType, ou
e310: 74 20 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20  t value))..     
e320: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
e330: 6e 20 76 61 6c 75 65 2e 74 79 70 65 4e 61 6d 65  n value.typeName
e340: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
e350: 20 20 20 20 20 20 20 20 69 66 20 28 64 65 66 61          if (defa
e360: 75 6c 74 54 79 70 65 4e 61 6d 65 20 21 3d 20 6e  ultTypeName != n
e370: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
e380: 20 20 72 65 74 75 72 6e 20 64 65 66 61 75 6c 74    return default
e390: 54 79 70 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20  TypeName;....   
e3a0: 20 20 20 20 20 64 65 66 61 75 6c 74 54 79 70 65       defaultType
e3b0: 4e 61 6d 65 20 3d 20 47 65 74 44 65 66 61 75 6c  Name = GetDefaul
e3c0: 74 54 79 70 65 4e 61 6d 65 28 63 6f 6e 6e 65 63  tTypeName(connec
e3d0: 74 69 6f 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e  tion);....#if !N
e3e0: 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
e3f0: 20 54 52 41 43 45 5f 57 41 52 4e 49 4e 47 0d 0a   TRACE_WARNING..
e400: 20 20 20 20 20 20 20 20 44 65 66 61 75 6c 74 54          DefaultT
e410: 79 70 65 4e 61 6d 65 57 61 72 6e 69 6e 67 28 64  ypeNameWarning(d
e420: 62 54 79 70 65 2c 20 66 6c 61 67 73 2c 20 64 65  bType, flags, de
e430: 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 29 3b 0d  faultTypeName);.
e440: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
e450: 20 20 20 72 65 74 75 72 6e 20 64 65 66 61 75 6c     return defaul
e460: 74 54 79 70 65 4e 61 6d 65 3b 0d 0a 20 20 20 20  tTypeName;..    
e470: 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
e480: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
e490: 43 6f 6e 76 65 72 74 20 61 20 44 62 54 79 70 65  Convert a DbType
e4a0: 20 74 6f 20 61 20 54 79 70 65 0d 0a 20 20 20 20   to a Type..    
e4b0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
e4c0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
e4d0: 61 6d 65 3d 22 74 79 70 22 3e 54 68 65 20 44 62  ame="typ">The Db
e4e0: 54 79 70 65 20 74 6f 20 63 6f 6e 76 65 72 74 20  Type to convert 
e4f0: 66 72 6f 6d 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  from</param>..  
e500: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54    /// <returns>T
e510: 68 65 20 63 6c 6f 73 65 73 74 2d 6d 61 74 63 68  he closest-match
e520: 20 2e 4e 45 54 20 74 79 70 65 3c 2f 72 65 74 75   .NET type</retu
e530: 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  rns>..    intern
e540: 61 6c 20 73 74 61 74 69 63 20 54 79 70 65 20 44  al static Type D
e550: 62 54 79 70 65 54 6f 54 79 70 65 28 44 62 54 79  bTypeToType(DbTy
e560: 70 65 20 74 79 70 29 0d 0a 20 20 20 20 7b 0d 0a  pe typ)..    {..
e570: 20 20 20 20 20 20 72 65 74 75 72 6e 20 5f 64 62        return _db
e580: 74 79 70 65 54 6f 54 79 70 65 5b 28 69 6e 74 29  typeToType[(int)
e590: 74 79 70 5d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  typ];..    }....
e5a0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
e5b0: 69 63 20 54 79 70 65 5b 5d 20 5f 64 62 74 79 70  ic Type[] _dbtyp
e5c0: 65 54 6f 54 79 70 65 20 3d 20 7b 0d 0a 20 20 20  eToType = {..   
e5d0: 20 20 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67     typeof(string
e5e0: 29 2c 20 20 20 2f 2f 20 41 6e 73 69 53 74 72 69  ),   // AnsiStri
e5f0: 6e 67 20 28 30 29 0d 0a 20 20 20 20 20 20 74 79  ng (0)..      ty
e600: 70 65 6f 66 28 62 79 74 65 5b 5d 29 2c 20 20 20  peof(byte[]),   
e610: 2f 2f 20 42 69 6e 61 72 79 20 28 31 29 0d 0a 20  // Binary (1).. 
e620: 20 20 20 20 20 74 79 70 65 6f 66 28 62 79 74 65       typeof(byte
e630: 29 2c 20 20 20 20 20 2f 2f 20 42 79 74 65 20 28  ),     // Byte (
e640: 32 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66  2)..      typeof
e650: 28 62 6f 6f 6c 29 2c 20 20 20 20 20 2f 2f 20 42  (bool),     // B
e660: 6f 6f 6c 65 61 6e 20 28 33 29 0d 0a 20 20 20 20  oolean (3)..    
e670: 20 20 74 79 70 65 6f 66 28 64 65 63 69 6d 61 6c    typeof(decimal
e680: 29 2c 20 20 2f 2f 20 43 75 72 72 65 6e 63 79 20  ),  // Currency 
e690: 28 34 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f  (4)..      typeo
e6a0: 66 28 44 61 74 65 54 69 6d 65 29 2c 20 2f 2f 20  f(DateTime), // 
e6b0: 44 61 74 65 20 28 35 29 0d 0a 20 20 20 20 20 20  Date (5)..      
e6c0: 74 79 70 65 6f 66 28 44 61 74 65 54 69 6d 65 29  typeof(DateTime)
e6d0: 2c 20 2f 2f 20 44 61 74 65 54 69 6d 65 20 28 36  , // DateTime (6
e6e0: 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28  )..      typeof(
e6f0: 64 65 63 69 6d 61 6c 29 2c 20 20 2f 2f 20 44 65  decimal),  // De
e700: 63 69 6d 61 6c 20 28 37 29 0d 0a 20 20 20 20 20  cimal (7)..     
e710: 20 74 79 70 65 6f 66 28 64 6f 75 62 6c 65 29 2c   typeof(double),
e720: 20 20 20 2f 2f 20 44 6f 75 62 6c 65 20 28 38 29     // Double (8)
e730: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 47  ..      typeof(G
e740: 75 69 64 29 2c 20 20 20 20 20 2f 2f 20 47 75 69  uid),     // Gui
e750: 64 20 28 39 29 0d 0a 20 20 20 20 20 20 74 79 70  d (9)..      typ
e760: 65 6f 66 28 49 6e 74 31 36 29 2c 20 20 20 20 2f  eof(Int16),    /
e770: 2f 20 49 6e 74 31 36 20 28 31 30 29 0d 0a 20 20  / Int16 (10)..  
e780: 20 20 20 20 74 79 70 65 6f 66 28 49 6e 74 33 32      typeof(Int32
e790: 29 2c 20 20 20 20 2f 2f 20 49 6e 74 33 32 20 28  ),    // Int32 (
e7a0: 31 31 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f  11)..      typeo
e7b0: 66 28 49 6e 74 36 34 29 2c 20 20 20 20 2f 2f 20  f(Int64),    // 
e7c0: 49 6e 74 36 34 20 28 31 32 29 0d 0a 20 20 20 20  Int64 (12)..    
e7d0: 20 20 74 79 70 65 6f 66 28 6f 62 6a 65 63 74 29    typeof(object)
e7e0: 2c 20 20 20 2f 2f 20 4f 62 6a 65 63 74 20 28 31  ,   // Object (1
e7f0: 33 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66  3)..      typeof
e800: 28 73 62 79 74 65 29 2c 20 20 20 20 2f 2f 20 53  (sbyte),    // S
e810: 42 79 74 65 20 28 31 34 29 0d 0a 20 20 20 20 20  Byte (14)..     
e820: 20 74 79 70 65 6f 66 28 66 6c 6f 61 74 29 2c 20   typeof(float), 
e830: 20 20 20 2f 2f 20 53 69 6e 67 6c 65 20 28 31 35     // Single (15
e840: 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28  )..      typeof(
e850: 73 74 72 69 6e 67 29 2c 20 20 20 2f 2f 20 53 74  string),   // St
e860: 72 69 6e 67 20 28 31 36 29 0d 0a 20 20 20 20 20  ring (16)..     
e870: 20 74 79 70 65 6f 66 28 44 61 74 65 54 69 6d 65   typeof(DateTime
e880: 29 2c 20 2f 2f 20 54 69 6d 65 20 28 31 37 29 0d  ), // Time (17).
e890: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 55 49  .      typeof(UI
e8a0: 6e 74 31 36 29 2c 20 20 20 2f 2f 20 55 49 6e 74  nt16),   // UInt
e8b0: 31 36 20 28 31 38 29 0d 0a 20 20 20 20 20 20 74  16 (18)..      t
e8c0: 79 70 65 6f 66 28 55 49 6e 74 33 32 29 2c 20 20  ypeof(UInt32),  
e8d0: 20 2f 2f 20 55 49 6e 74 33 32 20 28 31 39 29 0d   // UInt32 (19).
e8e0: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 55 49  .      typeof(UI
e8f0: 6e 74 36 34 29 2c 20 20 20 2f 2f 20 55 49 6e 74  nt64),   // UInt
e900: 36 34 20 28 32 30 29 0d 0a 20 20 20 20 20 20 74  64 (20)..      t
e910: 79 70 65 6f 66 28 64 6f 75 62 6c 65 29 2c 20 20  ypeof(double),  
e920: 20 2f 2f 20 56 61 72 4e 75 6d 65 72 69 63 20 28   // VarNumeric (
e930: 32 31 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f  21)..      typeo
e940: 66 28 73 74 72 69 6e 67 29 2c 20 20 20 2f 2f 20  f(string),   // 
e950: 41 6e 73 69 53 74 72 69 6e 67 46 69 78 65 64 4c  AnsiStringFixedL
e960: 65 6e 67 74 68 20 28 32 32 29 0d 0a 20 20 20 20  ength (22)..    
e970: 20 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67 29    typeof(string)
e980: 2c 20 20 20 2f 2f 20 53 74 72 69 6e 67 46 69 78  ,   // StringFix
e990: 65 64 4c 65 6e 67 74 68 20 28 32 33 29 0d 0a 20  edLength (23).. 
e9a0: 20 20 20 20 20 74 79 70 65 6f 66 28 73 74 72 69       typeof(stri
e9b0: 6e 67 29 2c 20 20 20 2f 2f 20 3f 3f 20 28 32 34  ng),   // ?? (24
e9c0: 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28  )..      typeof(
e9d0: 73 74 72 69 6e 67 29 2c 20 20 20 2f 2f 20 58 6d  string),   // Xm
e9e0: 6c 20 28 32 35 29 0d 0a 20 20 20 20 7d 3b 0d 0a  l (25)..    };..
e9f0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
ea00: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 46 6f 72  ry>..    /// For
ea10: 20 61 20 67 69 76 65 6e 20 74 79 70 65 2c 20 72   a given type, r
ea20: 65 74 75 72 6e 20 74 68 65 20 63 6c 6f 73 65 73  eturn the closes
ea30: 74 2d 6d 61 74 63 68 20 53 51 4c 69 74 65 20 54  t-match SQLite T
ea40: 79 70 65 41 66 66 69 6e 69 74 79 2c 20 77 68 69  ypeAffinity, whi
ea50: 63 68 20 6f 6e 6c 79 20 75 6e 64 65 72 73 74 61  ch only understa
ea60: 6e 64 73 20 61 20 76 65 72 79 20 6c 69 6d 69 74  nds a very limit
ea70: 65 64 20 73 75 62 73 65 74 20 6f 66 20 74 79 70  ed subset of typ
ea80: 65 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  es...    /// </s
ea90: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
eaa0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79   <param name="ty
eab0: 70 22 3e 54 68 65 20 74 79 70 65 20 74 6f 20 65  p">The type to e
eac0: 76 61 6c 75 61 74 65 3c 2f 70 61 72 61 6d 3e 0d  valuate</param>.
ead0: 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
eae0: 73 3e 54 68 65 20 53 51 4c 69 74 65 20 74 79 70  s>The SQLite typ
eaf0: 65 20 61 66 66 69 6e 69 74 79 20 66 6f 72 20 74  e affinity for t
eb00: 68 61 74 20 74 79 70 65 2e 3c 2f 72 65 74 75 72  hat type.</retur
eb10: 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ns>..    interna
eb20: 6c 20 73 74 61 74 69 63 20 54 79 70 65 41 66 66  l static TypeAff
eb30: 69 6e 69 74 79 20 54 79 70 65 54 6f 41 66 66 69  inity TypeToAffi
eb40: 6e 69 74 79 28 54 79 70 65 20 74 79 70 29 0d 0a  nity(Type typ)..
eb50: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 54 79 70      {..      Typ
eb60: 65 43 6f 64 65 20 74 63 20 3d 20 54 79 70 65 2e  eCode tc = Type.
eb70: 47 65 74 54 79 70 65 43 6f 64 65 28 74 79 70 29  GetTypeCode(typ)
eb80: 3b 0d 0a 20 20 20 20 20 20 69 66 20 28 74 63 20  ;..      if (tc 
eb90: 3d 3d 20 54 79 70 65 43 6f 64 65 2e 4f 62 6a 65  == TypeCode.Obje
eba0: 63 74 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  ct)..      {..  
ebb0: 20 20 20 20 20 20 69 66 20 28 74 79 70 20 3d 3d        if (typ ==
ebc0: 20 74 79 70 65 6f 66 28 62 79 74 65 5b 5d 29 20   typeof(byte[]) 
ebd0: 7c 7c 20 74 79 70 20 3d 3d 20 74 79 70 65 6f 66  || typ == typeof
ebe0: 28 47 75 69 64 29 29 0d 0a 20 20 20 20 20 20 20  (Guid))..       
ebf0: 20 20 20 72 65 74 75 72 6e 20 54 79 70 65 41 66     return TypeAf
ec00: 66 69 6e 69 74 79 2e 42 6c 6f 62 3b 0d 0a 20 20  finity.Blob;..  
ec10: 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
ec20: 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 79 70        return Typ
ec30: 65 41 66 66 69 6e 69 74 79 2e 54 65 78 74 3b 0d  eAffinity.Text;.
ec40: 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20  .      }..      
ec50: 72 65 74 75 72 6e 20 5f 74 79 70 65 63 6f 64 65  return _typecode
ec60: 41 66 66 69 6e 69 74 69 65 73 5b 28 69 6e 74 29  Affinities[(int)
ec70: 74 63 5d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  tc];..    }.... 
ec80: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
ec90: 63 20 54 79 70 65 41 66 66 69 6e 69 74 79 5b 5d  c TypeAffinity[]
eca0: 20 5f 74 79 70 65 63 6f 64 65 41 66 66 69 6e 69   _typecodeAffini
ecb0: 74 69 65 73 20 3d 20 7b 0d 0a 20 20 20 20 20 20  ties = {..      
ecc0: 54 79 70 65 41 66 66 69 6e 69 74 79 2e 4e 75 6c  TypeAffinity.Nul
ecd0: 6c 2c 20 20 20 20 20 2f 2f 20 45 6d 70 74 79 20  l,     // Empty 
ece0: 28 30 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41  (0)..      TypeA
ecf0: 66 66 69 6e 69 74 79 2e 42 6c 6f 62 2c 20 20 20  ffinity.Blob,   
ed00: 20 20 2f 2f 20 4f 62 6a 65 63 74 20 28 31 29 0d    // Object (1).
ed10: 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e  .      TypeAffin
ed20: 69 74 79 2e 4e 75 6c 6c 2c 20 20 20 20 20 2f 2f  ity.Null,     //
ed30: 20 44 42 4e 75 6c 6c 20 28 32 29 0d 0a 20 20 20   DBNull (2)..   
ed40: 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e     TypeAffinity.
ed50: 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 42 6f 6f  Int64,    // Boo
ed60: 6c 65 61 6e 20 28 33 29 0d 0a 20 20 20 20 20 20  lean (3)..      
ed70: 54 79 70 65 41 66 66 69 6e 69 74 79 2e 49 6e 74  TypeAffinity.Int
ed80: 36 34 2c 20 20 20 20 2f 2f 20 43 68 61 72 20 28  64,    // Char (
ed90: 34 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66  4)..      TypeAf
eda0: 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20 20  finity.Int64,   
edb0: 20 2f 2f 20 53 42 79 74 65 20 28 35 29 0d 0a 20   // SByte (5).. 
edc0: 20 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74       TypeAffinit
edd0: 79 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 42  y.Int64,    // B
ede0: 79 74 65 20 28 36 29 0d 0a 20 20 20 20 20 20 54  yte (6)..      T
edf0: 79 70 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36  ypeAffinity.Int6
ee00: 34 2c 20 20 20 20 2f 2f 20 49 6e 74 31 36 20 28  4,    // Int16 (
ee10: 37 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66  7)..      TypeAf
ee20: 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20 20  finity.Int64,   
ee30: 20 2f 2f 20 55 49 6e 74 31 36 20 28 38 29 0d 0a   // UInt16 (8)..
ee40: 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e 69        TypeAffini
ee50: 74 79 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20  ty.Int64,    // 
ee60: 49 6e 74 33 32 20 28 39 29 0d 0a 20 20 20 20 20  Int32 (9)..     
ee70: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 49 6e   TypeAffinity.In
ee80: 74 36 34 2c 20 20 20 20 2f 2f 20 55 49 6e 74 33  t64,    // UInt3
ee90: 32 20 28 31 30 29 0d 0a 20 20 20 20 20 20 54 79  2 (10)..      Ty
eea0: 70 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34  peAffinity.Int64
eeb0: 2c 20 20 20 20 2f 2f 20 49 6e 74 36 34 20 28 31  ,    // Int64 (1
eec0: 31 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66  1)..      TypeAf
eed0: 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20 20  finity.Int64,   
eee0: 20 2f 2f 20 55 49 6e 74 36 34 20 28 31 32 29 0d   // UInt64 (12).
eef0: 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e  .      TypeAffin
ef00: 69 74 79 2e 44 6f 75 62 6c 65 2c 20 20 20 2f 2f  ity.Double,   //
ef10: 20 53 69 6e 67 6c 65 20 28 31 33 29 0d 0a 20 20   Single (13)..  
ef20: 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79      TypeAffinity
ef30: 2e 44 6f 75 62 6c 65 2c 20 20 20 2f 2f 20 44 6f  .Double,   // Do
ef40: 75 62 6c 65 20 28 31 34 29 0d 0a 20 20 20 20 20  uble (14)..     
ef50: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 44 6f   TypeAffinity.Do
ef60: 75 62 6c 65 2c 20 20 20 2f 2f 20 44 65 63 69 6d  uble,   // Decim
ef70: 61 6c 20 28 31 35 29 0d 0a 20 20 20 20 20 20 54  al (15)..      T
ef80: 79 70 65 41 66 66 69 6e 69 74 79 2e 44 61 74 65  ypeAffinity.Date
ef90: 54 69 6d 65 2c 20 2f 2f 20 44 61 74 65 54 69 6d  Time, // DateTim
efa0: 65 20 28 31 36 29 0d 0a 20 20 20 20 20 20 54 79  e (16)..      Ty
efb0: 70 65 41 66 66 69 6e 69 74 79 2e 4e 75 6c 6c 2c  peAffinity.Null,
efc0: 20 20 20 20 20 2f 2f 20 3f 3f 20 28 31 37 29 0d       // ?? (17).
efd0: 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e  .      TypeAffin
efe0: 69 74 79 2e 54 65 78 74 20 20 20 20 20 20 2f 2f  ity.Text      //
eff0: 20 53 74 72 69 6e 67 20 28 31 38 29 0d 0a 20 20   String (18)..  
f000: 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20    };....    /// 
f010: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
f020: 2f 2f 20 42 75 69 6c 64 73 20 61 6e 64 20 72 65  // Builds and re
f030: 74 75 72 6e 73 20 61 20 6d 61 70 20 63 6f 6e 74  turns a map cont
f040: 61 69 6e 69 6e 67 20 74 68 65 20 64 61 74 61 62  aining the datab
f050: 61 73 65 20 63 6f 6c 75 6d 6e 20 74 79 70 65 73  ase column types
f060: 0d 0a 20 20 20 20 2f 2f 2f 20 72 65 63 6f 67 6e  ..    /// recogn
f070: 69 7a 65 64 20 62 79 20 74 68 69 73 20 70 72 6f  ized by this pro
f080: 76 69 64 65 72 2e 0d 0a 20 20 20 20 2f 2f 2f 20  vider...    /// 
f090: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
f0a0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
f0b0: 20 20 20 2f 2f 2f 20 41 20 6d 61 70 20 63 6f 6e     /// A map con
f0c0: 74 61 69 6e 69 6e 67 20 74 68 65 20 64 61 74 61  taining the data
f0d0: 62 61 73 65 20 63 6f 6c 75 6d 6e 20 74 79 70 65  base column type
f0e0: 73 20 72 65 63 6f 67 6e 69 7a 65 64 20 62 79 20  s recognized by 
f0f0: 74 68 69 73 0d 0a 20 20 20 20 2f 2f 2f 20 70 72  this..    /// pr
f100: 6f 76 69 64 65 72 2e 0d 0a 20 20 20 20 2f 2f 2f  ovider...    ///
f110: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
f120: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
f130: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 20  SQLiteDbTypeMap 
f140: 47 65 74 53 51 4c 69 74 65 44 62 54 79 70 65 4d  GetSQLiteDbTypeM
f150: 61 70 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  ap()..    {..   
f160: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20       return new 
f170: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 28  SQLiteDbTypeMap(
f180: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
f190: 4d 61 70 70 69 6e 67 5b 5d 20 7b 0d 0a 20 20 20  Mapping[] {..   
f1a0: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
f1b0: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
f1c0: 28 22 42 49 47 49 4e 54 22 2c 20 44 62 54 79 70  ("BIGINT", DbTyp
f1d0: 65 2e 49 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c  e.Int64, false),
f1e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
f1f0: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
f200: 70 70 69 6e 67 28 22 42 49 47 55 49 4e 54 22 2c  pping("BIGUINT",
f210: 20 44 62 54 79 70 65 2e 55 49 6e 74 36 34 2c 20   DbType.UInt64, 
f220: 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
f230: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
f240: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 42 49  bTypeMapping("BI
f250: 4e 41 52 59 22 2c 20 44 62 54 79 70 65 2e 42 69  NARY", DbType.Bi
f260: 6e 61 72 79 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  nary, false),.. 
f270: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
f280: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
f290: 6e 67 28 22 42 49 54 22 2c 20 44 62 54 79 70 65  ng("BIT", DbType
f2a0: 2e 42 6f 6f 6c 65 61 6e 2c 20 74 72 75 65 29 2c  .Boolean, true),
f2b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
f2c0: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
f2d0: 70 70 69 6e 67 28 22 42 4c 4f 42 22 2c 20 44 62  pping("BLOB", Db
f2e0: 54 79 70 65 2e 42 69 6e 61 72 79 2c 20 74 72 75  Type.Binary, tru
f2f0: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
f300: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
f310: 65 4d 61 70 70 69 6e 67 28 22 42 4f 4f 4c 22 2c  eMapping("BOOL",
f320: 20 44 62 54 79 70 65 2e 42 6f 6f 6c 65 61 6e 2c   DbType.Boolean,
f330: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
f340: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
f350: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 42  DbTypeMapping("B
f360: 4f 4f 4c 45 41 4e 22 2c 20 44 62 54 79 70 65 2e  OOLEAN", DbType.
f370: 42 6f 6f 6c 65 61 6e 2c 20 66 61 6c 73 65 29 2c  Boolean, false),
f380: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
f390: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
f3a0: 70 70 69 6e 67 28 22 43 48 41 52 22 2c 20 44 62  pping("CHAR", Db
f3b0: 54 79 70 65 2e 41 6e 73 69 53 74 72 69 6e 67 46  Type.AnsiStringF
f3c0: 69 78 65 64 4c 65 6e 67 74 68 2c 20 74 72 75 65  ixedLength, true
f3d0: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
f3e0: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
f3f0: 4d 61 70 70 69 6e 67 28 22 43 4c 4f 42 22 2c 20  Mapping("CLOB", 
f400: 44 62 54 79 70 65 2e 53 74 72 69 6e 67 2c 20 66  DbType.String, f
f410: 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
f420: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
f430: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 43 4f 55  TypeMapping("COU
f440: 4e 54 45 52 22 2c 20 44 62 54 79 70 65 2e 49 6e  NTER", DbType.In
f450: 74 36 34 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20  t64, false),..  
f460: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
f470: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
f480: 67 28 22 43 55 52 52 45 4e 43 59 22 2c 20 44 62  g("CURRENCY", Db
f490: 54 79 70 65 2e 44 65 63 69 6d 61 6c 2c 20 66 61  Type.Decimal, fa
f4a0: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
f4b0: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
f4c0: 79 70 65 4d 61 70 70 69 6e 67 28 22 44 41 54 45  ypeMapping("DATE
f4d0: 22 2c 20 44 62 54 79 70 65 2e 44 61 74 65 54 69  ", DbType.DateTi
f4e0: 6d 65 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  me, false),..   
f4f0: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
f500: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
f510: 28 22 44 41 54 45 54 49 4d 45 22 2c 20 44 62 54  ("DATETIME", DbT
f520: 79 70 65 2e 44 61 74 65 54 69 6d 65 2c 20 74 72  ype.DateTime, tr
f530: 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ue),..          
f540: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
f550: 70 65 4d 61 70 70 69 6e 67 28 22 44 45 43 49 4d  peMapping("DECIM
f560: 41 4c 22 2c 20 44 62 54 79 70 65 2e 44 65 63 69  AL", DbType.Deci
f570: 6d 61 6c 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20  mal, true),..   
f580: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
f590: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
f5a0: 28 22 44 4f 55 42 4c 45 22 2c 20 44 62 54 79 70  ("DOUBLE", DbTyp
f5b0: 65 2e 44 6f 75 62 6c 65 2c 20 66 61 6c 73 65 29  e.Double, false)
f5c0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
f5d0: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
f5e0: 61 70 70 69 6e 67 28 22 46 4c 4f 41 54 22 2c 20  apping("FLOAT", 
f5f0: 44 62 54 79 70 65 2e 44 6f 75 62 6c 65 2c 20 66  DbType.Double, f
f600: 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
f610: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
f620: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 47 45 4e  TypeMapping("GEN
f630: 45 52 41 4c 22 2c 20 44 62 54 79 70 65 2e 42 69  ERAL", DbType.Bi
f640: 6e 61 72 79 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  nary, false),.. 
f650: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
f660: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
f670: 6e 67 28 22 47 55 49 44 22 2c 20 44 62 54 79 70  ng("GUID", DbTyp
f680: 65 2e 47 75 69 64 2c 20 66 61 6c 73 65 29 2c 0d  e.Guid, false),.
f690: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
f6a0: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
f6b0: 70 69 6e 67 28 22 49 44 45 4e 54 49 54 59 22 2c  ping("IDENTITY",
f6c0: 20 44 62 54 79 70 65 2e 49 6e 74 36 34 2c 20 66   DbType.Int64, f
f6d0: 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
f6e0: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
f6f0: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 49 4d 41  TypeMapping("IMA
f700: 47 45 22 2c 20 44 62 54 79 70 65 2e 42 69 6e 61  GE", DbType.Bina
f710: 72 79 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  ry, false),..   
f720: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
f730: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
f740: 28 22 49 4e 54 22 2c 20 44 62 54 79 70 65 2e 49  ("INT", DbType.I
f750: 6e 74 33 32 2c 20 74 72 75 65 29 2c 0d 0a 20 20  nt32, true),..  
f760: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
f770: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
f780: 67 28 22 49 4e 54 38 22 2c 20 44 62 54 79 70 65  g("INT8", DbType
f790: 2e 53 42 79 74 65 2c 20 66 61 6c 73 65 29 2c 0d  .SByte, false),.
f7a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
f7b0: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
f7c0: 70 69 6e 67 28 22 49 4e 54 31 36 22 2c 20 44 62  ping("INT16", Db
f7d0: 54 79 70 65 2e 49 6e 74 31 36 2c 20 66 61 6c 73  Type.Int16, fals
f7e0: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
f7f0: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
f800: 65 4d 61 70 70 69 6e 67 28 22 49 4e 54 33 32 22  eMapping("INT32"
f810: 2c 20 44 62 54 79 70 65 2e 49 6e 74 33 32 2c 20  , DbType.Int32, 
f820: 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
f830: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
f840: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 49 4e  bTypeMapping("IN
f850: 54 36 34 22 2c 20 44 62 54 79 70 65 2e 49 6e 74  T64", DbType.Int
f860: 36 34 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  64, false),..   
f870: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
f880: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
f890: 28 22 49 4e 54 45 47 45 52 22 2c 20 44 62 54 79  ("INTEGER", DbTy
f8a0: 70 65 2e 49 6e 74 36 34 2c 20 74 72 75 65 29 2c  pe.Int64, true),
f8b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
f8c0: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
f8d0: 70 70 69 6e 67 28 22 49 4e 54 45 47 45 52 38 22  pping("INTEGER8"
f8e0: 2c 20 44 62 54 79 70 65 2e 53 42 79 74 65 2c 20  , DbType.SByte, 
f8f0: 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
f900: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
f910: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 49 4e  bTypeMapping("IN
f920: 54 45 47 45 52 31 36 22 2c 20 44 62 54 79 70 65  TEGER16", DbType
f930: 2e 49 6e 74 31 36 2c 20 66 61 6c 73 65 29 2c 0d  .Int16, false),.
f940: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
f950: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
f960: 70 69 6e 67 28 22 49 4e 54 45 47 45 52 33 32 22  ping("INTEGER32"
f970: 2c 20 44 62 54 79 70 65 2e 49 6e 74 33 32 2c 20  , DbType.Int32, 
f980: 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
f990: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
f9a0: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 49 4e  bTypeMapping("IN
f9b0: 54 45 47 45 52 36 34 22 2c 20 44 62 54 79 70 65  TEGER64", DbType
f9c0: 2e 49 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c 0d  .Int64, false),.
f9d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
f9e0: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
f9f0: 70 69 6e 67 28 22 4c 4f 47 49 43 41 4c 22 2c 20  ping("LOGICAL", 
fa00: 44 62 54 79 70 65 2e 42 6f 6f 6c 65 61 6e 2c 20  DbType.Boolean, 
fa10: 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
fa20: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
fa30: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4c 4f  bTypeMapping("LO
fa40: 4e 47 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 36  NG", DbType.Int6
fa50: 34 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  4, false),..    
fa60: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
fa70: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
fa80: 22 4c 4f 4e 47 43 48 41 52 22 2c 20 44 62 54 79  "LONGCHAR", DbTy
fa90: 70 65 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73 65  pe.String, false
faa0: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
fab0: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
fac0: 4d 61 70 70 69 6e 67 28 22 4c 4f 4e 47 54 45 58  Mapping("LONGTEX
fad0: 54 22 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e  T", DbType.Strin
fae0: 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  g, false),..    
faf0: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
fb00: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
fb10: 22 4c 4f 4e 47 56 41 52 43 48 41 52 22 2c 20 44  "LONGVARCHAR", D
fb20: 62 54 79 70 65 2e 53 74 72 69 6e 67 2c 20 66 61  bType.String, fa
fb30: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
fb40: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
fb50: 79 70 65 4d 61 70 70 69 6e 67 28 22 4d 45 4d 4f  ypeMapping("MEMO
fb60: 22 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67  ", DbType.String
fb70: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
fb80: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
fb90: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
fba0: 4d 4f 4e 45 59 22 2c 20 44 62 54 79 70 65 2e 44  MONEY", DbType.D
fbb0: 65 63 69 6d 61 6c 2c 20 66 61 6c 73 65 29 2c 0d  ecimal, false),.
fbc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
fbd0: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
fbe0: 70 69 6e 67 28 22 4e 43 48 41 52 22 2c 20 44 62  ping("NCHAR", Db
fbf0: 54 79 70 65 2e 53 74 72 69 6e 67 46 69 78 65 64  Type.StringFixed
fc00: 4c 65 6e 67 74 68 2c 20 74 72 75 65 29 2c 0d 0a  Length, true),..
fc10: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
fc20: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
fc30: 69 6e 67 28 22 4e 4f 54 45 22 2c 20 44 62 54 79  ing("NOTE", DbTy
fc40: 70 65 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73 65  pe.String, false
fc50: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
fc60: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
fc70: 4d 61 70 70 69 6e 67 28 22 4e 54 45 58 54 22 2c  Mapping("NTEXT",
fc80: 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 2c 20   DbType.String, 
fc90: 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
fca0: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
fcb0: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4e 55  bTypeMapping("NU
fcc0: 4d 42 45 52 22 2c 20 44 62 54 79 70 65 2e 44 65  MBER", DbType.De
fcd0: 63 69 6d 61 6c 2c 20 66 61 6c 73 65 29 2c 0d 0a  cimal, false),..
fce0: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
fcf0: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
fd00: 69 6e 67 28 22 4e 55 4d 45 52 49 43 22 2c 20 44  ing("NUMERIC", D
fd10: 62 54 79 70 65 2e 44 65 63 69 6d 61 6c 2c 20 66  bType.Decimal, f
fd20: 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
fd30: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
fd40: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4e 56 41  TypeMapping("NVA
fd50: 52 43 48 41 52 22 2c 20 44 62 54 79 70 65 2e 53  RCHAR", DbType.S
fd60: 74 72 69 6e 67 2c 20 74 72 75 65 29 2c 0d 0a 20  tring, true),.. 
fd70: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
fd80: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
fd90: 6e 67 28 22 4f 4c 45 4f 42 4a 45 43 54 22 2c 20  ng("OLEOBJECT", 
fda0: 44 62 54 79 70 65 2e 42 69 6e 61 72 79 2c 20 66  DbType.Binary, f
fdb0: 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
fdc0: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
fdd0: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 52 41 57  TypeMapping("RAW
fde0: 22 2c 20 44 62 54 79 70 65 2e 42 69 6e 61 72 79  ", DbType.Binary
fdf0: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
fe00: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
fe10: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
fe20: 52 45 41 4c 22 2c 20 44 62 54 79 70 65 2e 44 6f  REAL", DbType.Do
fe30: 75 62 6c 65 2c 20 74 72 75 65 29 2c 0d 0a 20 20  uble, true),..  
fe40: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
fe50: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
fe60: 67 28 22 53 49 4e 47 4c 45 22 2c 20 44 62 54 79  g("SINGLE", DbTy
fe70: 70 65 2e 53 69 6e 67 6c 65 2c 20 74 72 75 65 29  pe.Single, true)
fe80: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
fe90: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
fea0: 61 70 70 69 6e 67 28 22 53 4d 41 4c 4c 44 41 54  apping("SMALLDAT
feb0: 45 22 2c 20 44 62 54 79 70 65 2e 44 61 74 65 54  E", DbType.DateT
fec0: 69 6d 65 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20  ime, false),..  
fed0: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
fee0: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
fef0: 67 28 22 53 4d 41 4c 4c 49 4e 54 22 2c 20 44 62  g("SMALLINT", Db
ff00: 54 79 70 65 2e 49 6e 74 31 36 2c 20 74 72 75 65  Type.Int16, true
ff10: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
ff20: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
ff30: 4d 61 70 70 69 6e 67 28 22 53 4d 41 4c 4c 55 49  Mapping("SMALLUI
ff40: 4e 54 22 2c 20 44 62 54 79 70 65 2e 55 49 6e 74  NT", DbType.UInt
ff50: 31 36 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20  16, true),..    
ff60: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
ff70: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
ff80: 22 53 54 52 49 4e 47 22 2c 20 44 62 54 79 70 65  "STRING", DbType
ff90: 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c  .String, false),
ffa0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
ffb0: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
ffc0: 70 70 69 6e 67 28 22 54 45 58 54 22 2c 20 44 62  pping("TEXT", Db
ffd0: 54 79 70 65 2e 53 74 72 69 6e 67 2c 20 66 61 6c  Type.String, fal
ffe0: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
fff0: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
10000 70 65 4d 61 70 70 69 6e 67 28 22 54 49 4d 45 22  peMapping("TIME"
10010 2c 20 44 62 54 79 70 65 2e 44 61 74 65 54 69 6d  , DbType.DateTim
10020 65 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  e, false),..    
10030 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
10040 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
10050 22 54 49 4d 45 53 54 41 4d 50 22 2c 20 44 62 54  "TIMESTAMP", DbT
10060 79 70 65 2e 44 61 74 65 54 69 6d 65 2c 20 66 61  ype.DateTime, fa
10070 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
10080 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
10090 79 70 65 4d 61 70 70 69 6e 67 28 22 54 49 4e 59  ypeMapping("TINY
100a0 49 4e 54 22 2c 20 44 62 54 79 70 65 2e 42 79 74  INT", DbType.Byt
100b0 65 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20  e, true),..     
100c0 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
100d0 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
100e0 54 49 4e 59 53 49 4e 54 22 2c 20 44 62 54 79 70  TINYSINT", DbTyp
100f0 65 2e 53 42 79 74 65 2c 20 74 72 75 65 29 2c 0d  e.SByte, true),.
10100 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
10110 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
10120 70 69 6e 67 28 22 55 49 4e 54 22 2c 20 44 62 54  ping("UINT", DbT
10130 79 70 65 2e 55 49 6e 74 33 32 2c 20 74 72 75 65  ype.UInt32, true
10140 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
10150 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
10160 4d 61 70 70 69 6e 67 28 22 55 49 4e 54 38 22 2c  Mapping("UINT8",
10170 20 44 62 54 79 70 65 2e 42 79 74 65 2c 20 66 61   DbType.Byte, fa
10180 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
10190 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
101a0 79 70 65 4d 61 70 70 69 6e 67 28 22 55 49 4e 54  ypeMapping("UINT
101b0 31 36 22 2c 20 44 62 54 79 70 65 2e 55 49 6e 74  16", DbType.UInt
101c0 31 36 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  16, false),..   
101d0 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
101e0 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
101f0 28 22 55 49 4e 54 33 32 22 2c 20 44 62 54 79 70  ("UINT32", DbTyp
10200 65 2e 55 49 6e 74 33 32 2c 20 66 61 6c 73 65 29  e.UInt32, false)
10210 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
10220 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
10230 61 70 70 69 6e 67 28 22 55 49 4e 54 36 34 22 2c  apping("UINT64",
10240 20 44 62 54 79 70 65 2e 55 49 6e 74 36 34 2c 20   DbType.UInt64, 
10250 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
10260 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
10270 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 55 4c  bTypeMapping("UL
10280 4f 4e 47 22 2c 20 44 62 54 79 70 65 2e 55 49 6e  ONG", DbType.UIn
10290 74 36 34 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20  t64, false),..  
102a0 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
102b0 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
102c0 67 28 22 55 4e 49 51 55 45 49 44 45 4e 54 49 46  g("UNIQUEIDENTIF
102d0 49 45 52 22 2c 20 44 62 54 79 70 65 2e 47 75 69  IER", DbType.Gui
102e0 64 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20  d, true),..     
102f0 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
10300 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
10310 55 4e 53 49 47 4e 45 44 49 4e 54 45 47 45 52 22  UNSIGNEDINTEGER"
10320 2c 20 44 62 54 79 70 65 2e 55 49 6e 74 36 34 2c  , DbType.UInt64,
10330 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20   true),..       
10340 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
10350 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 55 4e  bTypeMapping("UN
10360 53 49 47 4e 45 44 49 4e 54 45 47 45 52 38 22 2c  SIGNEDINTEGER8",
10370 20 44 62 54 79 70 65 2e 42 79 74 65 2c 20 66 61   DbType.Byte, fa
10380 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
10390 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
103a0 79 70 65 4d 61 70 70 69 6e 67 28 22 55 4e 53 49  ypeMapping("UNSI
103b0 47 4e 45 44 49 4e 54 45 47 45 52 31 36 22 2c 20  GNEDINTEGER16", 
103c0 44 62 54 79 70 65 2e 55 49 6e 74 31 36 2c 20 66  DbType.UInt16, f
103d0 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
103e0 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
103f0 54 79 70 65 4d 61 70 70 69 6e 67 28 22 55 4e 53  TypeMapping("UNS
10400 49 47 4e 45 44 49 4e 54 45 47 45 52 33 32 22 2c  IGNEDINTEGER32",
10410 20 44 62 54 79 70 65 2e 55 49 6e 74 33 32 2c 20   DbType.UInt32, 
10420 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
10430 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
10440 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 55 4e  bTypeMapping("UN
10450 53 49 47 4e 45 44 49 4e 54 45 47 45 52 36 34 22  SIGNEDINTEGER64"
10460 2c 20 44 62 54 79 70 65 2e 55 49 6e 74 36 34 2c  , DbType.UInt64,
10470 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
10480 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
10490 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 56  DbTypeMapping("V
104a0 41 52 42 49 4e 41 52 59 22 2c 20 44 62 54 79 70  ARBINARY", DbTyp
104b0 65 2e 42 69 6e 61 72 79 2c 20 66 61 6c 73 65 29  e.Binary, false)
104c0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
104d0 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
104e0 61 70 70 69 6e 67 28 22 56 41 52 43 48 41 52 22  apping("VARCHAR"
104f0 2c 20 44 62 54 79 70 65 2e 41 6e 73 69 53 74 72  , DbType.AnsiStr
10500 69 6e 67 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20  ing, true),..   
10510 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
10520 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
10530 28 22 56 41 52 43 48 41 52 32 22 2c 20 44 62 54  ("VARCHAR2", DbT
10540 79 70 65 2e 41 6e 73 69 53 74 72 69 6e 67 2c 20  ype.AnsiString, 
10550 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
10560 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
10570 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 59 45  bTypeMapping("YE
10580 53 4e 4f 22 2c 20 44 62 54 79 70 65 2e 42 6f 6f  SNO", DbType.Boo
10590 6c 65 61 6e 2c 20 66 61 6c 73 65 29 0d 0a 20 20  lean, false)..  
105a0 20 20 20 20 20 20 7d 29 3b 0d 0a 20 20 20 20 7d        });..    }
105b0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
105c0 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44  mary>..    /// D
105d0 65 74 65 72 6d 69 6e 65 73 20 69 66 20 61 20 64  etermines if a d
105e0 61 74 61 62 61 73 65 20 74 79 70 65 20 69 73 20  atabase type is 
105f0 63 6f 6e 73 69 64 65 72 65 64 20 74 6f 20 62 65  considered to be
10600 20 61 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20   a string...    
10610 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
10620 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
10630 61 6d 65 3d 22 74 79 70 65 22 3e 0d 0a 20 20 20  ame="type">..   
10640 20 2f 2f 2f 20 54 68 65 20 64 61 74 61 62 61 73   /// The databas
10650 65 20 74 79 70 65 20 74 6f 20 63 68 65 63 6b 2e  e type to check.
10660 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
10670 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
10680 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e  urns>..    /// N
10690 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 64  on-zero if the d
106a0 61 74 61 62 61 73 65 20 74 79 70 65 20 69 73 20  atabase type is 
106b0 63 6f 6e 73 69 64 65 72 65 64 20 74 6f 20 62 65  considered to be
106c0 20 61 20 73 74 72 69 6e 67 2c 20 7a 65 72 6f 0d   a string, zero.
106d0 0a 20 20 20 20 2f 2f 2f 20 6f 74 68 65 72 77 69  .    /// otherwi
106e0 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72  se...    /// </r
106f0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74  eturns>..    int
10700 65 72 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f  ernal static boo
10710 6c 20 49 73 53 74 72 69 6e 67 44 62 54 79 70 65  l IsStringDbType
10720 28 0d 0a 20 20 20 20 20 20 20 20 44 62 54 79 70  (..        DbTyp
10730 65 20 74 79 70 65 0d 0a 20 20 20 20 20 20 20 20  e type..        
10740 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
10750 20 20 73 77 69 74 63 68 20 28 74 79 70 65 29 0d    switch (type).
10760 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
10770 20 20 20 20 20 20 20 20 63 61 73 65 20 44 62 54          case DbT
10780 79 70 65 2e 41 6e 73 69 53 74 72 69 6e 67 3a 0d  ype.AnsiString:.
10790 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
107a0 65 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 3a  e DbType.String:
107b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
107c0 73 65 20 44 62 54 79 70 65 2e 41 6e 73 69 53 74  se DbType.AnsiSt
107d0 72 69 6e 67 46 69 78 65 64 4c 65 6e 67 74 68 3a  ringFixedLength:
107e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
107f0 73 65 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67  se DbType.String
10800 46 69 78 65 64 4c 65 6e 67 74 68 3a 0d 0a 20 20  FixedLength:..  
10810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
10820 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20  turn true;..    
10830 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a          default:
10840 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10850 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
10860 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
10870 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
10880 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
10890 44 65 74 65 72 6d 69 6e 65 73 20 61 6e 64 20 72  Determines and r
108a0 65 74 75 72 6e 73 20 74 68 65 20 72 75 6e 74 69  eturns the runti
108b0 6d 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  me configuration
108c0 20 73 65 74 74 69 6e 67 20 73 74 72 69 6e 67 20   setting string 
108d0 74 68 61 74 0d 0a 20 20 20 20 2f 2f 2f 20 73 68  that..    /// sh
108e0 6f 75 6c 64 20 62 65 20 75 73 65 64 20 69 6e 20  ould be used in 
108f0 70 6c 61 63 65 20 6f 66 20 74 68 65 20 73 70 65  place of the spe
10900 63 69 66 69 65 64 20 6f 62 6a 65 63 74 20 76 61  cified object va
10910 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  lue...    /// </
10920 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
10930 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76  / <param name="v
10940 61 6c 75 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  alue">..    /// 
10950 54 68 65 20 6f 62 6a 65 63 74 20 76 61 6c 75 65  The object value
10960 20 74 6f 20 63 6f 6e 76 65 72 74 20 74 6f 20 61   to convert to a
10970 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 2f 2f   string...    //
10980 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
10990 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
109a0 20 20 20 2f 2f 2f 20 45 69 74 68 65 72 20 74 68     /// Either th
109b0 65 20 73 74 72 69 6e 67 20 74 6f 20 75 73 65 20  e string to use 
109c0 69 6e 20 70 6c 61 63 65 20 6f 66 20 74 68 65 20  in place of the 
109d0 6f 62 6a 65 63 74 20 76 61 6c 75 65 20 2d 4f 52  object value -OR
109e0 2d 20 6e 75 6c 6c 20 69 66 20 69 74 0d 0a 20 20  - null if it..  
109f0 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20    /// cannot be 
10a00 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20  determined...   
10a10 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
10a20 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61  .    private sta
10a30 74 69 63 20 73 74 72 69 6e 67 20 53 65 74 74 69  tic string Setti
10a40 6e 67 56 61 6c 75 65 54 6f 53 74 72 69 6e 67 28  ngValueToString(
10a50 0d 0a 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74  ..        object
10a60 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20   value..        
10a70 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
10a80 20 20 69 66 20 28 76 61 6c 75 65 20 69 73 20 73    if (value is s
10a90 74 72 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20  tring)..        
10aa0 20 20 20 20 72 65 74 75 72 6e 20 28 73 74 72 69      return (stri
10ab0 6e 67 29 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20  ng)value;....   
10ac0 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 21       if (value !
10ad0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
10ae0 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75       return valu
10af0 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 0d  e.ToString();...
10b00 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
10b10 6e 75 6c 6c 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  null;..    }....
10b20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
10b30 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65 72  >..    /// Deter
10b40 6d 69 6e 65 73 20 74 68 65 20 64 65 66 61 75 6c  mines the defaul
10b50 74 20 3c 73 65 65 20 63 72 65 66 3d 22 44 62 54  t <see cref="DbT
10b60 79 70 65 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f  ype" /> value to
10b70 20 62 65 20 75 73 65 64 20 77 68 65 6e 20 61 0d   be used when a.
10b80 0a 20 20 20 20 2f 2f 2f 20 70 65 72 2d 63 6f 6e  .    /// per-con
10b90 6e 65 63 74 69 6f 6e 20 76 61 6c 75 65 20 69 73  nection value is
10ba0 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 2e 0d   not available..
10bb0 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
10bc0 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
10bd0 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63  ram name="connec
10be0 74 69 6f 6e 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  tion">..    /// 
10bf0 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 63  The connection c
10c00 6f 6e 74 65 78 74 20 66 6f 72 20 74 79 70 65 20  ontext for type 
10c10 6d 61 70 70 69 6e 67 73 2c 20 69 66 20 61 6e 79  mappings, if any
10c20 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
10c30 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
10c40 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20  turns>..    /// 
10c50 54 68 65 20 64 65 66 61 75 6c 74 20 3c 73 65 65  The default <see
10c60 20 63 72 65 66 3d 22 44 62 54 79 70 65 22 20 2f   cref="DbType" /
10c70 3e 20 76 61 6c 75 65 20 74 6f 20 75 73 65 2e 0d  > value to use..
10c80 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72  .    /// </retur
10c90 6e 73 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65  ns>..    private
10ca0 20 73 74 61 74 69 63 20 44 62 54 79 70 65 20 47   static DbType G
10cb0 65 74 44 65 66 61 75 6c 74 44 62 54 79 70 65 28  etDefaultDbType(
10cc0 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
10cd0 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65  Connection conne
10ce0 63 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 29  ction..        )
10cf0 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
10d00 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
10d10 6e 46 6c 61 67 73 20 66 6c 61 67 73 20 3d 20 28  nFlags flags = (
10d20 63 6f 6e 6e 65 63 74 69 6f 6e 20 21 3d 20 6e 75  connection != nu
10d30 6c 6c 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20  ll) ?..         
10d40 20 20 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 46 6c     connection.Fl
10d50 61 67 73 20 3a 20 53 51 4c 69 74 65 43 6f 6e 6e  ags : SQLiteConn
10d60 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f 6e 65  ectionFlags.None
10d70 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20  ;....        if 
10d80 28 28 66 6c 61 67 73 20 26 20 53 51 4c 69 74 65  ((flags & SQLite
10d90 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e  ConnectionFlags.
10da0 4e 6f 43 6f 6e 76 65 72 74 53 65 74 74 69 6e 67  NoConvertSetting
10db0 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s)..            
10dc0 20 20 20 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e      == SQLiteCon
10dd0 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f 43  nectionFlags.NoC
10de0 6f 6e 76 65 72 74 53 65 74 74 69 6e 67 73 29 0d  onvertSettings).
10df0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
10e00 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 46          return F
10e10 61 6c 6c 62 61 63 6b 44 65 66 61 75 6c 74 44 62  allbackDefaultDb
10e20 54 79 70 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d  Type;..        }
10e30 0d 0a 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c  ....        bool
10e40 20 66 6f 75 6e 64 20 3d 20 66 61 6c 73 65 3b 0d   found = false;.
10e50 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20  .        string 
10e60 6e 61 6d 65 20 3d 20 22 55 73 65 5f 53 51 4c 69  name = "Use_SQLi
10e70 74 65 43 6f 6e 76 65 72 74 5f 44 65 66 61 75 6c  teConvert_Defaul
10e80 74 44 62 54 79 70 65 22 3b 0d 0a 20 20 20 20 20  tDbType";..     
10e90 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 20     object value 
10ea0 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  = null;..       
10eb0 20 73 74 72 69 6e 67 20 40 64 65 66 61 75 6c 74   string @default
10ec0 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20   = null;....    
10ed0 20 20 20 20 69 66 20 28 28 63 6f 6e 6e 65 63 74      if ((connect
10ee0 69 6f 6e 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 0d  ion == null) ||.
10ef0 0a 20 20 20 20 20 20 20 20 20 20 20 20 21 63 6f  .            !co
10f00 6e 6e 65 63 74 69 6f 6e 2e 54 72 79 47 65 74 43  nnection.TryGetC
10f10 61 63 68 65 64 53 65 74 74 69 6e 67 28 6e 61 6d  achedSetting(nam
10f20 65 2c 20 40 64 65 66 61 75 6c 74 2c 20 6f 75 74  e, @default, out
10f30 20 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20   value))..      
10f40 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
10f50 20 76 61 6c 75 65 20 3d 20 55 6e 73 61 66 65 4e   value = UnsafeN
10f60 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 47 65 74  ativeMethods.Get
10f70 53 65 74 74 69 6e 67 56 61 6c 75 65 28 6e 61 6d  SettingValue(nam
10f80 65 2c 20 40 64 65 66 61 75 6c 74 29 3b 0d 0a 0d  e, @default);...
10f90 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
10fa0 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d  (value == null).
10fb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10fc0 20 76 61 6c 75 65 20 3d 20 46 61 6c 6c 62 61 63   value = Fallbac
10fd0 6b 44 65 66 61 75 6c 74 44 62 54 79 70 65 3b 0d  kDefaultDbType;.
10fe0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
10ff0 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
11000 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
11010 20 66 6f 75 6e 64 20 3d 20 74 72 75 65 3b 0d 0a   found = true;..
11020 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
11030 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
11040 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
11050 20 69 66 20 28 21 28 76 61 6c 75 65 20 69 73 20   if (!(value is 
11060 44 62 54 79 70 65 29 29 0d 0a 20 20 20 20 20 20  DbType))..      
11070 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
11080 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d           value =
11090 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
110a0 6e 2e 54 72 79 50 61 72 73 65 45 6e 75 6d 28 0d  n.TryParseEnum(.
110b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
110c0 20 20 20 20 20 74 79 70 65 6f 66 28 44 62 54 79       typeof(DbTy
110d0 70 65 29 2c 20 53 65 74 74 69 6e 67 56 61 6c 75  pe), SettingValu
110e0 65 54 6f 53 74 72 69 6e 67 28 76 61 6c 75 65 29  eToString(value)
110f0 2c 20 74 72 75 65 29 3b 0d 0a 0d 0a 20 20 20 20  , true);....    
11100 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
11110 21 28 76 61 6c 75 65 20 69 73 20 44 62 54 79 70  !(value is DbTyp
11120 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
11130 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d           value =
11140 20 46 61 6c 6c 62 61 63 6b 44 65 66 61 75 6c 74   FallbackDefault
11150 44 62 54 79 70 65 3b 0d 0a 20 20 20 20 20 20 20  DbType;..       
11160 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
11170 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 44 62        return (Db
11180 54 79 70 65 29 76 61 6c 75 65 3b 0d 0a 20 20 20  Type)value;..   
11190 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
111a0 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20  finally..       
111b0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
111c0 69 66 20 28 21 66 6f 75 6e 64 20 26 26 20 28 63  if (!found && (c
111d0 6f 6e 6e 65 63 74 69 6f 6e 20 21 3d 20 6e 75 6c  onnection != nul
111e0 6c 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  l))..           
111f0 20 20 20 20 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e       connection.
11200 53 65 74 43 61 63 68 65 64 53 65 74 74 69 6e 67  SetCachedSetting
11210 28 6e 61 6d 65 2c 20 76 61 6c 75 65 29 3b 0d 0a  (name, value);..
11220 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d          }..    }
11230 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
11240 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43  mary>..    /// C
11250 6f 6e 76 65 72 74 73 20 74 68 65 20 6f 62 6a 65  onverts the obje
11260 63 74 20 76 61 6c 75 65 2c 20 77 68 69 63 68 20  ct value, which 
11270 69 73 20 61 73 73 75 6d 65 64 20 74 6f 20 68 61  is assumed to ha
11280 76 65 20 6f 72 69 67 69 6e 61 74 65 64 0d 0a 20  ve originated.. 
11290 20 20 20 2f 2f 2f 20 66 72 6f 6d 20 61 20 3c 73     /// from a <s
112a0 65 65 20 63 72 65 66 3d 22 44 61 74 61 52 6f 77  ee cref="DataRow
112b0 22 20 2f 3e 2c 20 74 6f 20 61 20 73 74 72 69 6e  " />, to a strin
112c0 67 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f  g value...    //
112d0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
112e0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
112f0 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20  e="value">..    
11300 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 74 6f  /// The value to
11310 20 62 65 20 63 6f 6e 76 65 72 74 65 64 20 74 6f   be converted to
11320 20 61 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20   a string...    
11330 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
11340 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
11350 0a 20 20 20 20 2f 2f 2f 20 41 20 6e 75 6c 6c 20  .    /// A null 
11360 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 20 72 65  value will be re
11370 74 75 72 6e 65 64 20 69 66 20 74 68 65 20 6f 72  turned if the or
11380 69 67 69 6e 61 6c 20 76 61 6c 75 65 20 69 73 20  iginal value is 
11390 6e 75 6c 6c 20 2d 4f 52 2d 0d 0a 20 20 20 20 2f  null -OR-..    /
113a0 2f 2f 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20  // the original 
113b0 76 61 6c 75 65 20 69 73 20 3c 73 65 65 20 63 72  value is <see cr
113c0 65 66 3d 22 44 42 4e 75 6c 6c 2e 56 61 6c 75 65  ef="DBNull.Value
113d0 22 20 2f 3e 2e 20 20 4f 74 68 65 72 77 69 73 65  " />.  Otherwise
113e0 2c 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 65 20 6f  ,..    /// the o
113f0 72 69 67 69 6e 61 6c 20 76 61 6c 75 65 20 77 69  riginal value wi
11400 6c 6c 20 62 65 20 63 6f 6e 76 65 72 74 65 64 20  ll be converted 
11410 74 6f 20 61 20 73 74 72 69 6e 67 2c 20 75 73 69  to a string, usi
11420 6e 67 20 69 74 73 0d 0a 20 20 20 20 2f 2f 2f 20  ng its..    /// 
11430 28 70 6f 73 73 69 62 6c 79 20 6f 76 65 72 72 69  (possibly overri
11440 64 64 65 6e 29 20 3c 73 65 65 20 63 72 65 66 3d  dden) <see cref=
11450 22 4f 62 6a 65 63 74 2e 54 6f 53 74 72 69 6e 67  "Object.ToString
11460 22 20 2f 3e 20 6d 65 74 68 6f 64 20 61 6e 64 0d  " /> method and.
11470 0a 20 20 20 20 2f 2f 2f 20 74 68 65 6e 20 72 65  .    /// then re
11480 74 75 72 6e 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f  turned...    ///
11490 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
114a0 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73   public static s
114b0 74 72 69 6e 67 20 47 65 74 53 74 72 69 6e 67 4f  tring GetStringO
114c0 72 4e 75 6c 6c 28 0d 0a 20 20 20 20 20 20 20 20  rNull(..        
114d0 6f 62 6a 65 63 74 20 76 61 6c 75 65 0d 0a 20 20  object value..  
114e0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a        )..    {..
114f0 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75          if (valu
11500 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
11510 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
11520 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
11530 69 66 20 28 76 61 6c 75 65 20 69 73 20 73 74 72  if (value is str
11540 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ing)..          
11550 20 20 72 65 74 75 72 6e 20 28 73 74 72 69 6e 67    return (string
11560 29 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20  )value;....     
11570 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20     if (value == 
11580 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 29 0d 0a 20  DBNull.Value).. 
11590 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
115a0 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  n null;....     
115b0 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e     return value.
115c0 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20  ToString();..   
115d0 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   }....    /// <s
115e0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
115f0 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20 74   Determines if t
11600 68 65 20 73 70 65 63 69 66 69 65 64 20 74 65 78  he specified tex
11610 74 75 61 6c 20 76 61 6c 75 65 20 61 70 70 65 61  tual value appea
11620 72 73 20 74 6f 20 62 65 20 61 0d 0a 20 20 20 20  rs to be a..    
11630 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 44  /// <see cref="D
11640 42 4e 75 6c 6c 22 20 2f 3e 20 76 61 6c 75 65 2e  BNull" /> value.
11650 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
11660 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
11670 61 72 61 6d 20 6e 61 6d 65 3d 22 74 65 78 74 22  aram name="text"
11680 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 74  >..    /// The t
11690 65 78 74 75 61 6c 20 76 61 6c 75 65 20 74 6f 20  extual value to 
116a0 69 6e 73 70 65 63 74 2e 0d 0a 20 20 20 20 2f 2f  inspect...    //
116b0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
116c0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
116d0 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
116e0 69 66 20 74 68 65 20 74 65 78 74 20 6c 6f 6f 6b  if the text look
116f0 73 20 6c 69 6b 65 20 61 20 3c 73 65 65 20 63 72  s like a <see cr
11700 65 66 3d 22 44 42 4e 75 6c 6c 22 20 2f 3e 20 76  ef="DBNull" /> v
11710 61 6c 75 65 2c 0d 0a 20 20 20 20 2f 2f 2f 20 7a  alue,..    /// z
11720 65 72 6f 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a  ero otherwise...
11730 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
11740 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  s>..    internal
11750 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 4c 6f 6f   static bool Loo
11760 6b 73 4c 69 6b 65 4e 75 6c 6c 28 0d 0a 20 20 20  ksLikeNull(..   
11770 20 20 20 20 20 73 74 72 69 6e 67 20 74 65 78 74       string text
11780 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20  ..        )..   
11790 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75   {..        retu
117a0 72 6e 20 28 74 65 78 74 20 3d 3d 20 6e 75 6c 6c  rn (text == null
117b0 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  );..    }....   
117c0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
117d0 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e      /// Determin
117e0 65 73 20 69 66 20 74 68 65 20 73 70 65 63 69 66  es if the specif
117f0 69 65 64 20 74 65 78 74 75 61 6c 20 76 61 6c 75  ied textual valu
11800 65 20 61 70 70 65 61 72 73 20 74 6f 20 62 65 20  e appears to be 
11810 61 6e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65  an..    /// <see
11820 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e   cref="Int64" />
11830 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f   value...    ///
11840 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
11850 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
11860 3d 22 74 65 78 74 22 3e 0d 0a 20 20 20 20 2f 2f  ="text">..    //
11870 2f 20 54 68 65 20 74 65 78 74 75 61 6c 20 76 61  / The textual va
11880 6c 75 65 20 74 6f 20 69 6e 73 70 65 63 74 2e 0d  lue to inspect..
11890 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
118a0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  >..    /// <retu
118b0 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f  rns>..    /// No
118c0 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 74 65  n-zero if the te
118d0 78 74 20 6c 6f 6f 6b 73 20 6c 69 6b 65 20 61 6e  xt looks like an
118e0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 36   <see cref="Int6
118f0 34 22 20 2f 3e 20 76 61 6c 75 65 2c 0d 0a 20 20  4" /> value,..  
11900 20 20 2f 2f 2f 20 7a 65 72 6f 20 6f 74 68 65 72    /// zero other
11910 77 69 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  wise...    /// <
11920 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69  /returns>..    i
11930 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 62  nternal static b
11940 6f 6f 6c 20 4c 6f 6f 6b 73 4c 69 6b 65 49 6e 74  ool LooksLikeInt
11950 36 34 28 0d 0a 20 20 20 20 20 20 20 20 73 74 72  64(..        str
11960 69 6e 67 20 74 65 78 74 0d 0a 20 20 20 20 20 20  ing text..      
11970 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20    )..    {..    
11980 20 20 20 20 6c 6f 6e 67 20 6c 6f 6e 67 56 61 6c      long longVal
11990 75 65 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ue;....#if !PLAT
119a0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
119b0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69  EWORK..        i
119c0 66 20 28 21 6c 6f 6e 67 2e 54 72 79 50 61 72 73  f (!long.TryPars
119d0 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
119e0 20 20 20 20 74 65 78 74 2c 20 4e 75 6d 62 65 72      text, Number
119f0 53 74 79 6c 65 73 2e 49 6e 74 65 67 65 72 2c 20  Styles.Integer, 
11a00 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61  CultureInfo.Inva
11a10 72 69 61 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  riantCulture,.. 
11a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
11a30 75 74 20 6c 6f 6e 67 56 61 6c 75 65 29 29 0d 0a  ut longValue))..
11a40 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
11a50 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
11a60 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  lse;..        }.
11a70 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
11a80 74 72 79 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  try..        {..
11a90 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 6e 67              long
11aa0 56 61 6c 75 65 20 3d 20 6c 6f 6e 67 2e 50 61 72  Value = long.Par
11ab0 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se(..           
11ac0 20 20 20 20 20 74 65 78 74 2c 20 4e 75 6d 62 65       text, Numbe
11ad0 72 53 74 79 6c 65 73 2e 49 6e 74 65 67 65 72 2c  rStyles.Integer,
11ae0 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76   CultureInfo.Inv
11af0 61 72 69 61 6e 74 43 75 6c 74 75 72 65 29 3b 0d  ariantCulture);.
11b00 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
11b10 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
11b20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
11b30 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
11b40 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64  .        }..#end
11b50 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65  if....        re
11b60 74 75 72 6e 20 53 74 72 69 6e 67 2e 45 71 75 61  turn String.Equa
11b70 6c 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ls(..           
11b80 20 6c 6f 6e 67 56 61 6c 75 65 2e 54 6f 53 74 72   longValue.ToStr
11b90 69 6e 67 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e  ing(CultureInfo.
11ba0 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65  InvariantCulture
11bb0 29 2c 20 74 65 78 74 2c 0d 0a 20 20 20 20 20 20  ), text,..      
11bc0 20 20 20 20 20 20 53 74 72 69 6e 67 43 6f 6d 70        StringComp
11bd0 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 29 3b  arison.Ordinal);
11be0 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
11bf0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
11c00 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73    /// Determines
11c10 20 69 66 20 74 68 65 20 73 70 65 63 69 66 69 65   if the specifie
11c20 64 20 74 65 78 74 75 61 6c 20 76 61 6c 75 65 20  d textual value 
11c30 61 70 70 65 61 72 73 20 74 6f 20 62 65 20 61 0d  appears to be a.
11c40 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72  .    /// <see cr
11c50 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e 20 76  ef="Double" /> v
11c60 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  alue...    /// <
11c70 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
11c80 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
11c90 74 65 78 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  text">..    /// 
11ca0 54 68 65 20 74 65 78 74 75 61 6c 20 76 61 6c 75  The textual valu
11cb0 65 20 74 6f 20 69 6e 73 70 65 63 74 2e 0d 0a 20  e to inspect... 
11cc0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
11cd0 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
11ce0 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d  s>..    /// Non-
11cf0 7a 65 72 6f 20 69 66 20 74 68 65 20 74 65 78 74  zero if the text
11d00 20 6c 6f 6f 6b 73 20 6c 69 6b 65 20 61 20 3c 73   looks like a <s
11d10 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22  ee cref="Double"
11d20 20 2f 3e 20 76 61 6c 75 65 2c 0d 0a 20 20 20 20   /> value,..    
11d30 2f 2f 2f 20 7a 65 72 6f 20 6f 74 68 65 72 77 69  /// zero otherwi
11d40 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72  se...    /// </r
11d50 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74  eturns>..    int
11d60 65 72 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f  ernal static boo
11d70 6c 20 4c 6f 6f 6b 73 4c 69 6b 65 44 6f 75 62 6c  l LooksLikeDoubl
11d80 65 28 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69  e(..        stri
11d90 6e 67 20 74 65 78 74 0d 0a 20 20 20 20 20 20 20  ng text..       
11da0 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20   )..    {..     
11db0 20 20 20 64 6f 75 62 6c 65 20 64 6f 75 62 6c 65     double double
11dc0 56 61 6c 75 65 3b 0d 0a 0d 0a 23 69 66 20 21 50  Value;....#if !P
11dd0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
11de0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
11df0 20 20 69 66 20 28 21 64 6f 75 62 6c 65 2e 54 72    if (!double.Tr
11e00 79 50 61 72 73 65 28 0d 0a 20 20 20 20 20 20 20  yParse(..       
11e10 20 20 20 20 20 20 20 20 20 74 65 78 74 2c 20 4e           text, N
11e20 75 6d 62 65 72 53 74 79 6c 65 73 2e 46 6c 6f 61  umberStyles.Floa
11e30 74 20 7c 20 4e 75 6d 62 65 72 53 74 79 6c 65 73  t | NumberStyles
11e40 2e 41 6c 6c 6f 77 54 68 6f 75 73 61 6e 64 73 2c  .AllowThousands,
11e50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11e60 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e    CultureInfo.In
11e70 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 2c 20  variantCulture, 
11e80 6f 75 74 20 64 6f 75 62 6c 65 56 61 6c 75 65 29  out doubleValue)
11e90 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
11ea0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
11eb0 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
11ec0 20 7d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20   }..#else..     
11ed0 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
11ee0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 64  {..            d
11ef0 6f 75 62 6c 65 56 61 6c 75 65 20 3d 20 64 6f 75  oubleValue = dou
11f00 62 6c 65 2e 50 61 72 73 65 28 74 65 78 74 2c 20  ble.Parse(text, 
11f10 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61  CultureInfo.Inva
11f20 72 69 61 6e 74 43 75 6c 74 75 72 65 29 3b 0d 0a  riantCulture);..
11f30 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
11f40 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
11f50 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
11f60 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
11f70 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
11f80 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74  f....        ret
11f90 75 72 6e 20 53 74 72 69 6e 67 2e 45 71 75 61 6c  urn String.Equal
11fa0 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s(..            
11fb0 64 6f 75 62 6c 65 56 61 6c 75 65 2e 54 6f 53 74  doubleValue.ToSt
11fc0 72 69 6e 67 28 43 75 6c 74 75 72 65 49 6e 66 6f  ring(CultureInfo
11fd0 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72  .InvariantCultur
11fe0 65 29 2c 20 74 65 78 74 2c 0d 0a 20 20 20 20 20  e), text,..     
11ff0 20 20 20 20 20 20 20 53 74 72 69 6e 67 43 6f 6d         StringCom
12000 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 29  parison.Ordinal)
12010 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
12020 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
12030 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65     /// Determine
12040 73 20 69 66 20 74 68 65 20 73 70 65 63 69 66 69  s if the specifi
12050 65 64 20 74 65 78 74 75 61 6c 20 76 61 6c 75 65  ed textual value
12060 20 61 70 70 65 61 72 73 20 74 6f 20 62 65 20 61   appears to be a
12070 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63  ..    /// <see c
12080 72 65 66 3d 22 44 61 74 65 54 69 6d 65 22 20 2f  ref="DateTime" /
12090 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f  > value...    //
120a0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
120b0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
120c0 65 3d 22 63 6f 6e 76 65 72 74 22 3e 0d 0a 20 20  e="convert">..  
120d0 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
120e0 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 76 65  ref="SQLiteConve
120f0 72 74 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  rt" /> object in
12100 73 74 61 6e 63 65 20 63 6f 6e 66 69 67 75 72 65  stance configure
12110 64 20 77 69 74 68 0d 0a 20 20 20 20 2f 2f 2f 20  d with..    /// 
12120 74 68 65 20 63 68 6f 73 65 6e 20 3c 73 65 65 20  the chosen <see 
12130 63 72 65 66 3d 22 44 61 74 65 54 69 6d 65 22 20  cref="DateTime" 
12140 2f 3e 20 66 6f 72 6d 61 74 2e 0d 0a 20 20 20 20  /> format...    
12150 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
12160 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
12170 65 3d 22 74 65 78 74 22 3e 0d 0a 20 20 20 20 2f  e="text">..    /
12180 2f 2f 20 54 68 65 20 74 65 78 74 75 61 6c 20 76  // The textual v
12190 61 6c 75 65 20 74 6f 20 69 6e 73 70 65 63 74 2e  alue to inspect.
121a0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
121b0 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
121c0 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e  urns>..    /// N
121d0 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 74  on-zero if the t
121e0 65 78 74 20 6c 6f 6f 6b 73 20 6c 69 6b 65 20 61  ext looks like a
121f0 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74 65   <see cref="Date
12200 54 69 6d 65 22 20 2f 3e 20 69 6e 20 74 68 65 0d  Time" /> in the.
12210 0a 20 20 20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75  .    /// configu
12220 72 65 64 20 66 6f 72 6d 61 74 2c 20 7a 65 72 6f  red format, zero
12230 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a 20 20 20   otherwise...   
12240 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
12250 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
12260 61 74 69 63 20 62 6f 6f 6c 20 4c 6f 6f 6b 73 4c  atic bool LooksL
12270 69 6b 65 44 61 74 65 54 69 6d 65 28 0d 0a 20 20  ikeDateTime(..  
12280 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 76        SQLiteConv
12290 65 72 74 20 63 6f 6e 76 65 72 74 2c 0d 0a 20 20  ert convert,..  
122a0 20 20 20 20 20 20 73 74 72 69 6e 67 20 74 65 78        string tex
122b0 74 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20  t..        )..  
122c0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20    {..        if 
122d0 28 63 6f 6e 76 65 72 74 20 3d 3d 20 6e 75 6c 6c  (convert == null
122e0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  )..            r
122f0 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
12300 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
12310 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
12320 20 20 20 20 44 61 74 65 54 69 6d 65 20 64 61 74      DateTime dat
12330 65 54 69 6d 65 56 61 6c 75 65 20 3d 20 63 6f 6e  eTimeValue = con
12340 76 65 72 74 2e 54 6f 44 61 74 65 54 69 6d 65 28  vert.ToDateTime(
12350 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  text);....      
12360 20 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67        if (String
12370 2e 45 71 75 61 6c 73 28 0d 0a 20 20 20 20 20 20  .Equals(..      
12380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
12390 6e 76 65 72 74 2e 54 6f 53 74 72 69 6e 67 28 64  nvert.ToString(d
123a0 61 74 65 54 69 6d 65 56 61 6c 75 65 29 2c 0d 0a  ateTimeValue),..
123b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
123c0 20 20 20 20 74 65 78 74 2c 20 53 74 72 69 6e 67      text, String
123d0 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e  Comparison.Ordin
123e0 61 6c 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  al))..          
123f0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
12400 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
12410 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
12420 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
12430 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
12440 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
12450 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
12460 2e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ...        }....
12470 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
12480 61 6c 73 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  alse;..    }....
12490 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
124a0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 46 6f 72 20 61  >..    /// For a
124b0 20 67 69 76 65 6e 20 74 65 78 74 75 61 6c 20 64   given textual d
124c0 61 74 61 62 61 73 65 20 74 79 70 65 20 6e 61 6d  atabase type nam
124d0 65 2c 20 72 65 74 75 72 6e 20 74 68 65 20 22 63  e, return the "c
124e0 6c 6f 73 65 73 74 2d 6d 61 74 63 68 22 20 64 61  losest-match" da
124f0 74 61 62 61 73 65 20 74 79 70 65 2e 0d 0a 20 20  tabase type...  
12500 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
12510 64 20 69 73 20 63 61 6c 6c 65 64 20 64 75 72 69  d is called duri
12520 6e 67 20 71 75 65 72 79 20 72 65 73 75 6c 74 20  ng query result 
12530 70 72 6f 63 65 73 73 69 6e 67 3b 20 74 68 65 72  processing; ther
12540 65 66 6f 72 65 2c 20 69 74 73 20 70 65 72 66 6f  efore, its perfo
12550 72 6d 61 6e 63 65 0d 0a 20 20 20 20 2f 2f 2f 20  rmance..    /// 
12560 69 73 20 63 72 69 74 69 63 61 6c 2e 0d 0a 20 20  is critical...  
12570 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
12580 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
12590 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f   name="connectio
125a0 6e 22 3e 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f  n">The connectio
125b0 6e 20 63 6f 6e 74 65 78 74 20 66 6f 72 20 63 75  n context for cu
125c0 73 74 6f 6d 20 74 79 70 65 20 6d 61 70 70 69 6e  stom type mappin
125d0 67 73 2c 20 69 66 20 61 6e 79 2e 3c 2f 70 61 72  gs, if any.</par
125e0 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
125f0 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70 65 4e 61  ram name="typeNa
12600 6d 65 22 3e 54 68 65 20 74 65 78 74 75 61 6c 20  me">The textual 
12610 6e 61 6d 65 20 6f 66 20 74 68 65 20 64 61 74 61  name of the data
12620 62 61 73 65 20 74 79 70 65 20 74 6f 20 6d 61 74  base type to mat
12630 63 68 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  ch.</param>..   
12640 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
12650 3d 22 66 6c 61 67 73 22 3e 54 68 65 20 66 6c 61  ="flags">The fla
12660 67 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  gs associated wi
12670 74 68 20 74 68 65 20 70 61 72 65 6e 74 20 63 6f  th the parent co
12680 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e  nnection object.
12690 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
126a0 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20 2e  / <returns>The .
126b0 4e 45 54 20 44 42 54 79 70 65 20 74 68 65 20 74  NET DBType the t
126c0 65 78 74 20 65 76 61 6c 75 61 74 65 73 20 74 6f  ext evaluates to
126d0 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  .</returns>..   
126e0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
126f0 20 44 62 54 79 70 65 20 54 79 70 65 4e 61 6d 65   DbType TypeName
12700 54 6f 44 62 54 79 70 65 28 0d 0a 20 20 20 20 20  ToDbType(..     
12710 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74     SQLiteConnect
12720 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 0d  ion connection,.
12730 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20  .        string 
12740 74 79 70 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20  typeName,..     
12750 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74     SQLiteConnect
12760 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 0d 0a  ionFlags flags..
12770 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b          )..    {
12780 0d 0a 20 20 20 20 20 20 20 20 44 62 54 79 70 65  ..        DbType
12790 3f 20 64 65 66 61 75 6c 74 44 62 54 79 70 65 20  ? defaultDbType 
127a0 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  = null;....     
127b0 20 20 20 69 66 20 28 63 6f 6e 6e 65 63 74 69 6f     if (connectio
127c0 6e 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  n != null)..    
127d0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
127e0 20 20 20 66 6c 61 67 73 20 7c 3d 20 63 6f 6e 6e     flags |= conn
127f0 65 63 74 69 6f 6e 2e 46 6c 61 67 73 3b 0d 0a 0d  ection.Flags;...
12800 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
12810 28 28 66 6c 61 67 73 20 26 20 53 51 4c 69 74 65  ((flags & SQLite
12820 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e  ConnectionFlags.
12830 55 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 54 79 70  UseConnectionTyp
12840 65 73 29 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e  es) == SQLiteCon
12850 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 55 73 65  nectionFlags.Use
12860 43 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65 73 29  ConnectionTypes)
12870 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
12880 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12890 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
128a0 20 63 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65 4e   connectionTypeN
128b0 61 6d 65 73 20 3d 20 63 6f 6e 6e 65 63 74 69 6f  ames = connectio
128c0 6e 2e 5f 74 79 70 65 4e 61 6d 65 73 3b 0d 0a 0d  n._typeNames;...
128d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
128e0 20 69 66 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 54   if (connectionT
128f0 79 70 65 4e 61 6d 65 73 20 21 3d 20 6e 75 6c 6c  ypeNames != null
12900 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
12910 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
12920 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 79            if (ty
12930 70 65 4e 61 6d 65 20 21 3d 20 6e 75 6c 6c 29 0d  peName != null).
12940 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12950 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
12960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12970 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
12980 69 6e 67 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20  ing value;....  
12990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
129a0 20 20 20 20 20 20 69 66 20 28 63 6f 6e 6e 65 63        if (connec
129b0 74 69 6f 6e 54 79 70 65 4e 61 6d 65 73 2e 54 72  tionTypeNames.Tr
129c0 79 47 65 74 56 61 6c 75 65 28 74 79 70 65 4e 61  yGetValue(typeNa
129d0 6d 65 2c 20 6f 75 74 20 76 61 6c 75 65 29 29 0d  me, out value)).
129e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
129f0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
12a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12a10 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76          return v
12a20 61 6c 75 65 2e 64 61 74 61 54 79 70 65 3b 0d 0a  alue.dataType;..
12a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12a40 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
12a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12a60 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
12a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12a80 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
12a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12aa0 69 6e 74 20 69 6e 64 65 78 20 3d 20 74 79 70 65  int index = type
12ab0 4e 61 6d 65 2e 49 6e 64 65 78 4f 66 28 27 28 27  Name.IndexOf('('
12ac0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
12ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12ae0 20 20 69 66 20 28 28 69 6e 64 65 78 20 3e 20 30    if ((index > 0
12af0 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20  ) &&..          
12b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12b10 20 20 20 20 20 20 63 6f 6e 6e 65 63 74 69 6f 6e        connection
12b20 54 79 70 65 4e 61 6d 65 73 2e 54 72 79 47 65 74  TypeNames.TryGet
12b30 56 61 6c 75 65 28 74 79 70 65 4e 61 6d 65 2e 53  Value(typeName.S
12b40 75 62 73 74 72 69 6e 67 28 30 2c 20 69 6e 64 65  ubstring(0, inde
12b50 78 29 2e 54 72 69 6d 45 6e 64 28 29 2c 20 6f 75  x).TrimEnd(), ou
12b60 74 20 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20  t value))..     
12b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12b80 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
12b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12ba0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
12bb0 20 76 61 6c 75 65 2e 64 61 74 61 54 79 70 65 3b   value.dataType;
12bc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
12be0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12bf0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
12c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12c10 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
12c20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
12c30 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
12c40 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
12c50 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 55 73 65 20     // NOTE: Use 
12c60 74 68 65 20 64 65 66 61 75 6c 74 20 64 61 74 61  the default data
12c70 62 61 73 65 20 74 79 70 65 20 66 6f 72 20 74 68  base type for th
12c80 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20  e connection... 
12c90 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
12ca0 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75             defau
12cb0 6c 74 44 62 54 79 70 65 20 3d 20 63 6f 6e 6e 65  ltDbType = conne
12cc0 63 74 69 6f 6e 2e 44 65 66 61 75 6c 74 44 62 54  ction.DefaultDbT
12cd0 79 70 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ype;..        }.
12ce0 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 28  ...        if ((
12cf0 66 6c 61 67 73 20 26 20 53 51 4c 69 74 65 43 6f  flags & SQLiteCo
12d00 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f  nnectionFlags.No
12d10 47 6c 6f 62 61 6c 54 79 70 65 73 29 20 3d 3d 20  GlobalTypes) == 
12d20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
12d30 46 6c 61 67 73 2e 4e 6f 47 6c 6f 62 61 6c 54 79  Flags.NoGlobalTy
12d40 70 65 73 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  pes)..        {.
12d50 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
12d60 28 64 65 66 61 75 6c 74 44 62 54 79 70 65 20 21  (defaultDbType !
12d70 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
12d80 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
12d90 28 44 62 54 79 70 65 29 64 65 66 61 75 6c 74 44  (DbType)defaultD
12da0 62 54 79 70 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  bType;....      
12db0 20 20 20 20 20 20 64 65 66 61 75 6c 74 44 62 54        defaultDbT
12dc0 79 70 65 20 3d 20 47 65 74 44 65 66 61 75 6c 74  ype = GetDefault
12dd0 44 62 54 79 70 65 28 63 6f 6e 6e 65 63 74 69 6f  DbType(connectio
12de0 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f  n);....#if !NET_
12df0 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
12e00 41 43 45 5f 57 41 52 4e 49 4e 47 0d 0a 20 20 20  ACE_WARNING..   
12e10 20 20 20 20 20 20 20 20 20 44 65 66 61 75 6c 74           Default
12e20 44 62 54 79 70 65 57 61 72 6e 69 6e 67 28 74 79  DbTypeWarning(ty
12e30 70 65 4e 61 6d 65 2c 20 66 6c 61 67 73 2c 20 64  peName, flags, d
12e40 65 66 61 75 6c 74 44 62 54 79 70 65 29 3b 0d 0a  efaultDbType);..
12e50 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
12e60 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 44 62        return (Db
12e70 54 79 70 65 29 64 65 66 61 75 6c 74 44 62 54 79  Type)defaultDbTy
12e80 70 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  pe;..        }..
12e90 0d 0a 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28  ..        lock (
12ea0 5f 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  _syncRoot)..    
12eb0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
12ec0 20 20 20 69 66 20 28 5f 74 79 70 65 4e 61 6d 65     if (_typeName
12ed0 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s == null)..    
12ee0 20 20 20 20 20 20 20 20 20 20 20 20 5f 74 79 70              _typ
12ef0 65 4e 61 6d 65 73 20 3d 20 47 65 74 53 51 4c 69  eNames = GetSQLi
12f00 74 65 44 62 54 79 70 65 4d 61 70 28 29 3b 0d 0a  teDbTypeMap();..
12f10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
12f20 20 28 74 79 70 65 4e 61 6d 65 20 21 3d 20 6e 75   (typeName != nu
12f30 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
12f40 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
12f50 20 20 20 20 53 51 4c 69 74 65 44 62 54 79 70 65      SQLiteDbType
12f60 4d 61 70 70 69 6e 67 20 76 61 6c 75 65 3b 0d 0a  Mapping value;..
12f70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12f80 20 20 69 66 20 28 5f 74 79 70 65 4e 61 6d 65 73    if (_typeNames
12f90 2e 54 72 79 47 65 74 56 61 6c 75 65 28 74 79 70  .TryGetValue(typ
12fa0 65 4e 61 6d 65 2c 20 6f 75 74 20 76 61 6c 75 65  eName, out value
12fb0 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
12fc0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
12fd0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
12fe0 6e 20 76 61 6c 75 65 2e 64 61 74 61 54 79 70 65  n value.dataType
12ff0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
13000 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
13010 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
13020 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
13030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13040 20 20 20 69 6e 74 20 69 6e 64 65 78 20 3d 20 74     int index = t
13050 79 70 65 4e 61 6d 65 2e 49 6e 64 65 78 4f 66 28  ypeName.IndexOf(
13060 27 28 27 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  '(');....       
13070 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
13080 28 28 69 6e 64 65 78 20 3e 20 30 29 20 26 26 0d  ((index > 0) &&.
13090 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
130a0 20 20 20 20 20 20 20 20 20 5f 74 79 70 65 4e 61           _typeNa
130b0 6d 65 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28  mes.TryGetValue(
130c0 74 79 70 65 4e 61 6d 65 2e 53 75 62 73 74 72 69  typeName.Substri
130d0 6e 67 28 30 2c 20 69 6e 64 65 78 29 2e 54 72 69  ng(0, index).Tri
130e0 6d 45 6e 64 28 29 2c 20 6f 75 74 20 76 61 6c 75  mEnd(), out valu
130f0 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
13100 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
13110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13120 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65      return value
13130 2e 64 61 74 61 54 79 70 65 3b 0d 0a 20 20 20 20  .dataType;..    
13140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13150 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
13160 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
13170 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
13180 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 64 65  ..        if (de
13190 66 61 75 6c 74 44 62 54 79 70 65 20 21 3d 20 6e  faultDbType != n
131a0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
131b0 20 20 72 65 74 75 72 6e 20 28 44 62 54 79 70 65    return (DbType
131c0 29 64 65 66 61 75 6c 74 44 62 54 79 70 65 3b 0d  )defaultDbType;.
131d0 0a 0d 0a 20 20 20 20 20 20 20 20 64 65 66 61 75  ...        defau
131e0 6c 74 44 62 54 79 70 65 20 3d 20 47 65 74 44 65  ltDbType = GetDe
131f0 66 61 75 6c 74 44 62 54 79 70 65 28 63 6f 6e 6e  faultDbType(conn
13200 65 63 74 69 6f 6e 29 3b 0d 0a 0d 0a 23 69 66 20  ection);....#if 
13210 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
13220 26 26 20 54 52 41 43 45 5f 57 41 52 4e 49 4e 47  && TRACE_WARNING
13230 0d 0a 20 20 20 20 20 20 20 20 44 65 66 61 75 6c  ..        Defaul
13240 74 44 62 54 79 70 65 57 61 72 6e 69 6e 67 28 74  tDbTypeWarning(t
13250 79 70 65 4e 61 6d 65 2c 20 66 6c 61 67 73 2c 20  ypeName, flags, 
13260 64 65 66 61 75 6c 74 44 62 54 79 70 65 29 3b 0d  defaultDbType);.
13270 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
13280 20 20 20 72 65 74 75 72 6e 20 28 44 62 54 79 70     return (DbTyp
13290 65 29 64 65 66 61 75 6c 74 44 62 54 79 70 65 3b  e)defaultDbType;
132a0 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
132b0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 70  dregion....    p
132c0 72 69 76 61 74 65 20 73 74 61 74 69 63 20 6f 62  rivate static ob
132d0 6a 65 63 74 20 5f 73 79 6e 63 52 6f 6f 74 20 3d  ject _syncRoot =
132e0 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a   new object();..
132f0 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
13300 69 63 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ic SQLiteDbTypeM
13310 61 70 20 5f 74 79 70 65 4e 61 6d 65 73 20 3d 20  ap _typeNames = 
13320 6e 75 6c 6c 3b 0d 0a 20 20 7d 0d 0a 0d 0a 20 20  null;..  }....  
13330 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
13340 20 2f 2f 2f 20 53 51 4c 69 74 65 20 68 61 73 20   /// SQLite has 
13350 76 65 72 79 20 6c 69 6d 69 74 65 64 20 74 79 70  very limited typ
13360 65 73 2c 20 61 6e 64 20 69 73 20 69 6e 68 65 72  es, and is inher
13370 65 6e 74 6c 79 20 74 65 78 74 2d 62 61 73 65 64  ently text-based
13380 2e 20 20 54 68 65 20 66 69 72 73 74 20 35 20 74  .  The first 5 t
13390 79 70 65 73 20 62 65 6c 6f 77 20 72 65 70 72 65  ypes below repre
133a0 73 65 6e 74 20 74 68 65 20 73 75 6d 20 6f 66 20  sent the sum of 
133b0 61 6c 6c 20 74 79 70 65 73 20 53 51 4c 69 74 65  all types SQLite
133c0 0d 0a 20 20 2f 2f 2f 20 75 6e 64 65 72 73 74 61  ..  /// understa
133d0 6e 64 73 2e 20 20 54 68 65 20 44 61 74 65 54 69  nds.  The DateTi
133e0 6d 65 20 65 78 74 65 6e 73 69 6f 6e 20 74 6f 20  me extension to 
133f0 74 68 65 20 73 70 65 63 20 69 73 20 66 6f 72 20  the spec is for 
13400 69 6e 74 65 72 6e 61 6c 20 75 73 65 20 6f 6e 6c  internal use onl
13410 79 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  y...  /// </summ
13420 61 72 79 3e 0d 0a 20 20 70 75 62 6c 69 63 20 65  ary>..  public e
13430 6e 75 6d 20 54 79 70 65 41 66 66 69 6e 69 74 79  num TypeAffinity
13440 0d 0a 20 20 7b 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ..  {..    /// <
13450 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
13460 2f 20 4e 6f 74 20 75 73 65 64 0d 0a 20 20 20 20  / Not used..    
13470 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
13480 20 20 20 20 55 6e 69 6e 69 74 69 61 6c 69 7a 65      Uninitialize
13490 64 20 3d 20 30 2c 0d 0a 20 20 20 20 2f 2f 2f 20  d = 0,..    /// 
134a0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
134b0 2f 2f 20 41 6c 6c 20 69 6e 74 65 67 65 72 73 20  // All integers 
134c0 69 6e 20 53 51 4c 69 74 65 20 64 65 66 61 75 6c  in SQLite defaul
134d0 74 20 74 6f 20 49 6e 74 36 34 0d 0a 20 20 20 20  t to Int64..    
134e0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
134f0 20 20 20 20 49 6e 74 36 34 20 3d 20 31 2c 0d 0a      Int64 = 1,..
13500 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
13510 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 6c 6c 20 66  >..    /// All f
13520 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 6e 75  loating point nu
13530 6d 62 65 72 73 20 69 6e 20 53 51 4c 69 74 65 20  mbers in SQLite 
13540 64 65 66 61 75 6c 74 20 74 6f 20 64 6f 75 62 6c  default to doubl
13550 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  e..    /// </sum
13560 6d 61 72 79 3e 0d 0a 20 20 20 20 44 6f 75 62 6c  mary>..    Doubl
13570 65 20 3d 20 32 2c 0d 0a 20 20 20 20 2f 2f 2f 20  e = 2,..    /// 
13580 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
13590 2f 2f 20 54 68 65 20 64 65 66 61 75 6c 74 20 64  // The default d
135a0 61 74 61 20 74 79 70 65 20 6f 66 20 53 51 4c 69  ata type of SQLi
135b0 74 65 20 69 73 20 74 65 78 74 0d 0a 20 20 20 20  te is text..    
135c0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
135d0 20 20 20 20 54 65 78 74 20 3d 20 33 2c 0d 0a 20      Text = 3,.. 
135e0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
135f0 0d 0a 20 20 20 20 2f 2f 2f 20 54 79 70 69 63 61  ..    /// Typica
13600 6c 6c 79 20 62 6c 6f 62 20 74 79 70 65 73 20 61  lly blob types a
13610 72 65 20 6f 6e 6c 79 20 73 65 65 6e 20 77 68 65  re only seen whe
13620 6e 20 72 65 74 75 72 6e 65 64 20 66 72 6f 6d 20  n returned from 
13630 61 20 66 75 6e 63 74 69 6f 6e 0d 0a 20 20 20 20  a function..    
13640 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
13650 20 20 20 20 42 6c 6f 62 20 3d 20 34 2c 0d 0a 20      Blob = 4,.. 
13660 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
13670 0d 0a 20 20 20 20 2f 2f 2f 20 4e 75 6c 6c 20 74  ..    /// Null t
13680 79 70 65 73 20 63 61 6e 20 62 65 20 72 65 74 75  ypes can be retu
13690 72 6e 65 64 20 66 72 6f 6d 20 66 75 6e 63 74 69  rned from functi
136a0 6f 6e 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ons..    /// </s
136b0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 4e 75 6c  ummary>..    Nul
136c0 6c 20 3d 20 35 2c 0d 0a 20 20 20 20 2f 2f 2f 20  l = 5,..    /// 
136d0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
136e0 2f 2f 20 55 73 65 64 20 69 6e 74 65 72 6e 61 6c  // Used internal
136f0 6c 79 20 62 79 20 74 68 69 73 20 70 72 6f 76 69  ly by this provi
13700 64 65 72 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  der..    /// </s
13710 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 44 61 74  ummary>..    Dat
13720 65 54 69 6d 65 20 3d 20 31 30 2c 0d 0a 20 20 20  eTime = 10,..   
13730 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
13740 20 20 20 20 2f 2f 2f 20 55 73 65 64 20 69 6e 74      /// Used int
13750 65 72 6e 61 6c 6c 79 20 62 79 20 74 68 69 73 20  ernally by this 
13760 70 72 6f 76 69 64 65 72 0d 0a 20 20 20 20 2f 2f  provider..    //
13770 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
13780 20 20 4e 6f 6e 65 20 3d 20 31 31 2c 0d 0a 20 20    None = 11,..  
13790 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d  }....  /// <summ
137a0 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65 73  ary>..  /// Thes
137b0 65 20 61 72 65 20 74 68 65 20 65 76 65 6e 74 20  e are the event 
137c0 74 79 70 65 73 20 61 73 73 6f 63 69 61 74 65 64  types associated
137d0 20 77 69 74 68 20 74 68 65 0d 0a 20 20 2f 2f 2f   with the..  ///
137e0 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
137f0 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 45 76 65 6e  teConnectionEven
13800 74 48 61 6e 64 6c 65 72 22 20 2f 3e 0d 0a 20 20  tHandler" />..  
13810 2f 2f 2f 20 64 65 6c 65 67 61 74 65 20 28 61 6e  /// delegate (an
13820 64 20 69 74 73 20 63 6f 72 72 65 73 70 6f 6e 64  d its correspond
13830 69 6e 67 20 65 76 65 6e 74 29 20 61 6e 64 20 74  ing event) and t
13840 68 65 0d 0a 20 20 2f 2f 2f 20 3c 73 65 65 20 63  he..  /// <see c
13850 72 65 66 3d 22 43 6f 6e 6e 65 63 74 69 6f 6e 45  ref="ConnectionE
13860 76 65 6e 74 41 72 67 73 22 20 2f 3e 20 63 6c 61  ventArgs" /> cla
13870 73 73 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ss...  /// </sum
13880 6d 61 72 79 3e 0d 0a 20 20 70 75 62 6c 69 63 20  mary>..  public 
13890 65 6e 75 6d 20 53 51 4c 69 74 65 43 6f 6e 6e 65  enum SQLiteConne
138a0 63 74 69 6f 6e 45 76 65 6e 74 54 79 70 65 0d 0a  ctionEventType..
138b0 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c    {..      /// <
138c0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
138d0 2f 2f 2f 20 4e 6f 74 20 75 73 65 64 2e 0d 0a 20  /// Not used... 
138e0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
138f0 72 79 3e 0d 0a 20 20 20 20 20 20 49 6e 76 61 6c  ry>..      Inval
13900 69 64 20 3d 20 2d 31 2c 0d 0a 0d 0a 20 20 20 20  id = -1,....    
13910 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
13920 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 74 20 75  .      /// Not u
13930 73 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  sed...      /// 
13940 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
13950 20 20 55 6e 6b 6e 6f 77 6e 20 3d 20 30 2c 0d 0a    Unknown = 0,..
13960 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
13970 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
13980 20 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20   The connection 
13990 69 73 20 62 65 69 6e 67 20 6f 70 65 6e 65 64 2e  is being opened.
139a0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
139b0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4f 70  mmary>..      Op
139c0 65 6e 69 6e 67 20 3d 20 31 2c 0d 0a 0d 0a 20 20  ening = 1,....  
139d0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
139e0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
139f0 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 72 69   connection stri
13a00 6e 67 20 68 61 73 20 62 65 65 6e 20 70 61 72 73  ng has been pars
13a10 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
13a20 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
13a30 20 43 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e   ConnectionStrin
13a40 67 20 3d 20 32 2c 0d 0a 0d 0a 20 20 20 20 20 20  g = 2,....      
13a50 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
13a60 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e       /// The con
13a70 6e 65 63 74 69 6f 6e 20 77 61 73 20 6f 70 65 6e  nection was open
13a80 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
13a90 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
13aa0 20 4f 70 65 6e 65 64 20 3d 20 33 2c 0d 0a 0d 0a   Opened = 3,....
13ab0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
13ac0 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
13ad0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 43 68  he <see cref="Ch
13ae0 61 6e 67 65 44 61 74 61 62 61 73 65 22 20 2f 3e  angeDatabase" />
13af0 20 6d 65 74 68 6f 64 20 77 61 73 20 63 61 6c 6c   method was call
13b00 65 64 20 6f 6e 20 74 68 65 0d 0a 20 20 20 20 20  ed on the..     
13b10 20 2f 2f 2f 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e   /// connection.
13b20 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
13b30 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 68  mmary>..      Ch
13b40 61 6e 67 65 44 61 74 61 62 61 73 65 20 3d 20 34  angeDatabase = 4
13b50 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
13b60 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
13b70 2f 2f 2f 20 41 20 74 72 61 6e 73 61 63 74 69 6f  /// A transactio
13b80 6e 20 77 61 73 20 63 72 65 61 74 65 64 20 75 73  n was created us
13b90 69 6e 67 20 74 68 65 20 63 6f 6e 6e 65 63 74 69  ing the connecti
13ba0 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  on...      /// <
13bb0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
13bc0 20 4e 65 77 54 72 61 6e 73 61 63 74 69 6f 6e 20   NewTransaction 
13bd0 3d 20 35 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  = 5,....      //
13be0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
13bf0 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65     /// The conne
13c00 63 74 69 6f 6e 20 77 61 73 20 65 6e 6c 69 73 74  ction was enlist
13c10 65 64 20 69 6e 74 6f 20 61 20 74 72 61 6e 73 61  ed into a transa
13c20 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f  ction...      //
13c30 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
13c40 20 20 20 20 45 6e 6c 69 73 74 54 72 61 6e 73 61      EnlistTransa
13c50 63 74 69 6f 6e 20 3d 20 36 2c 0d 0a 0d 0a 20 20  ction = 6,....  
13c60 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
13c70 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 63  >..      /// A c
13c80 6f 6d 6d 61 6e 64 20 77 61 73 20 63 72 65 61 74  ommand was creat
13c90 65 64 20 75 73 69 6e 67 20 74 68 65 20 63 6f 6e  ed using the con
13ca0 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  nection...      
13cb0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
13cc0 20 20 20 20 20 20 4e 65 77 43 6f 6d 6d 61 6e 64        NewCommand
13cd0 20 3d 20 37 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f   = 7,....      /
13ce0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
13cf0 20 20 20 20 2f 2f 2f 20 41 20 64 61 74 61 20 72      /// A data r
13d00 65 61 64 65 72 20 77 61 73 20 63 72 65 61 74 65  eader was create
13d10 64 20 75 73 69 6e 67 20 74 68 65 20 63 6f 6e 6e  d using the conn
13d20 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f  ection...      /
13d30 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
13d40 20 20 20 20 20 4e 65 77 44 61 74 61 52 65 61 64       NewDataRead
13d50 65 72 20 3d 20 38 2c 0d 0a 0d 0a 20 20 20 20 20  er = 8,....     
13d60 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
13d70 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20 69 6e 73        /// An ins
13d80 74 61 6e 63 65 20 6f 66 20 61 20 3c 73 65 65 20  tance of a <see 
13d90 63 72 65 66 3d 22 43 72 69 74 69 63 61 6c 48 61  cref="CriticalHa
13da0 6e 64 6c 65 22 20 2f 3e 20 64 65 72 69 76 65 64  ndle" /> derived
13db0 20 63 6c 61 73 73 20 68 61 73 0d 0a 20 20 20 20   class has..    
13dc0 20 20 2f 2f 2f 20 62 65 65 6e 20 63 72 65 61 74    /// been creat
13dd0 65 64 20 74 6f 20 77 72 61 70 20 61 20 6e 61 74  ed to wrap a nat
13de0 69 76 65 20 72 65 73 6f 75 72 63 65 2e 0d 0a 20  ive resource... 
13df0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
13e00 72 79 3e 0d 0a 20 20 20 20 20 20 4e 65 77 43 72  ry>..      NewCr
13e10 69 74 69 63 61 6c 48 61 6e 64 6c 65 20 3d 20 39  iticalHandle = 9
13e20 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
13e30 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
13e40 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65 63 74 69  /// The connecti
13e50 6f 6e 20 69 73 20 62 65 69 6e 67 20 63 6c 6f 73  on is being clos
13e60 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
13e70 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
13e80 20 43 6c 6f 73 69 6e 67 20 3d 20 31 30 2c 0d 0a   Closing = 10,..
13e90 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
13ea0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
13eb0 20 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20   The connection 
13ec0 77 61 73 20 63 6c 6f 73 65 64 2e 0d 0a 20 20 20  was closed...   
13ed0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
13ee0 3e 0d 0a 20 20 20 20 20 20 43 6c 6f 73 65 64 20  >..      Closed 
13ef0 3d 20 31 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  = 11,....      /
13f00 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
13f10 20 20 20 20 2f 2f 2f 20 41 20 63 6f 6d 6d 61 6e      /// A comman
13f20 64 20 69 73 20 62 65 69 6e 67 20 64 69 73 70 6f  d is being dispo
13f30 73 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  sed...      /// 
13f40 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
13f50 20 20 44 69 73 70 6f 73 69 6e 67 43 6f 6d 6d 61    DisposingComma
13f60 6e 64 20 3d 20 31 32 2c 0d 0a 0d 0a 20 20 20 20  nd = 12,....    
13f70 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
13f80 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 64 61 74  .      /// A dat
13f90 61 20 72 65 61 64 65 72 20 69 73 20 62 65 69 6e  a reader is bein
13fa0 67 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20  g disposed...   
13fb0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
13fc0 3e 0d 0a 20 20 20 20 20 20 44 69 73 70 6f 73 69  >..      Disposi
13fd0 6e 67 44 61 74 61 52 65 61 64 65 72 20 3d 20 31  ngDataReader = 1
13fe0 33 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  3,....      /// 
13ff0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
14000 20 2f 2f 2f 20 41 20 64 61 74 61 20 72 65 61 64   /// A data read
14010 65 72 20 69 73 20 62 65 69 6e 67 20 63 6c 6f 73  er is being clos
14020 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
14030 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
14040 20 43 6c 6f 73 69 6e 67 44 61 74 61 52 65 61 64   ClosingDataRead
14050 65 72 20 3d 20 31 34 2c 0d 0a 0d 0a 20 20 20 20  er = 14,....    
14060 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
14070 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 6e 61 74  .      /// A nat
14080 69 76 65 20 72 65 73 6f 75 72 63 65 20 77 61 73  ive resource was
14090 20 6f 70 65 6e 65 64 20 28 69 2e 65 2e 20 6f 62   opened (i.e. ob
140a0 74 61 69 6e 65 64 29 20 66 72 6f 6d 20 74 68 65  tained) from the
140b0 20 70 6f 6f 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f   pool...      //
140c0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
140d0 20 20 20 20 4f 70 65 6e 65 64 46 72 6f 6d 50 6f      OpenedFromPo
140e0 6f 6c 20 3d 20 31 35 2c 0d 0a 0d 0a 20 20 20 20  ol = 15,....    
140f0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
14100 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 6e 61 74  .      /// A nat
14110 69 76 65 20 72 65 73 6f 75 72 63 65 20 77 61 73  ive resource was
14120 20 63 6c 6f 73 65 64 20 28 69 2e 65 2e 20 72 65   closed (i.e. re
14130 6c 65 61 73 65 64 29 20 74 6f 20 74 68 65 20 70  leased) to the p
14140 6f 6f 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ool...      /// 
14150 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
14160 20 20 43 6c 6f 73 65 64 54 6f 50 6f 6f 6c 20 3d    ClosedToPool =
14170 20 31 36 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f   16..  }....  //
14180 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f  / <summary>..  /
14190 2f 2f 20 54 68 69 73 20 69 6d 70 6c 65 6d 65 6e  // This implemen
141a0 74 61 74 69 6f 6e 20 6f 66 20 53 51 4c 69 74 65  tation of SQLite
141b0 20 66 6f 72 20 41 44 4f 2e 4e 45 54 20 63 61 6e   for ADO.NET can
141c0 20 70 72 6f 63 65 73 73 20 64 61 74 65 2f 74 69   process date/ti
141d0 6d 65 20 66 69 65 6c 64 73 20 69 6e 0d 0a 20 20  me fields in..  
141e0 2f 2f 2f 20 64 61 74 61 62 61 73 65 73 20 69 6e  /// databases in
141f0 20 6f 6e 65 20 6f 66 20 73 69 78 20 66 6f 72 6d   one of six form
14200 61 74 73 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75  ats...  /// </su
14210 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 3c 72  mmary>..  /// <r
14220 65 6d 61 72 6b 73 3e 0d 0a 20 20 2f 2f 2f 20 49  emarks>..  /// I
14230 53 4f 38 36 30 31 20 66 6f 72 6d 61 74 20 69 73  SO8601 format is
14240 20 6d 6f 72 65 20 63 6f 6d 70 61 74 69 62 6c 65   more compatible
14250 2c 20 72 65 61 64 61 62 6c 65 2c 20 66 75 6c 6c  , readable, full
14260 79 2d 70 72 6f 63 65 73 73 61 62 6c 65 2c 20 62  y-processable, b
14270 75 74 20 6c 65 73 73 0d 0a 20 20 2f 2f 2f 20 61  ut less..  /// a
14280 63 63 75 72 61 74 65 20 61 73 20 69 74 20 64 6f  ccurate as it do
14290 65 73 20 6e 6f 74 20 70 72 6f 76 69 64 65 20 74  es not provide t
142a0 69 6d 65 20 64 6f 77 6e 20 74 6f 20 66 72 61 63  ime down to frac
142b0 74 69 6f 6e 73 20 6f 66 20 61 20 73 65 63 6f 6e  tions of a secon
142c0 64 2e 0d 0a 20 20 2f 2f 2f 20 4a 75 6c 69 61 6e  d...  /// Julian
142d0 44 61 79 20 69 73 20 74 68 65 20 6e 75 6d 65 72  Day is the numer
142e0 69 63 20 66 6f 72 6d 61 74 20 74 68 65 20 53 51  ic format the SQ
142f0 4c 69 74 65 20 75 73 65 73 20 69 6e 74 65 72 6e  Lite uses intern
14300 61 6c 6c 79 20 61 6e 64 20 69 73 20 61 72 67 75  ally and is argu
14310 61 62 6c 79 0d 0a 20 20 2f 2f 2f 20 74 68 65 20  ably..  /// the 
14320 6d 6f 73 74 20 63 6f 6d 70 61 74 69 62 6c 65 20  most compatible 
14330 77 69 74 68 20 33 72 64 20 70 61 72 74 79 20 74  with 3rd party t
14340 6f 6f 6c 73 2e 20 20 49 74 20 69 73 20 6e 6f 74  ools.  It is not
14350 20 72 65 61 64 61 62 6c 65 20 61 73 20 74 65 78   readable as tex
14360 74 0d 0a 20 20 2f 2f 2f 20 77 69 74 68 6f 75 74  t..  /// without
14370 20 70 6f 73 74 2d 70 72 6f 63 65 73 73 69 6e 67   post-processing
14380 2e 20 20 54 69 63 6b 73 20 6c 65 73 73 20 63 6f  .  Ticks less co
14390 6d 70 61 74 69 62 6c 65 20 77 69 74 68 20 33 72  mpatible with 3r
143a0 64 20 70 61 72 74 79 20 74 6f 6f 6c 73 20 74 68  d party tools th
143b0 61 74 0d 0a 20 20 2f 2f 2f 20 71 75 65 72 79 20  at..  /// query 
143c0 74 68 65 20 64 61 74 61 62 61 73 65 2c 20 61 6e  the database, an
143d0 64 20 72 65 6e 64 65 72 73 20 74 68 65 20 44 61  d renders the Da
143e0 74 65 54 69 6d 65 20 66 69 65 6c 64 20 75 6e 72  teTime field unr
143f0 65 61 64 61 62 6c 65 20 61 73 20 74 65 78 74 0d  eadable as text.
14400 0a 20 20 2f 2f 2f 20 77 69 74 68 6f 75 74 20 70  .  /// without p
14410 6f 73 74 2d 70 72 6f 63 65 73 73 69 6e 67 2e 20  ost-processing. 
14420 20 55 6e 69 78 45 70 6f 63 68 20 69 73 20 6d 6f   UnixEpoch is mo
14430 72 65 20 63 6f 6d 70 61 74 69 62 6c 65 20 77 69  re compatible wi
14440 74 68 20 55 6e 69 78 20 73 79 73 74 65 6d 73 2e  th Unix systems.
14450 0d 0a 20 20 2f 2f 2f 20 49 6e 76 61 72 69 61 6e  ..  /// Invarian
14460 74 43 75 6c 74 75 72 65 20 61 6c 6c 6f 77 73 20  tCulture allows 
14470 74 68 65 20 63 6f 6e 66 69 67 75 72 65 64 20 66  the configured f
14480 6f 72 6d 61 74 20 66 6f 72 20 74 68 65 20 69 6e  ormat for the in
14490 76 61 72 69 61 6e 74 20 63 75 6c 74 75 72 65 0d  variant culture.
144a0 0a 20 20 2f 2f 2f 20 66 6f 72 6d 61 74 20 74 6f  .  /// format to
144b0 20 62 65 20 75 73 65 64 20 61 6e 64 20 69 73 20   be used and is 
144c0 68 75 6d 61 6e 20 72 65 61 64 61 62 6c 65 2e 20  human readable. 
144d0 20 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 20   CurrentCulture 
144e0 61 6c 6c 6f 77 73 20 74 68 65 0d 0a 20 20 2f 2f  allows the..  //
144f0 2f 20 63 6f 6e 66 69 67 75 72 65 64 20 66 6f 72  / configured for
14500 6d 61 74 20 66 6f 72 20 74 68 65 20 63 75 72 72  mat for the curr
14510 65 6e 74 20 63 75 6c 74 75 72 65 20 74 6f 20 62  ent culture to b
14520 65 20 75 73 65 64 20 61 6e 64 20 69 73 20 61 6c  e used and is al
14530 73 6f 20 68 75 6d 61 6e 0d 0a 20 20 2f 2f 2f 20  so human..  /// 
14540 72 65 61 64 61 62 6c 65 2e 0d 0a 20 20 2f 2f 2f  readable...  ///
14550 0d 0a 20 20 2f 2f 2f 20 54 68 65 20 70 72 65 66  ..  /// The pref
14560 65 72 72 65 64 20 6f 72 64 65 72 20 6f 66 20 63  erred order of c
14570 68 6f 6f 73 69 6e 67 20 61 20 44 61 74 65 54 69  hoosing a DateTi
14580 6d 65 20 66 6f 72 6d 61 74 20 69 73 20 4a 75 6c  me format is Jul
14590 69 61 6e 44 61 79 2c 20 49 53 4f 38 36 30 31 2c  ianDay, ISO8601,
145a0 0d 0a 20 20 2f 2f 2f 20 61 6e 64 20 74 68 65 6e  ..  /// and then
145b0 20 54 69 63 6b 73 2e 20 20 54 69 63 6b 73 20 69   Ticks.  Ticks i
145c0 73 20 6d 61 69 6e 6c 79 20 70 72 65 73 65 6e 74  s mainly present
145d0 20 66 6f 72 20 6c 65 67 61 63 79 20 63 6f 64 65   for legacy code
145e0 20 73 75 70 70 6f 72 74 2e 0d 0a 20 20 2f 2f 2f   support...  ///
145f0 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 70   </remarks>..  p
14600 75 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69 74  ublic enum SQLit
14610 65 44 61 74 65 46 6f 72 6d 61 74 73 0d 0a 20 20  eDateFormats..  
14620 7b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  {..    /// <summ
14630 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 55 73  ary>..    /// Us
14640 65 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 44  e the value of D
14650 61 74 65 54 69 6d 65 2e 54 69 63 6b 73 2e 20 20  ateTime.Ticks.  
14660 54 68 69 73 20 76 61 6c 75 65 20 69 73 20 6e 6f  This value is no
14670 74 20 72 65 63 6f 6d 6d 65 6e 64 65 64 20 61 6e  t recommended an
14680 64 20 69 73 20 6e 6f 74 20 77 65 6c 6c 20 73 75  d is not well su
14690 70 70 6f 72 74 65 64 20 77 69 74 68 20 4c 49 4e  pported with LIN
146a0 51 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  Q...    /// </su
146b0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 54 69 63 6b  mmary>..    Tick
146c0 73 20 3d 20 30 2c 0d 0a 20 20 20 20 2f 2f 2f 20  s = 0,..    /// 
146d0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
146e0 2f 2f 20 55 73 65 20 74 68 65 20 49 53 4f 2d 38  // Use the ISO-8
146f0 36 30 31 20 66 6f 72 6d 61 74 2e 20 20 55 73 65  601 format.  Use
14700 73 20 74 68 65 20 22 79 79 79 79 2d 4d 4d 2d 64  s the "yyyy-MM-d
14710 64 20 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46  d HH:mm:ss.FFFFF
14720 46 46 4b 22 20 66 6f 72 6d 61 74 20 66 6f 72 20  FFK" format for 
14730 55 54 43 20 44 61 74 65 54 69 6d 65 20 76 61 6c  UTC DateTime val
14740 75 65 73 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 2f  ues and..    ///
14750 20 22 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a   "yyyy-MM-dd HH:
14760 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 22 20 66  mm:ss.FFFFFFF" f
14770 6f 72 6d 61 74 20 66 6f 72 20 6c 6f 63 61 6c 20  ormat for local 
14780 44 61 74 65 54 69 6d 65 20 76 61 6c 75 65 73 29  DateTime values)
14790 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
147a0 6d 61 72 79 3e 0d 0a 20 20 20 20 49 53 4f 38 36  mary>..    ISO86
147b0 30 31 20 3d 20 31 2c 0d 0a 20 20 20 20 2f 2f 2f  01 = 1,..    ///
147c0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
147d0 2f 2f 2f 20 54 68 65 20 69 6e 74 65 72 76 61 6c  /// The interval
147e0 20 6f 66 20 74 69 6d 65 20 69 6e 20 64 61 79 73   of time in days
147f0 20 61 6e 64 20 66 72 61 63 74 69 6f 6e 73 20 6f   and fractions o
14800 66 20 61 20 64 61 79 20 73 69 6e 63 65 20 4a 61  f a day since Ja
14810 6e 75 61 72 79 20 31 2c 20 34 37 31 33 20 42 43  nuary 1, 4713 BC
14820 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
14830 6d 61 72 79 3e 0d 0a 20 20 20 20 4a 75 6c 69 61  mary>..    Julia
14840 6e 44 61 79 20 3d 20 32 2c 0d 0a 20 20 20 20 2f  nDay = 2,..    /
14850 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
14860 20 20 2f 2f 2f 20 54 68 65 20 77 68 6f 6c 65 20    /// The whole 
14870 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 6f 6e 64  number of second
14880 73 20 73 69 6e 63 65 20 74 68 65 20 55 6e 69 78  s since the Unix
14890 20 65 70 6f 63 68 20 28 4a 61 6e 75 61 72 79 20   epoch (January 
148a0 31 2c 20 31 39 37 30 29 2e 0d 0a 20 20 20 20 2f  1, 1970)...    /
148b0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
148c0 20 20 20 55 6e 69 78 45 70 6f 63 68 20 3d 20 33     UnixEpoch = 3
148d0 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ,..    /// <summ
148e0 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 6e  ary>..    /// An
148f0 79 20 63 75 6c 74 75 72 65 2d 69 6e 64 65 70 65  y culture-indepe
14900 6e 64 65 6e 74 20 73 74 72 69 6e 67 20 76 61 6c  ndent string val
14910 75 65 20 74 68 61 74 20 74 68 65 20 2e 4e 45 54  ue that the .NET
14920 20 46 72 61 6d 65 77 6f 72 6b 20 63 61 6e 20 69   Framework can i
14930 6e 74 65 72 70 72 65 74 20 61 73 20 61 20 76 61  nterpret as a va
14940 6c 69 64 20 44 61 74 65 54 69 6d 65 2e 0d 0a 20  lid DateTime... 
14950 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
14960 3e 0d 0a 20 20 20 20 49 6e 76 61 72 69 61 6e 74  >..    Invariant
14970 43 75 6c 74 75 72 65 20 3d 20 34 2c 0d 0a 20 20  Culture = 4,..  
14980 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
14990 0a 20 20 20 20 2f 2f 2f 20 41 6e 79 20 73 74 72  .    /// Any str
149a0 69 6e 67 20 76 61 6c 75 65 20 74 68 61 74 20 74  ing value that t
149b0 68 65 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72  he .NET Framewor
149c0 6b 20 63 61 6e 20 69 6e 74 65 72 70 72 65 74 20  k can interpret 
149d0 61 73 20 61 20 76 61 6c 69 64 20 44 61 74 65 54  as a valid DateT
149e0 69 6d 65 20 75 73 69 6e 67 20 74 68 65 20 63 75  ime using the cu
149f0 72 72 65 6e 74 20 63 75 6c 74 75 72 65 2e 0d 0a  rrent culture...
14a00 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
14a10 79 3e 0d 0a 20 20 20 20 43 75 72 72 65 6e 74 43  y>..    CurrentC
14a20 75 6c 74 75 72 65 20 3d 20 35 2c 0d 0a 20 20 20  ulture = 5,..   
14a30 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
14a40 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 65 66 61      /// The defa
14a50 75 6c 74 20 66 6f 72 6d 61 74 20 66 6f 72 20 74  ult format for t
14a60 68 69 73 20 70 72 6f 76 69 64 65 72 2e 0d 0a 20  his provider... 
14a70 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
14a80 3e 0d 0a 20 20 20 20 44 65 66 61 75 6c 74 20 3d  >..    Default =
14a90 20 49 53 4f 38 36 30 31 0d 0a 20 20 7d 0d 0a 0d   ISO8601..  }...
14aa0 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e  .  /// <summary>
14ab0 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20 65 6e 75  ..  /// This enu
14ac0 6d 20 64 65 74 65 72 6d 69 6e 65 73 20 68 6f 77  m determines how
14ad0 20 53 51 4c 69 74 65 20 74 72 65 61 74 73 20 69   SQLite treats i
14ae0 74 73 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 2e  ts journal file.
14af0 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72  ..  /// </summar
14b00 79 3e 0d 0a 20 20 2f 2f 2f 20 3c 72 65 6d 61 72  y>..  /// <remar
14b10 6b 73 3e 0d 0a 20 20 2f 2f 2f 20 42 79 20 64 65  ks>..  /// By de
14b20 66 61 75 6c 74 20 53 51 4c 69 74 65 20 77 69 6c  fault SQLite wil
14b30 6c 20 63 72 65 61 74 65 20 61 6e 64 20 64 65 6c  l create and del
14b40 65 74 65 20 74 68 65 20 6a 6f 75 72 6e 61 6c 20  ete the journal 
14b50 66 69 6c 65 20 77 68 65 6e 20 6e 65 65 64 65 64  file when needed
14b60 20 64 75 72 69 6e 67 20 61 20 74 72 61 6e 73 61   during a transa
14b70 63 74 69 6f 6e 2e 0d 0a 20 20 2f 2f 2f 20 48 6f  ction...  /// Ho
14b80 77 65 76 65 72 2c 20 66 6f 72 20 73 6f 6d 65 20  wever, for some 
14b90 63 6f 6d 70 75 74 65 72 73 20 72 75 6e 6e 69 6e  computers runnin
14ba0 67 20 63 65 72 74 61 69 6e 20 66 69 6c 65 73 79  g certain filesy
14bb0 73 74 65 6d 20 6d 6f 6e 69 74 6f 72 69 6e 67 20  stem monitoring 
14bc0 74 6f 6f 6c 73 2c 20 74 68 65 20 72 61 70 69 64  tools, the rapid
14bd0 0d 0a 20 20 2f 2f 2f 20 63 72 65 61 74 69 6f 6e  ..  /// creation
14be0 20 61 6e 64 20 64 65 6c 65 74 69 6f 6e 20 6f 66   and deletion of
14bf0 20 74 68 65 20 6a 6f 75 72 6e 61 6c 20 66 69 6c   the journal fil
14c00 65 20 63 61 6e 20 63 61 75 73 65 20 74 68 6f 73  e can cause thos
14c10 65 20 70 72 6f 67 72 61 6d 73 20 74 6f 20 66 61  e programs to fa
14c20 69 6c 2c 20 6f 72 20 74 6f 20 69 6e 74 65 72 66  il, or to interf
14c30 65 72 65 20 77 69 74 68 20 53 51 4c 69 74 65 2e  ere with SQLite.
14c40 0d 0a 20 20 2f 2f 2f 0d 0a 20 20 2f 2f 2f 20 49  ..  ///..  /// I
14c50 66 20 61 20 70 72 6f 67 72 61 6d 20 6f 72 20 76  f a program or v
14c60 69 72 75 73 20 73 63 61 6e 6e 65 72 20 69 73 20  irus scanner is 
14c70 69 6e 74 65 72 66 65 72 69 6e 67 20 77 69 74 68  interfering with
14c80 20 53 51 4c 69 74 65 27 73 20 6a 6f 75 72 6e 61   SQLite's journa
14c90 6c 20 66 69 6c 65 2c 20 79 6f 75 20 6d 61 79 20  l file, you may 
14ca0 72 65 63 65 69 76 65 20 65 72 72 6f 72 73 20 6c  receive errors l
14cb0 69 6b 65 20 22 75 6e 61 62 6c 65 20 74 6f 20 6f  ike "unable to o
14cc0 70 65 6e 20 64 61 74 61 62 61 73 65 20 66 69 6c  pen database fil
14cd0 65 22 0d 0a 20 20 2f 2f 2f 20 77 68 65 6e 20 73  e"..  /// when s
14ce0 74 61 72 74 69 6e 67 20 61 20 74 72 61 6e 73 61  tarting a transa
14cf0 63 74 69 6f 6e 2e 20 20 49 66 20 74 68 69 73 20  ction.  If this 
14d00 69 73 20 68 61 70 70 65 6e 69 6e 67 2c 20 79 6f  is happening, yo
14d10 75 20 6d 61 79 20 77 61 6e 74 20 74 6f 20 63 68  u may want to ch
14d20 61 6e 67 65 20 74 68 65 20 64 65 66 61 75 6c 74  ange the default
14d30 20 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65 20 74 6f   journal mode to
14d40 20 50 65 72 73 69 73 74 2e 0d 0a 20 20 2f 2f 2f   Persist...  ///
14d50 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 70   </remarks>..  p
14d60 75 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69 74  ublic enum SQLit
14d70 65 4a 6f 75 72 6e 61 6c 4d 6f 64 65 45 6e 75 6d  eJournalModeEnum
14d80 0d 0a 20 20 7b 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ..  {..    /// <
14d90 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
14da0 2f 20 54 68 65 20 64 65 66 61 75 6c 74 20 6d 6f  / The default mo
14db0 64 65 2c 20 74 68 69 73 20 63 61 75 73 65 73 20  de, this causes 
14dc0 53 51 4c 69 74 65 20 74 6f 20 75 73 65 20 74 68  SQLite to use th
14dd0 65 20 65 78 69 73 74 69 6e 67 20 6a 6f 75 72 6e  e existing journ
14de0 61 6c 69 6e 67 20 6d 6f 64 65 20 66 6f 72 20 74  aling mode for t
14df0 68 65 20 64 61 74 61 62 61 73 65 2e 0d 0a 20 20  he database...  
14e00 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
14e10 0d 0a 20 20 20 20 44 65 66 61 75 6c 74 20 3d 20  ..    Default = 
14e20 2d 31 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  -1,..    /// <su
14e30 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
14e40 53 51 4c 69 74 65 20 77 69 6c 6c 20 63 72 65 61  SQLite will crea
14e50 74 65 20 61 6e 64 20 64 65 73 74 72 6f 79 20 74  te and destroy t
14e60 68 65 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20  he journal file 
14e70 61 73 2d 6e 65 65 64 65 64 2e 0d 0a 20 20 20 20  as-needed...    
14e80 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
14e90 20 20 20 20 44 65 6c 65 74 65 20 3d 20 30 2c 0d      Delete = 0,.
14ea0 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
14eb0 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 57 68 65 6e  y>..    /// When
14ec0 20 74 68 69 73 20 69 73 20 73 65 74 2c 20 53 51   this is set, SQ
14ed0 4c 69 74 65 20 77 69 6c 6c 20 6b 65 65 70 20 74  Lite will keep t
14ee0 68 65 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20  he journal file 
14ef0 65 76 65 6e 20 61 66 74 65 72 20 61 20 74 72 61  even after a tra
14f00 6e 73 61 63 74 69 6f 6e 20 68 61 73 20 63 6f 6d  nsaction has com
14f10 70 6c 65 74 65 64 2e 20 20 49 74 27 73 20 63 6f  pleted.  It's co
14f20 6e 74 65 6e 74 73 20 77 69 6c 6c 20 62 65 20 65  ntents will be e
14f30 72 61 73 65 64 2c 0d 0a 20 20 20 20 2f 2f 2f 20  rased,..    /// 
14f40 61 6e 64 20 74 68 65 20 6a 6f 75 72 6e 61 6c 20  and the journal 
14f50 72 65 2d 75 73 65 64 20 61 73 20 6f 66 74 65 6e  re-used as often
14f60 20 61 73 20 6e 65 65 64 65 64 2e 20 20 49 66 20   as needed.  If 
14f70 69 74 20 69 73 20 64 65 6c 65 74 65 64 2c 20 69  it is deleted, i
14f80 74 20 77 69 6c 6c 20 62 65 20 72 65 63 72 65 61  t will be recrea
14f90 74 65 64 20 74 68 65 20 6e 65 78 74 20 74 69 6d  ted the next tim
14fa0 65 20 69 74 20 69 73 20 6e 65 65 64 65 64 2e 0d  e it is needed..
14fb0 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
14fc0 72 79 3e 0d 0a 20 20 20 20 50 65 72 73 69 73 74  ry>..    Persist
14fd0 20 3d 20 31 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c   = 1,..    /// <
14fe0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
14ff0 2f 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 64 69  / This option di
15000 73 61 62 6c 65 73 20 74 68 65 20 72 6f 6c 6c 62  sables the rollb
15010 61 63 6b 20 6a 6f 75 72 6e 61 6c 20 65 6e 74 69  ack journal enti
15020 72 65 6c 79 2e 20 20 49 6e 74 65 72 72 75 70 74  rely.  Interrupt
15030 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 20  ed transactions 
15040 6f 72 20 61 20 70 72 6f 67 72 61 6d 20 63 72 61  or a program cra
15050 73 68 20 63 61 6e 20 63 61 75 73 65 20 64 61 74  sh can cause dat
15060 61 62 61 73 65 0d 0a 20 20 20 20 2f 2f 2f 20 63  abase..    /// c
15070 6f 72 72 75 70 74 69 6f 6e 20 69 6e 20 74 68 69  orruption in thi
15080 73 20 6d 6f 64 65 21 0d 0a 20 20 20 20 2f 2f 2f  s mode!..    ///
15090 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
150a0 20 4f 66 66 20 3d 20 32 2c 0d 0a 20 20 20 20 2f   Off = 2,..    /
150b0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
150c0 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 77 69 6c    /// SQLite wil
150d0 6c 20 74 72 75 6e 63 61 74 65 20 74 68 65 20 6a  l truncate the j
150e0 6f 75 72 6e 61 6c 20 66 69 6c 65 20 74 6f 20 7a  ournal file to z
150f0 65 72 6f 2d 6c 65 6e 67 74 68 20 69 6e 73 74 65  ero-length inste
15100 61 64 20 6f 66 20 64 65 6c 65 74 69 6e 67 20 69  ad of deleting i
15110 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  t...    /// </su
15120 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 54 72 75 6e  mmary>..    Trun
15130 63 61 74 65 20 3d 20 33 2c 0d 0a 20 20 20 20 2f  cate = 3,..    /
15140 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
15150 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 77 69 6c    /// SQLite wil
15160 6c 20 73 74 6f 72 65 20 74 68 65 20 6a 6f 75 72  l store the jour
15170 6e 61 6c 20 69 6e 20 76 6f 6c 61 74 69 6c 65 20  nal in volatile 
15180 52 41 4d 2e 20 20 54 68 69 73 20 73 61 76 65 73  RAM.  This saves
15190 20 64 69 73 6b 20 49 2f 4f 20 62 75 74 20 61 74   disk I/O but at
151a0 20 74 68 65 20 65 78 70 65 6e 73 65 20 6f 66 20   the expense of 
151b0 64 61 74 61 62 61 73 65 20 73 61 66 65 74 79 20  database safety 
151c0 61 6e 64 20 69 6e 74 65 67 72 69 74 79 2e 0d 0a  and integrity...
151d0 20 20 20 20 2f 2f 2f 20 49 66 20 74 68 65 20 61      /// If the a
151e0 70 70 6c 69 63 61 74 69 6f 6e 20 75 73 69 6e 67  pplication using
151f0 20 53 51 4c 69 74 65 20 63 72 61 73 68 65 73 20   SQLite crashes 
15200 69 6e 20 74 68 65 20 6d 69 64 64 6c 65 20 6f 66  in the middle of
15210 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 77   a transaction w
15220 68 65 6e 20 74 68 65 20 4d 45 4d 4f 52 59 20 6a  hen the MEMORY j
15230 6f 75 72 6e 61 6c 69 6e 67 20 6d 6f 64 65 20 69  ournaling mode i
15240 73 20 73 65 74 2c 20 74 68 65 6e 20 74 68 65 0d  s set, then the.
15250 0a 20 20 20 20 2f 2f 2f 20 64 61 74 61 62 61 73  .    /// databas
15260 65 20 66 69 6c 65 20 77 69 6c 6c 20 76 65 72 79  e file will very
15270 20 6c 69 6b 65 6c 79 20 67 6f 20 63 6f 72 72 75   likely go corru
15280 70 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  pt...    /// </s
15290 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 4d 65 6d  ummary>..    Mem
152a0 6f 72 79 20 3d 20 34 2c 0d 0a 20 20 20 20 2f 2f  ory = 4,..    //
152b0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
152c0 20 2f 2f 2f 20 53 51 4c 69 74 65 20 75 73 65 73   /// SQLite uses
152d0 20 61 20 77 72 69 74 65 2d 61 68 65 61 64 20 6c   a write-ahead l
152e0 6f 67 20 69 6e 73 74 65 61 64 20 6f 66 20 61 20  og instead of a 
152f0 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c  rollback journal
15300 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 74 72   to implement tr
15310 61 6e 73 61 63 74 69 6f 6e 73 2e 20 20 54 68 65  ansactions.  The
15320 20 57 41 4c 20 6a 6f 75 72 6e 61 6c 69 6e 67 20   WAL journaling 
15330 6d 6f 64 65 20 69 73 20 70 65 72 73 69 73 74 65  mode is persiste
15340 6e 74 3b 0d 0a 20 20 20 20 2f 2f 2f 20 61 66 74  nt;..    /// aft
15350 65 72 20 62 65 69 6e 67 20 73 65 74 20 69 74 20  er being set it 
15360 73 74 61 79 73 20 69 6e 20 65 66 66 65 63 74 20  stays in effect 
15370 61 63 72 6f 73 73 20 6d 75 6c 74 69 70 6c 65 20  across multiple 
15380 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
15390 69 6f 6e 73 20 61 6e 64 20 61 66 74 65 72 20 63  ions and after c
153a0 6c 6f 73 69 6e 67 20 61 6e 64 20 72 65 6f 70 65  losing and reope
153b0 6e 69 6e 67 20 74 68 65 20 64 61 74 61 62 61 73  ning the databas
153c0 65 2e 20 41 20 64 61 74 61 62 61 73 65 0d 0a 20  e. A database.. 
153d0 20 20 20 2f 2f 2f 20 69 6e 20 57 41 4c 20 6a 6f     /// in WAL jo
153e0 75 72 6e 61 6c 69 6e 67 20 6d 6f 64 65 20 63 61  urnaling mode ca
153f0 6e 20 6f 6e 6c 79 20 62 65 20 61 63 63 65 73 73  n only be access
15400 65 64 20 62 79 20 53 51 4c 69 74 65 20 76 65 72  ed by SQLite ver
15410 73 69 6f 6e 20 33 2e 37 2e 30 20 6f 72 20 6c 61  sion 3.7.0 or la
15420 74 65 72 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ter...    /// </
15430 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 57 61  summary>..    Wa
15440 6c 20 3d 20 35 0d 0a 20 20 7d 0d 0a 0d 0a 20 20  l = 5..  }....  
15450 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
15460 20 2f 2f 2f 20 50 6f 73 73 69 62 6c 65 20 76 61   /// Possible va
15470 6c 75 65 73 20 66 6f 72 20 74 68 65 20 22 73 79  lues for the "sy
15480 6e 63 68 72 6f 6e 6f 75 73 22 20 64 61 74 61 62  nchronous" datab
15490 61 73 65 20 73 65 74 74 69 6e 67 2e 20 20 54 68  ase setting.  Th
154a0 69 73 20 73 65 74 74 69 6e 67 20 64 65 74 65 72  is setting deter
154b0 6d 69 6e 65 73 0d 0a 20 20 2f 2f 2f 20 68 6f 77  mines..  /// how
154c0 20 6f 66 74 65 6e 20 74 68 65 20 64 61 74 61 62   often the datab
154d0 61 73 65 20 65 6e 67 69 6e 65 20 63 61 6c 6c 73  ase engine calls
154e0 20 74 68 65 20 78 53 79 6e 63 20 6d 65 74 68 6f   the xSync metho
154f0 64 20 6f 66 20 74 68 65 20 56 46 53 2e 0d 0a 20  d of the VFS... 
15500 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
15510 0a 20 20 69 6e 74 65 72 6e 61 6c 20 65 6e 75 6d  .  internal enum
15520 20 53 51 4c 69 74 65 53 79 6e 63 68 72 6f 6e 6f   SQLiteSynchrono
15530 75 73 45 6e 75 6d 0d 0a 20 20 7b 0d 0a 20 20 20  usEnum..  {..   
15540 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
15550 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 55 73 65 20  ..      /// Use 
15560 74 68 65 20 64 65 66 61 75 6c 74 20 22 73 79 6e  the default "syn
15570 63 68 72 6f 6e 6f 75 73 22 20 64 61 74 61 62 61  chronous" databa
15580 73 65 20 73 65 74 74 69 6e 67 2e 20 20 43 75 72  se setting.  Cur
15590 72 65 6e 74 6c 79 2c 20 74 68 69 73 20 73 68 6f  rently, this sho
155a0 75 6c 64 20 62 65 0d 0a 20 20 20 20 20 20 2f 2f  uld be..      //
155b0 2f 20 74 68 65 20 73 61 6d 65 20 61 73 20 75 73  / the same as us
155c0 69 6e 67 20 74 68 65 20 46 55 4c 4c 20 6d 6f 64  ing the FULL mod
155d0 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
155e0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
155f0 44 65 66 61 75 6c 74 20 3d 20 2d 31 2c 0d 0a 0d  Default = -1,...
15600 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
15610 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
15620 54 68 65 20 64 61 74 61 62 61 73 65 20 65 6e 67  The database eng
15630 69 6e 65 20 63 6f 6e 74 69 6e 75 65 73 20 77 69  ine continues wi
15640 74 68 6f 75 74 20 73 79 6e 63 69 6e 67 20 61 73  thout syncing as
15650 20 73 6f 6f 6e 20 61 73 20 69 74 20 68 61 73 20   soon as it has 
15660 68 61 6e 64 65 64 0d 0a 20 20 20 20 20 20 2f 2f  handed..      //
15670 2f 20 64 61 74 61 20 6f 66 66 20 74 6f 20 74 68  / data off to th
15680 65 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74  e operating syst
15690 65 6d 2e 20 20 49 66 20 74 68 65 20 61 70 70 6c  em.  If the appl
156a0 69 63 61 74 69 6f 6e 20 72 75 6e 6e 69 6e 67 20  ication running 
156b0 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 2f 2f  SQLite..      //
156c0 2f 20 63 72 61 73 68 65 73 2c 20 74 68 65 20 64  / crashes, the d
156d0 61 74 61 20 77 69 6c 6c 20 62 65 20 73 61 66 65  ata will be safe
156e0 2c 20 62 75 74 20 74 68 65 20 64 61 74 61 62 61  , but the databa
156f0 73 65 20 6d 69 67 68 74 20 62 65 63 6f 6d 65 20  se might become 
15700 63 6f 72 72 75 70 74 65 64 0d 0a 20 20 20 20 20  corrupted..     
15710 20 2f 2f 2f 20 69 66 20 74 68 65 20 6f 70 65 72   /// if the oper
15720 61 74 69 6e 67 20 73 79 73 74 65 6d 20 63 72 61  ating system cra
15730 73 68 65 73 20 6f 72 20 74 68 65 20 63 6f 6d 70  shes or the comp
15740 75 74 65 72 20 6c 6f 73 65 73 20 70 6f 77 65 72  uter loses power
15750 20 62 65 66 6f 72 65 20 74 68 61 74 0d 0a 20 20   before that..  
15760 20 20 20 20 2f 2f 2f 20 64 61 74 61 20 68 61 73      /// data has
15770 20 62 65 65 6e 20 77 72 69 74 74 65 6e 20 74 6f   been written to
15780 20 74 68 65 20 64 69 73 6b 20 73 75 72 66 61 63   the disk surfac
15790 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
157a0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
157b0 4f 66 66 20 3d 20 30 2c 0d 0a 0d 0a 20 20 20 20  Off = 0,....    
157c0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
157d0 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64  .      /// The d
157e0 61 74 61 62 61 73 65 20 65 6e 67 69 6e 65 20 77  atabase engine w
157f0 69 6c 6c 20 73 74 69 6c 6c 20 73 79 6e 63 20 61  ill still sync a
15800 74 20 74 68 65 20 6d 6f 73 74 20 63 72 69 74 69  t the most criti
15810 63 61 6c 20 6d 6f 6d 65 6e 74 73 2c 20 62 75 74  cal moments, but
15820 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6c 65 73 73  ..      /// less
15830 20 6f 66 74 65 6e 20 74 68 61 6e 20 69 6e 20 46   often than in F
15840 55 4c 4c 20 6d 6f 64 65 2e 20 20 54 68 65 72 65  ULL mode.  There
15850 20 69 73 20 61 20 76 65 72 79 20 73 6d 61 6c 6c   is a very small
15860 20 28 74 68 6f 75 67 68 20 6e 6f 6e 2d 7a 65 72   (though non-zer
15870 6f 29 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 68  o)..      /// ch
15880 61 6e 63 65 20 74 68 61 74 20 61 20 70 6f 77 65  ance that a powe
15890 72 20 66 61 69 6c 75 72 65 20 61 74 20 6a 75 73  r failure at jus
158a0 74 20 74 68 65 20 77 72 6f 6e 67 20 74 69 6d 65  t the wrong time
158b0 20 63 6f 75 6c 64 20 63 6f 72 72 75 70 74 20 74   could corrupt t
158c0 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 61  he..      /// da
158d0 74 61 62 61 73 65 20 69 6e 20 4e 4f 52 4d 41 4c  tabase in NORMAL
158e0 20 6d 6f 64 65 2e 0d 0a 20 20 20 20 20 20 2f 2f   mode...      //
158f0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
15900 20 20 20 20 4e 6f 72 6d 61 6c 20 3d 20 31 2c 0d      Normal = 1,.
15910 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
15920 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
15930 2f 20 54 68 65 20 64 61 74 61 62 61 73 65 20 65  / The database e
15940 6e 67 69 6e 65 20 77 69 6c 6c 20 75 73 65 20 74  ngine will use t
15950 68 65 20 78 53 79 6e 63 20 6d 65 74 68 6f 64 20  he xSync method 
15960 6f 66 20 74 68 65 20 56 46 53 20 74 6f 20 65 6e  of the VFS to en
15970 73 75 72 65 20 74 68 61 74 0d 0a 20 20 20 20 20  sure that..     
15980 20 2f 2f 2f 20 61 6c 6c 20 63 6f 6e 74 65 6e 74   /// all content
15990 20 69 73 20 73 61 66 65 6c 79 20 77 72 69 74 74   is safely writt
159a0 65 6e 20 74 6f 20 74 68 65 20 64 69 73 6b 20 73  en to the disk s
159b0 75 72 66 61 63 65 20 70 72 69 6f 72 20 74 6f 20  urface prior to 
159c0 63 6f 6e 74 69 6e 75 69 6e 67 2e 0d 0a 20 20 20  continuing...   
159d0 20 20 20 2f 2f 2f 20 54 68 69 73 20 65 6e 73 75     /// This ensu
159e0 72 65 73 20 74 68 61 74 20 61 6e 20 6f 70 65 72  res that an oper
159f0 61 74 69 6e 67 20 73 79 73 74 65 6d 20 63 72 61  ating system cra
15a00 73 68 20 6f 72 20 70 6f 77 65 72 20 66 61 69 6c  sh or power fail
15a10 75 72 65 20 77 69 6c 6c 20 6e 6f 74 0d 0a 20 20  ure will not..  
15a20 20 20 20 20 2f 2f 2f 20 63 6f 72 72 75 70 74 20      /// corrupt 
15a30 74 68 65 20 64 61 74 61 62 61 73 65 2e 20 20 46  the database.  F
15a40 55 4c 4c 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20  ULL synchronous 
15a50 69 73 20 76 65 72 79 20 73 61 66 65 2c 20 62 75  is very safe, bu
15a60 74 20 69 74 20 69 73 20 61 6c 73 6f 0d 0a 20 20  t it is also..  
15a70 20 20 20 20 2f 2f 2f 20 73 6c 6f 77 65 72 2e 0d      /// slower..
15a80 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
15a90 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 46 75 6c  mary>..      Ful
15aa0 6c 20 3d 20 32 0d 0a 20 20 7d 0d 0a 0d 0a 20 20  l = 2..  }....  
15ab0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
15ac0 20 2f 2f 2f 20 54 68 65 20 72 65 71 75 65 73 74   /// The request
15ad0 65 64 20 63 6f 6d 6d 61 6e 64 20 65 78 65 63 75  ed command execu
15ae0 74 69 6f 6e 20 74 79 70 65 2e 20 20 54 68 69 73  tion type.  This
15af0 20 63 6f 6e 74 72 6f 6c 73 20 77 68 69 63 68 20   controls which 
15b00 6d 65 74 68 6f 64 20 6f 66 20 74 68 65 0d 0a 20  method of the.. 
15b10 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
15b20 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 22 20 2f  SQLiteCommand" /
15b30 3e 20 6f 62 6a 65 63 74 20 77 69 6c 6c 20 62 65  > object will be
15b40 20 63 61 6c 6c 65 64 2e 0d 0a 20 20 2f 2f 2f 20   called...  /// 
15b50 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 70 75  </summary>..  pu
15b60 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69 74 65  blic enum SQLite
15b70 45 78 65 63 75 74 65 54 79 70 65 0d 0a 20 20 7b  ExecuteType..  {
15b80 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
15b90 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
15ba0 20 44 6f 20 6e 6f 74 68 69 6e 67 2e 20 20 4e 6f   Do nothing.  No
15bb0 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 62 65 20   method will be 
15bc0 63 61 6c 6c 65 64 2e 0d 0a 20 20 20 20 20 20 2f  called...      /
15bd0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
15be0 20 20 20 20 20 4e 6f 6e 65 20 3d 20 30 2c 0d 0a       None = 0,..
15bf0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
15c00 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
15c10 20 54 68 65 20 63 6f 6d 6d 61 6e 64 20 69 73 20   The command is 
15c20 6e 6f 74 20 65 78 70 65 63 74 65 64 20 74 6f 20  not expected to 
15c30 72 65 74 75 72 6e 20 61 20 72 65 73 75 6c 74 20  return a result 
15c40 2d 4f 52 2d 20 74 68 65 20 72 65 73 75 6c 74 20  -OR- the result 
15c50 69 73 20 6e 6f 74 0d 0a 20 20 20 20 20 20 2f 2f  is not..      //
15c60 2f 20 6e 65 65 64 65 64 2e 20 20 54 68 65 20 3c  / needed.  The <
15c70 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
15c80 43 6f 6d 6d 61 6e 64 2e 45 78 65 63 75 74 65 4e  Command.ExecuteN
15c90 6f 6e 51 75 65 72 79 28 29 22 20 2f 3e 20 6f 72  onQuery()" /> or
15ca0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65  ..      /// <see
15cb0 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6d   cref="SQLiteCom
15cc0 6d 61 6e 64 2e 45 78 65 63 75 74 65 4e 6f 6e 51  mand.ExecuteNonQ
15cd0 75 65 72 79 28 43 6f 6d 6d 61 6e 64 42 65 68 61  uery(CommandBeha
15ce0 76 69 6f 72 29 22 20 2f 3e 20 20 6d 65 74 68 6f  vior)" />  metho
15cf0 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77 69 6c  d..      /// wil
15d00 6c 20 62 65 20 63 61 6c 6c 65 64 2e 0d 0a 20 20  l be called...  
15d10 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
15d20 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 6e 51 75 65  y>..      NonQue
15d30 72 79 20 3d 20 31 2c 0d 0a 0d 0a 20 20 20 20 20  ry = 1,....     
15d40 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
15d50 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f        /// The co
15d60 6d 6d 61 6e 64 20 69 73 20 65 78 70 65 63 74 65  mmand is expecte
15d70 64 20 74 6f 20 72 65 74 75 72 6e 20 61 20 73 63  d to return a sc
15d80 61 6c 61 72 20 72 65 73 75 6c 74 20 2d 4f 52 2d  alar result -OR-
15d90 20 74 68 65 20 72 65 73 75 6c 74 20 73 68 6f 75   the result shou
15da0 6c 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65  ld..      /// be
15db0 20 6c 69 6d 69 74 65 64 20 74 6f 20 61 20 73 63   limited to a sc
15dc0 61 6c 61 72 20 72 65 73 75 6c 74 2e 20 20 54 68  alar result.  Th
15dd0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
15de0 69 74 65 43 6f 6d 6d 61 6e 64 2e 45 78 65 63 75  iteCommand.Execu
15df0 74 65 53 63 61 6c 61 72 28 29 22 20 2f 3e 0d 0a  teScalar()" />..
15e00 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20 3c 73 65        /// or <se
15e10 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f  e cref="SQLiteCo
15e20 6d 6d 61 6e 64 2e 45 78 65 63 75 74 65 53 63 61  mmand.ExecuteSca
15e30 6c 61 72 28 43 6f 6d 6d 61 6e 64 42 65 68 61 76  lar(CommandBehav
15e40 69 6f 72 29 22 20 2f 3e 20 6d 65 74 68 6f 64 20  ior)" /> method 
15e50 77 69 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  will..      /// 
15e60 62 65 20 63 61 6c 6c 65 64 2e 0d 0a 20 20 20 20  be called...    
15e70 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
15e80 0d 0a 20 20 20 20 20 20 53 63 61 6c 61 72 20 3d  ..      Scalar =
15e90 20 32 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f   2,....      ///
15ea0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
15eb0 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6d 6d 61 6e    /// The comman
15ec0 64 20 69 73 20 65 78 70 65 63 74 65 64 20 74 6f  d is expected to
15ed0 20 72 65 74 75 72 6e 20 3c 73 65 65 20 63 72 65   return <see cre
15ee0 66 3d 22 53 51 4c 69 74 65 44 61 74 61 52 65 61  f="SQLiteDataRea
15ef0 64 65 72 22 20 2f 3e 20 72 65 73 75 6c 74 2e 0d  der" /> result..
15f00 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c  .      /// The <
15f10 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
15f20 43 6f 6d 6d 61 6e 64 2e 45 78 65 63 75 74 65 52  Command.ExecuteR
15f30 65 61 64 65 72 28 29 22 20 2f 3e 20 6f 72 0d 0a  eader()" /> or..
15f40 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
15f50 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6d 6d 61  ref="SQLiteComma
15f60 6e 64 2e 45 78 65 63 75 74 65 52 65 61 64 65 72  nd.ExecuteReader
15f70 28 43 6f 6d 6d 61 6e 64 42 65 68 61 76 69 6f 72  (CommandBehavior
15f80 29 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 69 6c  )" /> method wil
15f90 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65 20  l..      /// be 
15fa0 63 61 6c 6c 65 64 2e 0d 0a 20 20 20 20 20 20 2f  called...      /
15fb0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
15fc0 20 20 20 20 20 52 65 61 64 65 72 20 3d 20 33 2c       Reader = 3,
15fd0 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
15fe0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
15ff0 2f 2f 20 55 73 65 20 74 68 65 20 64 65 66 61 75  // Use the defau
16000 6c 74 20 63 6f 6d 6d 61 6e 64 20 65 78 65 63 75  lt command execu
16010 74 69 6f 6e 20 74 79 70 65 2e 20 20 55 73 69 6e  tion type.  Usin
16020 67 20 74 68 69 73 20 76 61 6c 75 65 20 69 73 20  g this value is 
16030 74 68 65 20 73 61 6d 65 0d 0a 20 20 20 20 20 20  the same..      
16040 2f 2f 2f 20 61 73 20 75 73 69 6e 67 20 74 68 65  /// as using the
16050 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
16060 74 65 45 78 65 63 75 74 65 54 79 70 65 2e 4e 6f  teExecuteType.No
16070 6e 51 75 65 72 79 22 20 2f 3e 20 76 61 6c 75 65  nQuery" /> value
16080 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
16090 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44  ummary>..      D
160a0 65 66 61 75 6c 74 20 3d 20 4e 6f 6e 51 75 65 72  efault = NonQuer
160b0 79 20 2f 2a 20 54 4f 44 4f 3a 20 47 6f 6f 64 20  y /* TODO: Good 
160c0 64 65 66 61 75 6c 74 3f 20 2a 2f 0d 0a 20 20 7d  default? */..  }
160d0 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ....  /// <summa
160e0 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65 20 61  ry>..  /// The a
160f0 63 74 69 6f 6e 20 63 6f 64 65 20 72 65 73 70 6f  ction code respo
16100 6e 73 69 62 6c 65 20 66 6f 72 20 74 68 65 20 63  nsible for the c
16110 75 72 72 65 6e 74 20 63 61 6c 6c 20 69 6e 74 6f  urrent call into
16120 20 74 68 65 20 61 75 74 68 6f 72 69 7a 65 72 2e   the authorizer.
16130 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72  ..  /// </summar
16140 79 3e 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e 75  y>..  public enu
16150 6d 20 53 51 4c 69 74 65 41 75 74 68 6f 72 69 7a  m SQLiteAuthoriz
16160 65 72 41 63 74 69 6f 6e 43 6f 64 65 0d 0a 20 20  erActionCode..  
16170 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  {..      /// <su
16180 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
16190 2f 20 4e 6f 20 61 63 74 69 6f 6e 20 69 73 20 62  / No action is b
161a0 65 69 6e 67 20 70 65 72 66 6f 72 6d 65 64 2e 20  eing performed. 
161b0 20 54 68 69 73 20 76 61 6c 75 65 20 73 68 6f 75   This value shou
161c0 6c 64 20 6e 6f 74 20 62 65 20 75 73 65 64 20 66  ld not be used f
161d0 72 6f 6d 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65  rom..      /// e
161e0 78 74 65 72 6e 61 6c 20 63 6f 64 65 2e 0d 0a 20  xternal code... 
161f0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
16200 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 6e 65 20  ry>..      None 
16210 3d 20 2d 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  = -1,....      /
16220 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
16230 20 20 20 20 2f 2f 2f 20 4e 6f 20 6c 6f 6e 67 65      /// No longe
16240 72 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 2f  r used...      /
16250 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
16260 20 20 20 20 20 43 6f 70 79 20 3d 20 30 2c 0d 0a       Copy = 0,..
16270 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
16280 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
16290 20 41 6e 20 69 6e 64 65 78 20 77 69 6c 6c 20 62   An index will b
162a0 65 20 63 72 65 61 74 65 64 2e 20 20 54 68 65 20  e created.  The 
162b0 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20  action-specific 
162c0 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68  arguments are th
162d0 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 6e 64  e..      /// ind
162e0 65 78 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20  ex name and the 
162f0 74 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20  table name...   
16300 20 20 20 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f     ///..      //
16310 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
16320 20 20 20 20 43 72 65 61 74 65 49 6e 64 65 78 20      CreateIndex 
16330 3d 20 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  = 1,....      //
16340 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
16350 20 20 20 2f 2f 2f 20 41 20 74 61 62 6c 65 20 77     /// A table w
16360 69 6c 6c 20 62 65 20 63 72 65 61 74 65 64 2e 20  ill be created. 
16370 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63   The action-spec
16380 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61  ific arguments a
16390 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  re the..      //
163a0 2f 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64  / table name and
163b0 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a   a null value...
163c0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
163d0 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 72 65 61  ary>..      Crea
163e0 74 65 54 61 62 6c 65 20 3d 20 32 2c 0d 0a 0d 0a  teTable = 2,....
163f0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
16400 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
16410 20 74 65 6d 70 6f 72 61 72 79 20 69 6e 64 65 78   temporary index
16420 20 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65 64   will be created
16430 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70  .  The action-sp
16440 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73  ecific arguments
16450 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20  ..      /// are 
16460 74 68 65 20 69 6e 64 65 78 20 6e 61 6d 65 20 61  the index name a
16470 6e 64 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d  nd the table nam
16480 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
16490 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
164a0 43 72 65 61 74 65 54 65 6d 70 49 6e 64 65 78 20  CreateTempIndex 
164b0 3d 20 33 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  = 3,....      //
164c0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
164d0 20 20 20 2f 2f 2f 20 41 20 74 65 6d 70 6f 72 61     /// A tempora
164e0 72 79 20 74 61 62 6c 65 20 77 69 6c 6c 20 62 65  ry table will be
164f0 20 63 72 65 61 74 65 64 2e 20 20 54 68 65 20 61   created.  The a
16500 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61  ction-specific a
16510 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20  rguments..      
16520 2f 2f 2f 20 61 72 65 20 74 68 65 20 74 61 62 6c  /// are the tabl
16530 65 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c  e name and a nul
16540 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  l value...      
16550 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
16560 20 20 20 20 20 20 43 72 65 61 74 65 54 65 6d 70        CreateTemp
16570 54 61 62 6c 65 20 3d 20 34 2c 0d 0a 0d 0a 20 20  Table = 4,....  
16580 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
16590 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74  >..      /// A t
165a0 65 6d 70 6f 72 61 72 79 20 74 72 69 67 67 65 72  emporary trigger
165b0 20 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65 64   will be created
165c0 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70  .  The action-sp
165d0 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73  ecific arguments
165e0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20  ..      /// are 
165f0 74 68 65 20 74 72 69 67 67 65 72 20 6e 61 6d 65  the trigger name
16600 20 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20 6e   and the table n
16610 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ame...      /// 
16620 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
16630 20 20 43 72 65 61 74 65 54 65 6d 70 54 72 69 67    CreateTempTrig
16640 67 65 72 20 3d 20 35 2c 0d 0a 0d 0a 20 20 20 20  ger = 5,....    
16650 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
16660 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 65 6d  .      /// A tem
16670 70 6f 72 61 72 79 20 76 69 65 77 20 77 69 6c 6c  porary view will
16680 20 62 65 20 63 72 65 61 74 65 64 2e 20 20 54 68   be created.  Th
16690 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69  e action-specifi
166a0 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 0d  c arguments are.
166b0 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 76  .      /// the v
166c0 69 65 77 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e  iew name and a n
166d0 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  ull value...    
166e0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
166f0 0d 0a 20 20 20 20 20 20 43 72 65 61 74 65 54 65  ..      CreateTe
16700 6d 70 56 69 65 77 20 3d 20 36 2c 0d 0a 0d 0a 20  mpView = 6,.... 
16710 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
16720 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
16730 74 72 69 67 67 65 72 20 77 69 6c 6c 20 62 65 20  trigger will be 
16740 63 72 65 61 74 65 64 2e 20 20 54 68 65 20 61 63  created.  The ac
16750 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72  tion-specific ar
16760 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65 0d  guments are the.
16770 0a 20 20 20 20 20 20 2f 2f 2f 20 74 72 69 67 67  .      /// trigg
16780 65 72 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20  er name and the 
16790 74 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20  table name...   
167a0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
167b0 3e 0d 0a 20 20 20 20 20 20 43 72 65 61 74 65 54  >..      CreateT
167c0 72 69 67 67 65 72 20 3d 20 37 2c 0d 0a 0d 0a 20  rigger = 7,.... 
167d0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
167e0 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
167f0 76 69 65 77 20 77 69 6c 6c 20 62 65 20 63 72 65  view will be cre
16800 61 74 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f  ated.  The actio
16810 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d  n-specific argum
16820 65 6e 74 73 20 61 72 65 20 74 68 65 20 76 69 65  ents are the vie
16830 77 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d  w..      /// nam
16840 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c  e and a null val
16850 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ue...      /// <
16860 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
16870 20 43 72 65 61 74 65 56 69 65 77 20 3d 20 38 2c   CreateView = 8,
16880 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
16890 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
168a0 2f 2f 20 41 20 44 45 4c 45 54 45 20 73 74 61 74  // A DELETE stat
168b0 65 6d 65 6e 74 20 77 69 6c 6c 20 62 65 20 65 78  ement will be ex
168c0 65 63 75 74 65 64 2e 20 20 54 68 65 20 61 63 74  ecuted.  The act
168d0 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67  ion-specific arg
168e0 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f  uments..      //
168f0 2f 20 61 72 65 20 74 68 65 20 74 61 62 6c 65 20  / are the table 
16900 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20  name and a null 
16910 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  value...      //
16920 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
16930 20 20 20 20 44 65 6c 65 74 65 20 3d 20 39 2c 0d      Delete = 9,.
16940 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
16950 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
16960 2f 20 41 6e 20 69 6e 64 65 78 20 77 69 6c 6c 20  / An index will 
16970 62 65 20 64 72 6f 70 70 65 64 2e 20 20 54 68 65  be dropped.  The
16980 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63   action-specific
16990 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74   arguments are t
169a0 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 6e  he..      /// in
169b0 64 65 78 20 6e 61 6d 65 20 61 6e 64 20 74 68 65  dex name and the
169c0 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20   table name...  
169d0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
169e0 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f 70 49 6e  y>..      DropIn
169f0 64 65 78 20 3d 20 31 30 2c 0d 0a 0d 0a 20 20 20  dex = 10,....   
16a00 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
16a10 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 61  ..      /// A ta
16a20 62 6c 65 20 77 69 6c 6c 20 62 65 20 64 72 6f 70  ble will be drop
16a30 70 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e  ped.  The action
16a40 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65  -specific argume
16a50 6e 74 73 20 61 72 65 20 74 68 65 20 74 61 62 6c  nts are the tabl
16a60 65 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6e 61  es..      /// na
16a70 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61  me and a null va
16a80 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lue...      /// 
16a90 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
16aa0 20 20 44 72 6f 70 54 61 62 6c 65 20 3d 20 31 31    DropTable = 11
16ab0 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
16ac0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16ad0 2f 2f 2f 20 41 20 74 65 6d 70 6f 72 61 72 79 20  /// A temporary 
16ae0 69 6e 64 65 78 20 77 69 6c 6c 20 62 65 20 64 72  index will be dr
16af0 6f 70 70 65 64 2e 20 20 54 68 65 20 61 63 74 69  opped.  The acti
16b00 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75  on-specific argu
16b10 6d 65 6e 74 73 20 61 72 65 0d 0a 20 20 20 20 20  ments are..     
16b20 20 2f 2f 2f 20 74 68 65 20 69 6e 64 65 78 20 6e   /// the index n
16b30 61 6d 65 20 61 6e 64 20 74 68 65 20 74 61 62 6c  ame and the tabl
16b40 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f  e name...      /
16b50 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
16b60 20 20 20 20 20 44 72 6f 70 54 65 6d 70 49 6e 64       DropTempInd
16b70 65 78 20 3d 20 31 32 2c 0d 0a 0d 0a 20 20 20 20  ex = 12,....    
16b80 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
16b90 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 65 6d  .      /// A tem
16ba0 70 6f 72 61 72 79 20 74 61 62 6c 65 20 77 69 6c  porary table wil
16bb0 6c 20 62 65 20 64 72 6f 70 70 65 64 2e 20 20 54  l be dropped.  T
16bc0 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66  he action-specif
16bd0 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65  ic arguments are
16be0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20  ..      /// the 
16bf0 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64 20 61  table name and a
16c00 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20   null value...  
16c10 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
16c20 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f 70 54 65  y>..      DropTe
16c30 6d 70 54 61 62 6c 65 20 3d 20 31 33 2c 0d 0a 0d  mpTable = 13,...
16c40 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
16c50 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
16c60 41 20 74 65 6d 70 6f 72 61 72 79 20 74 72 69 67  A temporary trig
16c70 67 65 72 20 77 69 6c 6c 20 62 65 20 64 72 6f 70  ger will be drop
16c80 70 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e  ped.  The action
16c90 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65  -specific argume
16ca0 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61  nts..      /// a
16cb0 72 65 20 74 68 65 20 74 72 69 67 67 65 72 20 6e  re the trigger n
16cc0 61 6d 65 20 61 6e 64 20 74 68 65 20 74 61 62 6c  ame and the tabl
16cd0 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f  e name...      /
16ce0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
16cf0 20 20 20 20 20 44 72 6f 70 54 65 6d 70 54 72 69       DropTempTri
16d00 67 67 65 72 20 3d 20 31 34 2c 0d 0a 0d 0a 20 20  gger = 14,....  
16d10 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
16d20 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74  >..      /// A t
16d30 65 6d 70 6f 72 61 72 79 20 76 69 65 77 20 77 69  emporary view wi
16d40 6c 6c 20 62 65 20 64 72 6f 70 70 65 64 2e 20 20  ll be dropped.  
16d50 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69  The action-speci
16d60 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72  fic arguments ar
16d70 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  e..      /// the
16d80 20 76 69 65 77 20 6e 61 6d 65 20 61 6e 64 20 61   view name and a
16d90 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20   null value...  
16da0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
16db0 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f 70 54 65  y>..      DropTe
16dc0 6d 70 56 69 65 77 20 3d 20 31 35 2c 0d 0a 0d 0a  mpView = 15,....
16dd0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
16de0 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
16df0 20 74 72 69 67 67 65 72 20 77 69 6c 6c 20 62 65   trigger will be
16e00 20 64 72 6f 70 70 65 64 2e 20 20 54 68 65 20 61   dropped.  The a
16e10 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61  ction-specific a
16e20 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65  rguments are the
16e30 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 72 69 67  ..      /// trig
16e40 67 65 72 20 6e 61 6d 65 20 61 6e 64 20 74 68 65  ger name and the
16e50 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20   table name...  
16e60 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
16e70 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f 70 54 72  y>..      DropTr
16e80 69 67 67 65 72 20 3d 20 31 36 2c 0d 0a 0d 0a 20  igger = 16,.... 
16e90 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
16ea0 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
16eb0 76 69 65 77 20 77 69 6c 6c 20 62 65 20 64 72 6f  view will be dro
16ec0 70 70 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f  pped.  The actio
16ed0 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d  n-specific argum
16ee0 65 6e 74 73 20 61 72 65 20 74 68 65 20 76 69 65  ents are the vie
16ef0 77 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d  w..      /// nam
16f00 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c  e and a null val
16f10 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ue...      /// <
16f20 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
16f30 20 44 72 6f 70 56 69 65 77 20 3d 20 31 37 2c 0d   DropView = 17,.
16f40 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
16f50 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
16f60 2f 20 41 6e 20 49 4e 53 45 52 54 20 73 74 61 74  / An INSERT stat
16f70 65 6d 65 6e 74 20 77 69 6c 6c 20 62 65 20 65 78  ement will be ex
16f80 65 63 75 74 65 64 2e 20 20 54 68 65 20 61 63 74  ecuted.  The act
16f90 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67  ion-specific arg
16fa0 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f  uments..      //
16fb0 2f 20 61 72 65 20 74 68 65 20 74 61 62 6c 65 20  / are the table 
16fc0 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20  name and a null 
16fd0 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  value...      //
16fe0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
16ff0 20 20 20 20 49 6e 73 65 72 74 20 3d 20 31 38 2c      Insert = 18,
17000 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
17010 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
17020 2f 2f 20 41 20 50 52 41 47 4d 41 20 73 74 61 74  // A PRAGMA stat
17030 65 6d 65 6e 74 20 77 69 6c 6c 20 62 65 20 65 78  ement will be ex
17040 65 63 75 74 65 64 2e 20 20 54 68 65 20 61 63 74  ecuted.  The act
17050 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67  ion-specific arg
17060 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f  uments..      //
17070 2f 20 61 72 65 20 74 68 65 20 6e 61 6d 65 20 6f  / are the name o
17080 66 20 74 68 65 20 50 52 41 47 4d 41 20 61 6e 64  f the PRAGMA and
17090 20 74 68 65 20 6e 65 77 20 76 61 6c 75 65 20 6f   the new value o
170a0 72 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d  r a null value..
170b0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
170c0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 50 72 61  mary>..      Pra
170d0 67 6d 61 20 3d 20 31 39 2c 0d 0a 0d 0a 20 20 20  gma = 19,....   
170e0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
170f0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 61  ..      /// A ta
17100 62 6c 65 20 63 6f 6c 75 6d 6e 20 77 69 6c 6c 20  ble column will 
17110 62 65 20 72 65 61 64 2e 20 20 54 68 65 20 61 63  be read.  The ac
17120 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72  tion-specific ar
17130 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65 0d  guments are the.
17140 0a 20 20 20 20 20 20 2f 2f 2f 20 74 61 62 6c 65  .      /// table
17150 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 63 6f   name and the co
17160 6c 75 6d 6e 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  lumn name...    
17170 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
17180 0d 0a 20 20 20 20 20 20 52 65 61 64 20 3d 20 32  ..      Read = 2
17190 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  0,....      /// 
171a0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
171b0 20 2f 2f 2f 20 41 20 53 45 4c 45 43 54 20 73 74   /// A SELECT st
171c0 61 74 65 6d 65 6e 74 20 77 69 6c 6c 20 62 65 20  atement will be 
171d0 65 78 65 63 75 74 65 64 2e 20 20 54 68 65 20 61  executed.  The a
171e0 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61  ction-specific a
171f0 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20  rguments..      
17200 2f 2f 2f 20 61 72 65 20 62 6f 74 68 20 6e 75 6c  /// are both nul
17210 6c 20 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20 20  l values...     
17220 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
17230 0a 20 20 20 20 20 20 53 65 6c 65 63 74 20 3d 20  .      Select = 
17240 32 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  21,....      ///
17250 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
17260 20 20 2f 2f 2f 20 41 20 74 72 61 6e 73 61 63 74    /// A transact
17270 69 6f 6e 20 77 69 6c 6c 20 62 65 20 73 74 61 72  ion will be star
17280 74 65 64 2c 20 63 6f 6d 6d 69 74 74 65 64 2c 20  ted, committed, 
17290 6f 72 20 72 6f 6c 6c 65 64 20 62 61 63 6b 2e 20  or rolled back. 
172a0 20 54 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   The..      /// 
172b0 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20  action-specific 
172c0 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68  arguments are th
172d0 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6f 70  e name of the op
172e0 65 72 61 74 69 6f 6e 20 28 42 45 47 49 4e 2c 0d  eration (BEGIN,.
172f0 0a 20 20 20 20 20 20 2f 2f 2f 20 43 4f 4d 4d 49  .      /// COMMI
17300 54 2c 20 6f 72 20 52 4f 4c 4c 42 41 43 4b 29 20  T, or ROLLBACK) 
17310 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65  and a null value
17320 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
17330 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 54  ummary>..      T
17340 72 61 6e 73 61 63 74 69 6f 6e 20 3d 20 32 32 2c  ransaction = 22,
17350 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
17360 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
17370 2f 2f 20 41 6e 20 55 50 44 41 54 45 20 73 74 61  // An UPDATE sta
17380 74 65 6d 65 6e 74 20 77 69 6c 6c 20 62 65 20 65  tement will be e
17390 78 65 63 75 74 65 64 2e 20 20 54 68 65 20 61 63  xecuted.  The ac
173a0 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72  tion-specific ar
173b0 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f  guments..      /
173c0 2f 2f 20 61 72 65 20 74 68 65 20 74 61 62 6c 65  // are the table
173d0 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 63 6f   name and the co
173e0 6c 75 6d 6e 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  lumn name...    
173f0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
17400 0d 0a 20 20 20 20 20 20 55 70 64 61 74 65 20 3d  ..      Update =
17410 20 32 33 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f   23,....      //
17420 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
17430 20 20 20 2f 2f 2f 20 41 20 64 61 74 61 62 61 73     /// A databas
17440 65 20 77 69 6c 6c 20 62 65 20 61 74 74 61 63 68  e will be attach
17450 65 64 20 74 6f 20 74 68 65 20 63 6f 6e 6e 65 63  ed to the connec
17460 74 69 6f 6e 2e 20 20 54 68 65 20 61 63 74 69 6f  tion.  The actio
17470 6e 2d 73 70 65 63 69 66 69 63 0d 0a 20 20 20 20  n-specific..    
17480 20 20 2f 2f 2f 20 61 72 67 75 6d 65 6e 74 73 20    /// arguments 
17490 61 72 65 20 74 68 65 20 64 61 74 61 62 61 73 65  are the database
174a0 20 66 69 6c 65 20 6e 61 6d 65 20 61 6e 64 20 61   file name and a
174b0 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20   null value...  
174c0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
174d0 79 3e 0d 0a 20 20 20 20 20 20 41 74 74 61 63 68  y>..      Attach
174e0 20 3d 20 32 34 2c 0d 0a 0d 0a 20 20 20 20 20 20   = 24,....      
174f0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
17500 20 20 20 20 20 2f 2f 2f 20 41 20 64 61 74 61 62       /// A datab
17510 61 73 65 20 77 69 6c 6c 20 62 65 20 64 65 74 61  ase will be deta
17520 63 68 65 64 20 66 72 6f 6d 20 74 68 65 20 63 6f  ched from the co
17530 6e 6e 65 63 74 69 6f 6e 2e 20 20 54 68 65 20 61  nnection.  The a
17540 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 0d 0a  ction-specific..
17550 20 20 20 20 20 20 2f 2f 2f 20 61 72 67 75 6d 65        /// argume
17560 6e 74 73 20 61 72 65 20 74 68 65 20 64 61 74 61  nts are the data
17570 62 61 73 65 20 6e 61 6d 65 20 61 6e 64 20 61 20  base name and a 
17580 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20  null value...   
17590 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
175a0 3e 0d 0a 20 20 20 20 20 20 44 65 74 61 63 68 20  >..      Detach 
175b0 3d 20 32 35 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  = 25,....      /
175c0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
175d0 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 63 68 65      /// The sche
175e0 6d 61 20 6f 66 20 61 20 74 61 62 6c 65 20 77 69  ma of a table wi
175f0 6c 6c 20 62 65 20 61 6c 74 65 72 65 64 2e 20 20  ll be altered.  
17600 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69  The action-speci
17610 66 69 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20  fic arguments.. 
17620 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 74 68 65       /// are the
17630 20 64 61 74 61 62 61 73 65 20 6e 61 6d 65 20 61   database name a
17640 6e 64 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d  nd the table nam
17650 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
17660 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
17670 41 6c 74 65 72 54 61 62 6c 65 20 3d 20 32 36 2c  AlterTable = 26,
17680 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
17690 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
176a0 2f 2f 20 41 6e 20 69 6e 64 65 78 20 77 69 6c 6c  // An index will
176b0 20 62 65 20 64 65 6c 65 74 65 64 20 61 6e 64 20   be deleted and 
176c0 74 68 65 6e 20 72 65 63 72 65 61 74 65 64 2e 20  then recreated. 
176d0 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63   The action-spec
176e0 69 66 69 63 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ific..      /// 
176f0 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68  arguments are th
17700 65 20 69 6e 64 65 78 20 6e 61 6d 65 20 61 6e 64  e index name and
17710 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a   a null value...
17720 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
17730 61 72 79 3e 0d 0a 20 20 20 20 20 20 52 65 69 6e  ary>..      Rein
17740 64 65 78 20 3d 20 32 37 2c 0d 0a 0d 0a 20 20 20  dex = 27,....   
17750 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
17760 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 61  ..      /// A ta
17770 62 6c 65 20 77 69 6c 6c 20 62 65 20 61 6e 61 6c  ble will be anal
17780 79 7a 65 64 20 74 6f 20 67 61 74 68 65 72 73 20  yzed to gathers 
17790 73 74 61 74 69 73 74 69 63 73 20 61 62 6f 75 74  statistics about
177a0 20 69 74 2e 20 20 54 68 65 0d 0a 20 20 20 20 20   it.  The..     
177b0 20 2f 2f 2f 20 61 63 74 69 6f 6e 2d 73 70 65 63   /// action-spec
177c0 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61  ific arguments a
177d0 72 65 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d  re the table nam
177e0 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c  e and a null val
177f0 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ue...      /// <
17800 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
17810 20 41 6e 61 6c 79 7a 65 20 3d 20 32 38 2c 0d 0a   Analyze = 28,..
17820 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
17830 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
17840 20 41 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65   A virtual table
17850 20 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65 64   will be created
17860 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70  .  The action-sp
17870 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73  ecific arguments
17880 20 61 72 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   are..      /// 
17890 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 20 61  the table name a
178a0 6e 64 20 74 68 65 20 6d 6f 64 75 6c 65 20 6e 61  nd the module na
178b0 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  me...      /// <
178c0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
178d0 20 43 72 65 61 74 65 56 74 61 62 6c 65 20 3d 20   CreateVtable = 
178e0 32 39 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  29,....      ///
178f0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
17900 20 20 2f 2f 2f 20 41 20 76 69 72 74 75 61 6c 20    /// A virtual 
17910 74 61 62 6c 65 20 77 69 6c 6c 20 62 65 20 64 72  table will be dr
17920 6f 70 70 65 64 2e 20 20 54 68 65 20 61 63 74 69  opped.  The acti
17930 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75  on-specific argu
17940 6d 65 6e 74 73 20 61 72 65 0d 0a 20 20 20 20 20  ments are..     
17950 20 2f 2f 2f 20 74 68 65 20 74 61 62 6c 65 20 6e   /// the table n
17960 61 6d 65 20 61 6e 64 20 74 68 65 20 6d 6f 64 75  ame and the modu
17970 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20  le name...      
17980 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
17990 20 20 20 20 20 20 44 72 6f 70 56 74 61 62 6c 65        DropVtable
179a0 20 3d 20 33 30 2c 0d 0a 0d 0a 20 20 20 20 20 20   = 30,....      
179b0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
179c0 20 20 20 20 20 2f 2f 2f 20 41 20 53 51 4c 20 66       /// A SQL f
179d0 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20  unction will be 
179e0 63 61 6c 6c 65 64 2e 20 20 54 68 65 20 61 63 74  called.  The act
179f0 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67  ion-specific arg
17a00 75 6d 65 6e 74 73 20 61 72 65 20 61 0d 0a 20 20  uments are a..  
17a10 20 20 20 20 2f 2f 2f 20 6e 75 6c 6c 20 76 61 6c      /// null val
17a20 75 65 20 61 6e 64 20 74 68 65 20 66 75 6e 63 74  ue and the funct
17a30 69 6f 6e 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20  ion name...     
17a40 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
17a50 0a 20 20 20 20 20 20 46 75 6e 63 74 69 6f 6e 20  .      Function 
17a60 3d 20 33 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  = 31,....      /
17a70 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
17a80 20 20 20 20 2f 2f 2f 20 41 20 73 61 76 65 70 6f      /// A savepo
17a90 69 6e 74 20 77 69 6c 6c 20 62 65 20 63 72 65 61  int will be crea
17aa0 74 65 64 2c 20 72 65 6c 65 61 73 65 64 2c 20 6f  ted, released, o
17ab0 72 20 72 6f 6c 6c 65 64 20 62 61 63 6b 2e 20 20  r rolled back.  
17ac0 54 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61  The..      /// a
17ad0 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61  ction-specific a
17ae0 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65  rguments are the
17af0 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6f 70 65   name of the ope
17b00 72 61 74 69 6f 6e 20 28 42 45 47 49 4e 2c 0d 0a  ration (BEGIN,..
17b10 20 20 20 20 20 20 2f 2f 2f 20 52 45 4c 45 41 53        /// RELEAS
17b20 45 2c 20 6f 72 20 52 4f 4c 4c 42 41 43 4b 29 20  E, or ROLLBACK) 
17b30 61 6e 64 20 74 68 65 20 73 61 76 65 70 6f 69 6e  and the savepoin
17b40 74 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f  t name...      /
17b50 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
17b60 20 20 20 20 20 53 61 76 65 70 6f 69 6e 74 20 3d       Savepoint =
17b70 20 33 32 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f   32,....      //
17b80 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
17b90 20 20 20 2f 2f 2f 20 41 20 72 65 63 75 72 73 69     /// A recursi
17ba0 76 65 20 71 75 65 72 79 20 77 69 6c 6c 20 62 65  ve query will be
17bb0 20 65 78 65 63 75 74 65 64 2e 20 20 54 68 65 20   executed.  The 
17bc0 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20  action-specific 
17bd0 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20  arguments..     
17be0 20 2f 2f 2f 20 61 72 65 20 74 77 6f 20 6e 75 6c   /// are two nul
17bf0 6c 20 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20 20  l values...     
17c00 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
17c10 0a 20 20 20 20 20 20 52 65 63 75 72 73 69 76 65  .      Recursive
17c20 20 3d 20 33 33 0d 0a 20 20 7d 0d 0a 0d 0a 20 20   = 33..  }....  
17c30 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
17c40 20 2f 2f 2f 20 54 68 65 20 70 6f 73 73 69 62 6c   /// The possibl
17c50 65 20 72 65 74 75 72 6e 20 63 6f 64 65 73 20 66  e return codes f
17c60 6f 72 20 74 68 65 20 70 72 6f 67 72 65 73 73 20  or the progress 
17c70 63 61 6c 6c 62 61 63 6b 2e 0d 0a 20 20 2f 2f 2f  callback...  ///
17c80 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 70   </summary>..  p
17c90 75 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69 74  ublic enum SQLit
17ca0 65 50 72 6f 67 72 65 73 73 52 65 74 75 72 6e 43  eProgressReturnC
17cb0 6f 64 65 20 2f 2a 20 69 6e 74 20 2a 2f 0d 0a 20  ode /* int */.. 
17cc0 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73   {..      /// <s
17cd0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
17ce0 2f 2f 20 54 68 65 20 6f 70 65 72 61 74 69 6f 6e  // The operation
17cf0 20 73 68 6f 75 6c 64 20 63 6f 6e 74 69 6e 75 65   should continue
17d00 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
17d10 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43  ummary>..      C
17d20 6f 6e 74 69 6e 75 65 20 3d 20 30 2c 0d 0a 0d 0a  ontinue = 0,....
17d30 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
17d40 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
17d50 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 73 68 6f  he operation sho
17d60 75 6c 64 20 62 65 20 69 6e 74 65 72 72 75 70 74  uld be interrupt
17d70 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
17d80 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
17d90 20 49 6e 74 65 72 72 75 70 74 20 3d 20 31 0d 0a   Interrupt = 1..
17da0 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75    }....  /// <su
17db0 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68  mmary>..  /// Th
17dc0 65 20 72 65 74 75 72 6e 20 63 6f 64 65 20 66 6f  e return code fo
17dd0 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 63 61  r the current ca
17de0 6c 6c 20 69 6e 74 6f 20 74 68 65 20 61 75 74 68  ll into the auth
17df0 6f 72 69 7a 65 72 2e 0d 0a 20 20 2f 2f 2f 20 3c  orizer...  /// <
17e00 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 70 75 62  /summary>..  pub
17e10 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69 74 65 41  lic enum SQLiteA
17e20 75 74 68 6f 72 69 7a 65 72 52 65 74 75 72 6e 43  uthorizerReturnC
17e30 6f 64 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20  ode..  {..      
17e40 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
17e50 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 63 74       /// The act
17e60 69 6f 6e 20 77 69 6c 6c 20 62 65 20 61 6c 6c 6f  ion will be allo
17e70 77 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  wed...      /// 
17e80 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
17e90 20 20 4f 6b 20 3d 20 30 2c 0d 0a 0d 0a 20 20 20    Ok = 0,....   
17ea0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
17eb0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
17ec0 6f 76 65 72 61 6c 6c 20 61 63 74 69 6f 6e 20 77  overall action w
17ed0 69 6c 6c 20 62 65 20 64 69 73 61 6c 6c 6f 77 65  ill be disallowe
17ee0 64 20 61 6e 64 20 61 6e 20 65 72 72 6f 72 20 6d  d and an error m
17ef0 65 73 73 61 67 65 20 77 69 6c 6c 20 62 65 0d 0a  essage will be..
17f00 20 20 20 20 20 20 2f 2f 2f 20 72 65 74 75 72 6e        /// return
17f10 65 64 20 66 72 6f 6d 20 74 68 65 20 71 75 65 72  ed from the quer
17f20 79 20 70 72 65 70 61 72 61 74 69 6f 6e 20 6d 65  y preparation me
17f30 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  thod...      ///
17f40 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
17f50 20 20 20 44 65 6e 79 20 3d 20 31 2c 0d 0a 0d 0a     Deny = 1,....
17f60 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
17f70 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
17f80 68 65 20 73 70 65 63 69 66 69 63 20 61 63 74 69  he specific acti
17f90 6f 6e 20 77 69 6c 6c 20 62 65 20 64 69 73 61 6c  on will be disal
17fa0 6c 6f 77 65 64 3b 20 68 6f 77 65 76 65 72 2c 20  lowed; however, 
17fb0 74 68 65 20 6f 76 65 72 61 6c 6c 20 61 63 74 69  the overall acti
17fc0 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77 69  on..      /// wi
17fd0 6c 6c 20 63 6f 6e 74 69 6e 75 65 2e 20 20 54 68  ll continue.  Th
17fe0 65 20 65 78 61 63 74 20 65 66 66 65 63 74 73 20  e exact effects 
17ff0 6f 66 20 74 68 69 73 20 72 65 74 75 72 6e 20 63  of this return c
18000 6f 64 65 20 76 61 72 79 20 64 65 70 65 6e 64 69  ode vary dependi
18010 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 6e  ng..      /// on
18020 20 74 68 65 20 73 70 65 63 69 66 69 63 20 61 63   the specific ac
18030 74 69 6f 6e 2c 20 70 6c 65 61 73 65 20 72 65 66  tion, please ref
18040 65 72 20 74 6f 20 74 68 65 20 53 51 4c 69 74 65  er to the SQLite
18050 20 63 6f 72 65 20 6c 69 62 72 61 72 79 0d 0a 20   core library.. 
18060 20 20 20 20 20 2f 2f 2f 20 64 6f 63 75 6d 65 6e       /// documen
18070 74 61 74 69 6f 6e 20 66 6f 72 20 66 75 74 68 65  tation for futhe
18080 72 20 64 65 74 61 69 6c 73 2e 0d 0a 20 20 20 20  r details...    
18090 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
180a0 0d 0a 20 20 20 20 20 20 49 67 6e 6f 72 65 20 3d  ..      Ignore =
180b0 20 32 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f   2..  }....  ///
180c0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f   <summary>..  //
180d0 2f 20 43 6c 61 73 73 20 75 73 65 64 20 69 6e 74  / Class used int
180e0 65 72 6e 61 6c 6c 79 20 74 6f 20 64 65 74 65 72  ernally to deter
180f0 6d 69 6e 65 20 74 68 65 20 64 61 74 61 74 79 70  mine the datatyp
18100 65 20 6f 66 20 61 20 63 6f 6c 75 6d 6e 20 69 6e  e of a column in
18110 20 61 20 72 65 73 75 6c 74 73 65 74 0d 0a 20 20   a resultset..  
18120 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
18130 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65    internal seale
18140 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 54 79  d class SQLiteTy
18150 70 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 2f 2f 2f  pe..  {..    ///
18160 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
18170 2f 2f 2f 20 54 68 65 20 44 62 54 79 70 65 20 6f  /// The DbType o
18180 66 20 74 68 65 20 63 6f 6c 75 6d 6e 2c 20 6f 72  f the column, or
18190 20 44 62 54 79 70 65 2e 4f 62 6a 65 63 74 20 69   DbType.Object i
181a0 66 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64  f it cannot be d
181b0 65 74 65 72 6d 69 6e 65 64 0d 0a 20 20 20 20 2f  etermined..    /
181c0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
181d0 20 20 20 69 6e 74 65 72 6e 61 6c 20 44 62 54 79     internal DbTy
181e0 70 65 20 54 79 70 65 3b 0d 0a 20 20 20 20 2f 2f  pe Type;..    //
181f0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
18200 20 2f 2f 2f 20 54 68 65 20 61 66 66 69 6e 69 74   /// The affinit
18210 79 20 6f 66 20 61 20 63 6f 6c 75 6d 6e 2c 20 75  y of a column, u
18220 73 65 64 20 66 6f 72 20 65 78 70 72 65 73 73 69  sed for expressi
18230 6f 6e 73 20 6f 72 20 77 68 65 6e 20 54 79 70 65  ons or when Type
18240 20 69 73 20 44 62 54 79 70 65 2e 4f 62 6a 65 63   is DbType.Objec
18250 74 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  t..    /// </sum
18260 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72  mary>..    inter
18270 6e 61 6c 20 54 79 70 65 41 66 66 69 6e 69 74 79  nal TypeAffinity
18280 20 41 66 66 69 6e 69 74 79 3b 0d 0a 0d 0a 20 20   Affinity;....  
18290 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
182a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
182b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
182c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
182d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
182e0 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
182f0 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 73  y>..    /// Cons
18300 74 72 75 63 74 73 20 61 20 64 65 66 61 75 6c 74  tructs a default
18310 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69   instance of thi
18320 73 20 74 79 70 65 2e 0d 0a 20 20 20 20 2f 2f 2f  s type...    ///
18330 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
18340 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 54 79   public SQLiteTy
18350 70 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  pe()..    {..   
18360 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
18370 2e 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ...    }....    
18380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
183a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
183b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
183c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
183d0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
183e0 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72  ..    /// Constr
183f0 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65  ucts an instance
18400 20 6f 66 20 74 68 69 73 20 74 79 70 65 20 77 69   of this type wi
18410 74 68 20 74 68 65 20 73 70 65 63 69 66 69 65 64  th the specified
18420 20 66 69 65 6c 64 20 76 61 6c 75 65 73 2e 0d 0a   field values...
18430 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
18440 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
18450 61 6d 20 6e 61 6d 65 3d 22 61 66 66 69 6e 69 74  am name="affinit
18460 79 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  y">..    /// The
18470 20 74 79 70 65 20 61 66 66 69 6e 69 74 79 20 74   type affinity t
18480 6f 20 75 73 65 20 66 6f 72 20 74 68 65 20 6e 65  o use for the ne
18490 77 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  w instance...   
184a0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
184b0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
184c0 6d 65 3d 22 74 79 70 65 22 3e 0d 0a 20 20 20 20  me="type">..    
184d0 2f 2f 2f 20 54 68 65 20 64 61 74 61 62 61 73 65  /// The database
184e0 20 74 79 70 65 20 74 6f 20 75 73 65 20 66 6f 72   type to use for
184f0 20 74 68 65 20 6e 65 77 20 69 6e 73 74 61 6e 63   the new instanc
18500 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  e...    /// </pa
18510 72 61 6d 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63  ram>..    public
18520 20 53 51 4c 69 74 65 54 79 70 65 28 0d 0a 20 20   SQLiteType(..  
18530 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79      TypeAffinity
18540 20 61 66 66 69 6e 69 74 79 2c 0d 0a 20 20 20 20   affinity,..    
18550 20 20 44 62 54 79 70 65 20 74 79 70 65 0d 0a 20    DbType type.. 
18560 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 3a 20       )..      : 
18570 74 68 69 73 28 29 0d 0a 20 20 20 20 7b 0d 0a 20  this()..    {.. 
18580 20 20 20 20 20 74 68 69 73 2e 41 66 66 69 6e 69       this.Affini
18590 74 79 20 3d 20 61 66 66 69 6e 69 74 79 3b 0d 0a  ty = affinity;..
185a0 20 20 20 20 20 20 74 68 69 73 2e 54 79 70 65 20        this.Type 
185b0 3d 20 74 79 70 65 3b 0d 0a 20 20 20 20 7d 0d 0a  = type;..    }..
185c0 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f    }....  ///////
185d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
185e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
185f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18610 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 69 6e 74 65  //////....  inte
18620 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73  rnal sealed clas
18630 73 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  s SQLiteDbTypeMa
18640 70 0d 0a 20 20 20 20 20 20 3a 20 44 69 63 74 69  p..      : Dicti
18650 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 53 51  onary<string, SQ
18660 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
18670 67 3e 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 23  g>..  {..      #
18680 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44  region Private D
18690 61 74 61 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ata..      priva
186a0 74 65 20 44 69 63 74 69 6f 6e 61 72 79 3c 44 62  te Dictionary<Db
186b0 54 79 70 65 2c 20 53 51 4c 69 74 65 44 62 54 79  Type, SQLiteDbTy
186c0 70 65 4d 61 70 70 69 6e 67 3e 20 72 65 76 65 72  peMapping> rever
186d0 73 65 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64 72  se;..      #endr
186e0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f  egion....      /
186f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18730 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
18740 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63    #region Public
18750 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20   Constructors.. 
18760 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69       public SQLi
18770 74 65 44 62 54 79 70 65 4d 61 70 28 29 0d 0a 20  teDbTypeMap().. 
18780 20 20 20 20 20 20 20 20 20 3a 20 62 61 73 65 28           : base(
18790 6e 65 77 20 54 79 70 65 4e 61 6d 65 53 74 72 69  new TypeNameStri
187a0 6e 67 43 6f 6d 70 61 72 65 72 28 29 29 0d 0a 20  ngComparer()).. 
187b0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
187c0 20 20 72 65 76 65 72 73 65 20 3d 20 6e 65 77 20    reverse = new 
187d0 44 69 63 74 69 6f 6e 61 72 79 3c 44 62 54 79 70  Dictionary<DbTyp
187e0 65 2c 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  e, SQLiteDbTypeM
187f0 61 70 70 69 6e 67 3e 28 29 3b 0d 0a 20 20 20 20  apping>();..    
18800 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
18810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18850 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
18860 70 75 62 6c 69 63 20 53 51 4c 69 74 65 44 62 54  public SQLiteDbT
18870 79 70 65 4d 61 70 28 0d 0a 20 20 20 20 20 20 20  ypeMap(..       
18880 20 20 20 49 45 6e 75 6d 65 72 61 62 6c 65 3c 53     IEnumerable<S
18890 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
188a0 6e 67 3e 20 63 6f 6c 6c 65 63 74 69 6f 6e 0d 0a  ng> collection..
188b0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
188c0 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d         : this().
188d0 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
188e0 20 20 20 20 41 64 64 28 63 6f 6c 6c 65 63 74 69      Add(collecti
188f0 6f 6e 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20  on);..      }.. 
18900 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
18910 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
18920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18960 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67  //....      #reg
18970 69 6f 6e 20 53 79 73 74 65 6d 2e 43 6f 6c 6c 65  ion System.Colle
18980 63 74 69 6f 6e 73 2e 47 65 6e 65 72 69 63 2e 44  ctions.Generic.D
18990 69 63 74 69 6f 6e 61 72 79 20 22 4f 76 65 72 72  ictionary "Overr
189a0 69 64 65 73 22 0d 0a 20 20 20 20 20 20 70 75 62  ides"..      pub
189b0 6c 69 63 20 6e 65 77 20 69 6e 74 20 43 6c 65 61  lic new int Clea
189c0 72 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  r()..      {..  
189d0 20 20 20 20 20 20 20 20 69 6e 74 20 72 65 73 75          int resu
189e0 6c 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20  lt = 0;....     
189f0 20 20 20 20 20 69 66 20 28 72 65 76 65 72 73 65       if (reverse
18a00 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
18a10 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
18a20 20 20 20 20 20 20 72 65 73 75 6c 74 20 2b 3d 20        result += 
18a30 72 65 76 65 72 73 65 2e 43 6f 75 6e 74 3b 0d 0a  reverse.Count;..
18a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
18a50 76 65 72 73 65 2e 43 6c 65 61 72 28 29 3b 0d 0a  verse.Clear();..
18a60 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
18a70 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20           result 
18a80 2b 3d 20 62 61 73 65 2e 43 6f 75 6e 74 3b 0d 0a  += base.Count;..
18a90 20 20 20 20 20 20 20 20 20 20 62 61 73 65 2e 43            base.C
18aa0 6c 65 61 72 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  lear();....     
18ab0 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75       return resu
18ac0 6c 74 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20  lt;..      }..  
18ad0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
18ae0 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
18af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b30 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69  /....      #regi
18b40 6f 6e 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  on SQLiteDbTypeM
18b50 61 70 70 69 6e 67 20 48 65 6c 70 65 72 20 4d 65  apping Helper Me
18b60 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 70 75 62  thods..      pub
18b70 6c 69 63 20 76 6f 69 64 20 41 64 64 28 0d 0a 20  lic void Add(.. 
18b80 20 20 20 20 20 20 20 20 20 49 45 6e 75 6d 65 72           IEnumer
18b90 61 62 6c 65 3c 53 51 4c 69 74 65 44 62 54 79 70  able<SQLiteDbTyp
18ba0 65 4d 61 70 70 69 6e 67 3e 20 63 6f 6c 6c 65 63  eMapping> collec
18bb0 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20 20  tion..          
18bc0 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
18bd0 20 20 20 20 20 20 69 66 20 28 63 6f 6c 6c 65 63        if (collec
18be0 74 69 6f 6e 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  tion == null).. 
18bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72               thr
18c00 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74 4e  ow new ArgumentN
18c10 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28 22 63 6f  ullException("co
18c20 6c 6c 65 63 74 69 6f 6e 22 29 3b 0d 0a 0d 0a 20  llection");.... 
18c30 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68           foreach
18c40 20 28 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61   (SQLiteDbTypeMa
18c50 70 70 69 6e 67 20 69 74 65 6d 20 69 6e 20 63 6f  pping item in co
18c60 6c 6c 65 63 74 69 6f 6e 29 0d 0a 20 20 20 20 20  llection)..     
18c70 20 20 20 20 20 20 20 20 20 41 64 64 28 69 74 65           Add(ite
18c80 6d 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  m);..      }....
18c90 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
18ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18cc0 2f 2f 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 0d  ///////////////.
18ce0 0a 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20  ...      public 
18cf0 76 6f 69 64 20 41 64 64 28 53 51 4c 69 74 65 44  void Add(SQLiteD
18d00 62 54 79 70 65 4d 61 70 70 69 6e 67 20 69 74 65  bTypeMapping ite
18d10 6d 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  m)..      {..   
18d20 20 20 20 20 20 20 20 69 66 20 28 69 74 65 6d 20         if (item 
18d30 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
18d40 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65          throw ne
18d50 77 20 41 72 67 75 6d 65 6e 74 4e 75 6c 6c 45 78  w ArgumentNullEx
18d60 63 65 70 74 69 6f 6e 28 22 69 74 65 6d 22 29 3b  ception("item");
18d70 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
18d80 20 28 69 74 65 6d 2e 74 79 70 65 4e 61 6d 65 20   (item.typeName 
18d90 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
18da0 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65          throw ne
18db0 77 20 41 72 67 75 6d 65 6e 74 45 78 63 65 70 74  w ArgumentExcept
18dc0 69 6f 6e 28 22 69 74 65 6d 20 74 79 70 65 20 6e  ion("item type n
18dd0 61 6d 65 20 63 61 6e 6e 6f 74 20 62 65 20 6e 75  ame cannot be nu
18de0 6c 6c 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ll");....       
18df0 20 20 20 62 61 73 65 2e 41 64 64 28 69 74 65 6d     base.Add(item
18e00 2e 74 79 70 65 4e 61 6d 65 2c 20 69 74 65 6d 29  .typeName, item)
18e10 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  ;....          i
18e20 66 20 28 69 74 65 6d 2e 70 72 69 6d 61 72 79 29  f (item.primary)
18e30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18e40 72 65 76 65 72 73 65 2e 41 64 64 28 69 74 65 6d  reverse.Add(item
18e50 2e 64 61 74 61 54 79 70 65 2c 20 69 74 65 6d 29  .dataType, item)
18e60 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  ;..      }..    
18e70 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
18e80 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
18e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
18ed0 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e  ...      #region
18ee0 20 44 62 54 79 70 65 20 48 65 6c 70 65 72 20 4d   DbType Helper M
18ef0 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 70 75  ethods..      pu
18f00 62 6c 69 63 20 62 6f 6f 6c 20 43 6f 6e 74 61 69  blic bool Contai
18f10 6e 73 4b 65 79 28 44 62 54 79 70 65 20 6b 65 79  nsKey(DbType key
18f20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
18f30 20 20 20 20 20 20 69 66 20 28 72 65 76 65 72 73        if (revers
18f40 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
18f50 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
18f60 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
18f70 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 76 65       return reve
18f80 72 73 65 2e 43 6f 6e 74 61 69 6e 73 4b 65 79 28  rse.ContainsKey(
18f90 6b 65 79 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  key);..      }..
18fa0 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
18fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ff0 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 75 62 6c 69  /....      publi
19000 63 20 62 6f 6f 6c 20 54 72 79 47 65 74 56 61 6c  c bool TryGetVal
19010 75 65 28 44 62 54 79 70 65 20 6b 65 79 2c 20 6f  ue(DbType key, o
19020 75 74 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ut SQLiteDbTypeM
19030 61 70 70 69 6e 67 20 76 61 6c 75 65 29 0d 0a 20  apping value).. 
19040 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
19050 20 20 69 66 20 28 72 65 76 65 72 73 65 20 3d 3d    if (reverse ==
19060 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
19070 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
19080 20 20 20 76 61 6c 75 65 20 3d 20 6e 75 6c 6c 3b     value = null;
19090 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
190a0 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20  return false;.. 
190b0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
190c0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72          return r
190d0 65 76 65 72 73 65 2e 54 72 79 47 65 74 56 61 6c  everse.TryGetVal
190e0 75 65 28 6b 65 79 2c 20 6f 75 74 20 76 61 6c 75  ue(key, out valu
190f0 65 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  e);..      }....
19100 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
19110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
19150 0a 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20  ...      public 
19160 62 6f 6f 6c 20 52 65 6d 6f 76 65 28 44 62 54 79  bool Remove(DbTy
19170 70 65 20 6b 65 79 29 0d 0a 20 20 20 20 20 20 7b  pe key)..      {
19180 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
19190 72 65 76 65 72 73 65 20 3d 3d 20 6e 75 6c 6c 29  reverse == null)
191a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
191b0 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
191c0 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
191d0 6e 20 72 65 76 65 72 73 65 2e 52 65 6d 6f 76 65  n reverse.Remove
191e0 28 6b 65 79 29 3b 0d 0a 20 20 20 20 20 20 7d 0d  (key);..      }.
191f0 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f  .      #endregio
19200 6e 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 2f  n..  }....  ////
19210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19250 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 69  /////////....  i
19260 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63  nternal sealed c
19270 6c 61 73 73 20 53 51 4c 69 74 65 44 62 54 79 70  lass SQLiteDbTyp
19280 65 4d 61 70 70 69 6e 67 0d 0a 20 20 7b 0d 0a 20  eMapping..  {.. 
19290 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69     internal SQLi
192a0 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
192b0 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e 67  ..        string
192c0 20 6e 65 77 54 79 70 65 4e 61 6d 65 2c 0d 0a 20   newTypeName,.. 
192d0 20 20 20 20 20 20 20 44 62 54 79 70 65 20 6e 65         DbType ne
192e0 77 44 61 74 61 54 79 70 65 2c 0d 0a 20 20 20 20  wDataType,..    
192f0 20 20 20 20 62 6f 6f 6c 20 6e 65 77 50 72 69 6d      bool newPrim
19300 61 72 79 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a  ary..        )..
19310 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 74 79 70      {..      typ
19320 65 4e 61 6d 65 20 3d 20 6e 65 77 54 79 70 65 4e  eName = newTypeN
19330 61 6d 65 3b 0d 0a 20 20 20 20 20 20 64 61 74 61  ame;..      data
19340 54 79 70 65 20 3d 20 6e 65 77 44 61 74 61 54 79  Type = newDataTy
19350 70 65 3b 0d 0a 20 20 20 20 20 20 70 72 69 6d 61  pe;..      prima
19360 72 79 20 3d 20 6e 65 77 50 72 69 6d 61 72 79 3b  ry = newPrimary;
19370 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 69  ..    }....    i
19380 6e 74 65 72 6e 61 6c 20 73 74 72 69 6e 67 20 74  nternal string t
19390 79 70 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 69 6e  ypeName;..    in
193a0 74 65 72 6e 61 6c 20 44 62 54 79 70 65 20 64 61  ternal DbType da
193b0 74 61 54 79 70 65 3b 0d 0a 20 20 20 20 69 6e 74  taType;..    int
193c0 65 72 6e 61 6c 20 62 6f 6f 6c 20 70 72 69 6d 61  ernal bool prima
193d0 72 79 3b 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 6e  ry;..  }....  in
193e0 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c  ternal sealed cl
193f0 61 73 73 20 54 79 70 65 4e 61 6d 65 53 74 72 69  ass TypeNameStri
19400 6e 67 43 6f 6d 70 61 72 65 72 20 3a 20 49 45 71  ngComparer : IEq
19410 75 61 6c 69 74 79 43 6f 6d 70 61 72 65 72 3c 73  ualityComparer<s
19420 74 72 69 6e 67 3e 2c 20 49 43 6f 6d 70 61 72 65  tring>, ICompare
19430 72 3c 73 74 72 69 6e 67 3e 0d 0a 20 20 7b 0d 0a  r<string>..  {..
19440 20 20 20 20 23 72 65 67 69 6f 6e 20 49 45 71 75      #region IEqu
19450 61 6c 69 74 79 43 6f 6d 70 61 72 65 72 3c 73 74  alityComparer<st
19460 72 69 6e 67 3e 20 4d 65 6d 62 65 72 73 0d 0a 20  ring> Members.. 
19470 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 45     public bool E
19480 71 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 73 74  quals(..      st
19490 72 69 6e 67 20 6c 65 66 74 2c 0d 0a 20 20 20 20  ring left,..    
194a0 20 20 73 74 72 69 6e 67 20 72 69 67 68 74 0d 0a    string right..
194b0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a        )..    {..
194c0 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 74 72        return Str
194d0 69 6e 67 2e 45 71 75 61 6c 73 28 6c 65 66 74 2c  ing.Equals(left,
194e0 20 72 69 67 68 74 2c 20 53 74 72 69 6e 67 43 6f   right, StringCo
194f0 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c  mparison.Ordinal
19500 49 67 6e 6f 72 65 43 61 73 65 29 3b 0d 0a 20 20  IgnoreCase);..  
19510 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f    }....    /////
19520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19560 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 70 75  //////....    pu
19570 62 6c 69 63 20 69 6e 74 20 47 65 74 48 61 73 68  blic int GetHash
19580 43 6f 64 65 28 0d 0a 20 20 20 20 20 20 73 74 72  Code(..      str
19590 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20 20 20  ing value..     
195a0 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20   )..    {..     
195b0 20 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 20 4e 4f   //..      // NO
195c0 54 45 3a 20 54 68 65 20 6f 6e 6c 79 20 74 68 69  TE: The only thi
195d0 6e 67 20 74 68 61 74 20 77 65 20 6d 75 73 74 20  ng that we must 
195e0 67 75 61 72 61 6e 74 65 65 20 68 65 72 65 2c 20  guarantee here, 
195f0 61 63 63 6f 72 64 69 6e 67 0d 0a 20 20 20 20 20  according..     
19600 20 2f 2f 20 20 20 20 20 20 20 74 6f 20 74 68 65   //       to the
19610 20 4d 53 44 4e 20 64 6f 63 75 6d 65 6e 74 61 74   MSDN documentat
19620 69 6f 6e 20 66 6f 72 20 49 45 71 75 61 6c 69 74  ion for IEqualit
19630 79 43 6f 6d 70 61 72 65 72 2c 20 69 73 0d 0a 20  yComparer, is.. 
19640 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68       //       th
19650 61 74 20 66 6f 72 20 74 77 6f 20 67 69 76 65 6e  at for two given
19660 20 73 74 72 69 6e 67 73 2c 20 69 66 20 45 71 75   strings, if Equ
19670 61 6c 73 20 72 65 74 75 72 6e 20 74 72 75 65 20  als return true 
19680 74 68 65 6e 0d 0a 20 20 20 20 20 20 2f 2f 20 20  then..      //  
19690 20 20 20 20 20 74 68 65 20 74 77 6f 20 73 74 72       the two str
196a0 69 6e 67 73 20 6d 75 73 74 20 68 61 73 68 20 74  ings must hash t
196b0 6f 20 74 68 65 20 73 61 6d 65 20 76 61 6c 75 65  o the same value
196c0 2e 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20  ...      //..   
196d0 20 20 20 69 66 20 28 76 61 6c 75 65 20 21 3d 20     if (value != 
196e0 6e 75 6c 6c 29 0d 0a 23 69 66 20 21 50 4c 41 54  null)..#if !PLAT
196f0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
19700 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 72  EWORK..        r
19710 65 74 75 72 6e 20 76 61 6c 75 65 2e 54 6f 4c 6f  eturn value.ToLo
19720 77 65 72 49 6e 76 61 72 69 61 6e 74 28 29 2e 47  werInvariant().G
19730 65 74 48 61 73 68 43 6f 64 65 28 29 3b 0d 0a 23  etHashCode();..#
19740 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 72 65  else..        re
19750 74 75 72 6e 20 76 61 6c 75 65 2e 54 6f 4c 6f 77  turn value.ToLow
19760 65 72 28 29 2e 47 65 74 48 61 73 68 43 6f 64 65  er().GetHashCode
19770 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ();..#endif..   
19780 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
19790 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d   throw new Argum
197a0 65 6e 74 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e  entNullException
197b0 28 22 76 61 6c 75 65 22 29 3b 0d 0a 20 20 20 20  ("value");..    
197c0 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  }..    #endregio
197d0 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
197e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
197f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19820 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
19830 69 6f 6e 20 49 43 6f 6d 70 61 72 65 72 3c 73 74  ion IComparer<st
19840 72 69 6e 67 3e 20 4d 65 6d 62 65 72 73 0d 0a 20  ring> Members.. 
19850 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 43 6f     public int Co
19860 6d 70 61 72 65 28 0d 0a 20 20 20 20 20 20 73 74  mpare(..      st
19870 72 69 6e 67 20 78 2c 0d 0a 20 20 20 20 20 20 73  ring x,..      s
19880 74 72 69 6e 67 20 79 0d 0a 20 20 20 20 20 20 29  tring y..      )
19890 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 69  ..    {..      i
198a0 66 20 28 28 78 20 3d 3d 20 6e 75 6c 6c 29 20 26  f ((x == null) &
198b0 26 20 28 79 20 3d 3d 20 6e 75 6c 6c 29 29 0d 0a  & (y == null))..
198c0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 30          return 0
198d0 3b 0d 0a 20 20 20 20 20 20 65 6c 73 65 20 69 66  ;..      else if
198e0 20 28 78 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20   (x == null)..  
198f0 20 20 20 20 20 20 72 65 74 75 72 6e 20 2d 31 3b        return -1;
19900 0d 0a 20 20 20 20 20 20 65 6c 73 65 20 69 66 20  ..      else if 
19910 28 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  (y == null)..   
19920 20 20 20 20 20 72 65 74 75 72 6e 20 31 3b 0d 0a       return 1;..
19930 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
19940 20 20 20 20 72 65 74 75 72 6e 20 78 2e 43 6f 6d      return x.Com
19950 70 61 72 65 54 6f 28 79 29 3b 0d 0a 20 20 20 20  pareTo(y);..    
19960 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  }..    #endregio
19970 6e 0d 0a 20 20 7d 0d 0a 7d 0d 0a                 n..  }..}..