System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 0e8cc1f0c6236e468c8531e1f0b031a57329363e:


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 42 79 74 65 5b    {..      Byte[
1590: 5d 20 62 79 74 65 41 72 72 61 79 3b 0d 0a 20 20  ] byteArray;..  
15a0: 20 20 20 20 69 6e 74 20 6e 6c 65 6e 20 3d 20 5f      int nlen = _
15b0: 75 74 66 38 2e 47 65 74 42 79 74 65 43 6f 75 6e  utf8.GetByteCoun
15c0: 74 28 73 6f 75 72 63 65 54 65 78 74 29 20 2b 20  t(sourceText) + 
15d0: 31 3b 0d 0a 0d 0a 20 20 20 20 20 20 62 79 74 65  1;....      byte
15e0: 41 72 72 61 79 20 3d 20 6e 65 77 20 62 79 74 65  Array = new byte
15f0: 5b 6e 6c 65 6e 5d 3b 0d 0a 20 20 20 20 20 20 6e  [nlen];..      n
1600: 6c 65 6e 20 3d 20 5f 75 74 66 38 2e 47 65 74 42  len = _utf8.GetB
1610: 79 74 65 73 28 73 6f 75 72 63 65 54 65 78 74 2c  ytes(sourceText,
1620: 20 30 2c 20 73 6f 75 72 63 65 54 65 78 74 2e 4c   0, sourceText.L
1630: 65 6e 67 74 68 2c 20 62 79 74 65 41 72 72 61 79  ength, byteArray
1640: 2c 20 30 29 3b 0d 0a 20 20 20 20 20 20 62 79 74  , 0);..      byt
1650: 65 41 72 72 61 79 5b 6e 6c 65 6e 5d 20 3d 20 30  eArray[nlen] = 0
1660: 3b 0d 0a 0d 0a 20 20 20 20 20 20 72 65 74 75 72  ;....      retur
1670: 6e 20 62 79 74 65 41 72 72 61 79 3b 0d 0a 20 20  n byteArray;..  
1680: 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c    }....    /// <
1690: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
16a0: 2f 20 43 6f 6e 76 65 72 74 20 61 20 44 61 74 65  / Convert a Date
16b0: 54 69 6d 65 20 74 6f 20 61 20 55 54 46 2d 38 20  Time to a UTF-8 
16c0: 65 6e 63 6f 64 65 64 2c 20 7a 65 72 6f 2d 74 65  encoded, zero-te
16d0: 72 6d 69 6e 61 74 65 64 20 62 79 74 65 20 61 72  rminated byte ar
16e0: 72 61 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ray...    /// </
16f0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
1700: 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20  / <remarks>..   
1710: 20 2f 2f 2f 20 54 68 69 73 20 66 75 6e 63 74 69   /// This functi
1720: 6f 6e 20 69 73 20 61 20 63 6f 6e 76 65 6e 69 65  on is a convenie
1730: 6e 63 65 20 66 75 6e 63 74 69 6f 6e 2c 20 77 68  nce function, wh
1740: 69 63 68 20 66 69 72 73 74 20 63 61 6c 6c 73 20  ich first calls 
1750: 54 6f 53 74 72 69 6e 67 28 29 20 6f 6e 20 74 68  ToString() on th
1760: 65 20 44 61 74 65 54 69 6d 65 2c 20 61 6e 64 20  e DateTime, and 
1770: 74 68 65 6e 20 63 61 6c 6c 73 20 54 6f 55 54 46  then calls ToUTF
1780: 38 28 29 20 77 69 74 68 20 74 68 65 0d 0a 20 20  8() with the..  
1790: 20 20 2f 2f 2f 20 73 74 72 69 6e 67 20 72 65 73    /// string res
17a0: 75 6c 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ult...    /// </
17b0: 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f  remarks>..    //
17c0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64  / <param name="d
17d0: 61 74 65 54 69 6d 65 56 61 6c 75 65 22 3e 54 68  ateTimeValue">Th
17e0: 65 20 44 61 74 65 54 69 6d 65 20 74 6f 20 63 6f  e DateTime to co
17f0: 6e 76 65 72 74 2e 3c 2f 70 61 72 61 6d 3e 0d 0a  nvert.</param>..
1800: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
1810: 3e 54 68 65 20 55 54 46 2d 38 20 65 6e 63 6f 64  >The UTF-8 encod
1820: 65 64 20 73 74 72 69 6e 67 2c 20 69 6e 63 6c 75  ed string, inclu
1830: 64 69 6e 67 20 61 20 30 20 74 65 72 6d 69 6e 61  ding a 0 termina
1840: 74 69 6e 67 20 62 79 74 65 20 61 74 20 74 68 65  ting byte at the
1850: 20 65 6e 64 20 6f 66 20 74 68 65 20 61 72 72 61   end of the arra
1860: 79 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  y.</returns>..  
1870: 20 20 70 75 62 6c 69 63 20 62 79 74 65 5b 5d 20    public byte[] 
1880: 54 6f 55 54 46 38 28 44 61 74 65 54 69 6d 65 20  ToUTF8(DateTime 
1890: 64 61 74 65 54 69 6d 65 56 61 6c 75 65 29 0d 0a  dateTimeValue)..
18a0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 72 65 74      {..      ret
18b0: 75 72 6e 20 54 6f 55 54 46 38 28 54 6f 53 74 72  urn ToUTF8(ToStr
18c0: 69 6e 67 28 64 61 74 65 54 69 6d 65 56 61 6c 75  ing(dateTimeValu
18d0: 65 29 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  e));..    }.... 
18e0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
18f0: 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72  ..    /// Conver
1900: 74 73 20 61 20 55 54 46 2d 38 20 65 6e 63 6f 64  ts a UTF-8 encod
1910: 65 64 20 49 6e 74 50 74 72 20 6f 66 20 74 68 65  ed IntPtr of the
1920: 20 73 70 65 63 69 66 69 65 64 20 6c 65 6e 67 74   specified lengt
1930: 68 20 69 6e 74 6f 20 61 20 2e 4e 45 54 20 73 74  h into a .NET st
1940: 72 69 6e 67 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ring..    /// </
1950: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
1960: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e  / <param name="n
1970: 61 74 69 76 65 73 74 72 69 6e 67 22 3e 54 68 65  ativestring">The
1980: 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
1990: 6d 65 6d 6f 72 79 20 77 68 65 72 65 20 74 68 65  memory where the
19a0: 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20 69 73   UTF-8 string is
19b0: 20 65 6e 63 6f 64 65 64 3c 2f 70 61 72 61 6d 3e   encoded</param>
19c0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
19d0: 20 6e 61 6d 65 3d 22 6e 61 74 69 76 65 73 74 72   name="nativestr
19e0: 69 6e 67 6c 65 6e 22 3e 54 68 65 20 6e 75 6d 62  inglen">The numb
19f0: 65 72 20 6f 66 20 62 79 74 65 73 20 74 6f 20 64  er of bytes to d
1a00: 65 63 6f 64 65 3c 2f 70 61 72 61 6d 3e 0d 0a 20  ecode</param>.. 
1a10: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
1a20: 41 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e  A string contain
1a30: 69 6e 67 20 74 68 65 20 74 72 61 6e 73 6c 61 74  ing the translat
1a40: 65 64 20 63 68 61 72 61 63 74 65 72 28 73 29 3c  ed character(s)<
1a50: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70  /returns>..    p
1a60: 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 73 74  ublic virtual st
1a70: 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 49 6e  ring ToString(In
1a80: 74 50 74 72 20 6e 61 74 69 76 65 73 74 72 69 6e  tPtr nativestrin
1a90: 67 2c 20 69 6e 74 20 6e 61 74 69 76 65 73 74 72  g, int nativestr
1aa0: 69 6e 67 6c 65 6e 29 0d 0a 20 20 20 20 7b 0d 0a  inglen)..    {..
1ab0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 55 54 46        return UTF
1ac0: 38 54 6f 53 74 72 69 6e 67 28 6e 61 74 69 76 65  8ToString(native
1ad0: 73 74 72 69 6e 67 2c 20 6e 61 74 69 76 65 73 74  string, nativest
1ae0: 72 69 6e 67 6c 65 6e 29 3b 0d 0a 20 20 20 20 7d  ringlen);..    }
1af0: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
1b00: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43  mary>..    /// C
1b10: 6f 6e 76 65 72 74 73 20 61 20 55 54 46 2d 38 20  onverts a UTF-8 
1b20: 65 6e 63 6f 64 65 64 20 49 6e 74 50 74 72 20 6f  encoded IntPtr o
1b30: 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  f the specified 
1b40: 6c 65 6e 67 74 68 20 69 6e 74 6f 20 61 20 2e 4e  length into a .N
1b50: 45 54 20 73 74 72 69 6e 67 0d 0a 20 20 20 20 2f  ET string..    /
1b60: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1b70: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1b80: 6d 65 3d 22 6e 61 74 69 76 65 73 74 72 69 6e 67  me="nativestring
1b90: 22 3e 54 68 65 20 70 6f 69 6e 74 65 72 20 74 6f  ">The pointer to
1ba0: 20 74 68 65 20 6d 65 6d 6f 72 79 20 77 68 65 72   the memory wher
1bb0: 65 20 74 68 65 20 55 54 46 2d 38 20 73 74 72 69  e the UTF-8 stri
1bc0: 6e 67 20 69 73 20 65 6e 63 6f 64 65 64 3c 2f 70  ng is encoded</p
1bd0: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
1be0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 74 69  param name="nati
1bf0: 76 65 73 74 72 69 6e 67 6c 65 6e 22 3e 54 68 65  vestringlen">The
1c00: 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73   number of bytes
1c10: 20 74 6f 20 64 65 63 6f 64 65 3c 2f 70 61 72 61   to decode</para
1c20: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
1c30: 75 72 6e 73 3e 41 20 73 74 72 69 6e 67 20 63 6f  urns>A string co
1c40: 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 74 72 61  ntaining the tra
1c50: 6e 73 6c 61 74 65 64 20 63 68 61 72 61 63 74 65  nslated characte
1c60: 72 28 73 29 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  r(s)</returns>..
1c70: 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
1c80: 63 20 73 74 72 69 6e 67 20 55 54 46 38 54 6f 53  c string UTF8ToS
1c90: 74 72 69 6e 67 28 49 6e 74 50 74 72 20 6e 61 74  tring(IntPtr nat
1ca0: 69 76 65 73 74 72 69 6e 67 2c 20 69 6e 74 20 6e  ivestring, int n
1cb0: 61 74 69 76 65 73 74 72 69 6e 67 6c 65 6e 29 0d  ativestringlen).
1cc0: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 69 66  .    {..      if
1cd0: 20 28 6e 61 74 69 76 65 73 74 72 69 6e 67 20 3d   (nativestring =
1ce0: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20 7c 7c  = IntPtr.Zero ||
1cf0: 20 6e 61 74 69 76 65 73 74 72 69 6e 67 6c 65 6e   nativestringlen
1d00: 20 3d 3d 20 30 29 20 72 65 74 75 72 6e 20 53 74   == 0) return St
1d10: 72 69 6e 67 2e 45 6d 70 74 79 3b 0d 0a 20 20 20  ring.Empty;..   
1d20: 20 20 20 69 66 20 28 6e 61 74 69 76 65 73 74 72     if (nativestr
1d30: 69 6e 67 6c 65 6e 20 3c 20 30 29 0d 0a 20 20 20  inglen < 0)..   
1d40: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 6e 61     {..        na
1d50: 74 69 76 65 73 74 72 69 6e 67 6c 65 6e 20 3d 20  tivestringlen = 
1d60: 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 77 68  0;....        wh
1d70: 69 6c 65 20 28 4d 61 72 73 68 61 6c 2e 52 65 61  ile (Marshal.Rea
1d80: 64 42 79 74 65 28 6e 61 74 69 76 65 73 74 72 69  dByte(nativestri
1d90: 6e 67 2c 20 6e 61 74 69 76 65 73 74 72 69 6e 67  ng, nativestring
1da0: 6c 65 6e 29 20 21 3d 20 30 29 0d 0a 20 20 20 20  len) != 0)..    
1db0: 20 20 20 20 20 20 6e 61 74 69 76 65 73 74 72 69        nativestri
1dc0: 6e 67 6c 65 6e 2b 2b 3b 0d 0a 0d 0a 20 20 20 20  nglen++;....    
1dd0: 20 20 20 20 69 66 20 28 6e 61 74 69 76 65 73 74      if (nativest
1de0: 72 69 6e 67 6c 65 6e 20 3d 3d 20 30 29 20 72 65  ringlen == 0) re
1df0: 74 75 72 6e 20 53 74 72 69 6e 67 2e 45 6d 70 74  turn String.Empt
1e00: 79 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  y;..      }.... 
1e10: 20 20 20 20 20 62 79 74 65 5b 5d 20 62 79 74 65       byte[] byte
1e20: 41 72 72 61 79 20 3d 20 6e 65 77 20 62 79 74 65  Array = new byte
1e30: 5b 6e 61 74 69 76 65 73 74 72 69 6e 67 6c 65 6e  [nativestringlen
1e40: 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 4d 61 72 73  ];....      Mars
1e50: 68 61 6c 2e 43 6f 70 79 28 6e 61 74 69 76 65 73  hal.Copy(natives
1e60: 74 72 69 6e 67 2c 20 62 79 74 65 41 72 72 61 79  tring, byteArray
1e70: 2c 20 30 2c 20 6e 61 74 69 76 65 73 74 72 69 6e  , 0, nativestrin
1e80: 67 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  glen);....      
1e90: 72 65 74 75 72 6e 20 5f 75 74 66 38 2e 47 65 74  return _utf8.Get
1ea0: 53 74 72 69 6e 67 28 62 79 74 65 41 72 72 61 79  String(byteArray
1eb0: 2c 20 30 2c 20 6e 61 74 69 76 65 73 74 72 69 6e  , 0, nativestrin
1ec0: 67 6c 65 6e 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20  glen);..    }.. 
1ed0: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
1ee0: 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
1ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f10: 2f 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: 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
1f40: 44 61 74 65 54 69 6d 65 20 43 6f 6e 76 65 72 73  DateTime Convers
1f50: 69 6f 6e 20 46 75 6e 63 74 69 6f 6e 73 0d 0a 20  ion Functions.. 
1f60: 20 20 20 23 72 65 67 69 6f 6e 20 4e 65 77 20 4a     #region New J
1f70: 75 6c 69 61 6e 20 44 61 79 20 43 6f 6e 76 65 72  ulian Day Conver
1f80: 73 69 6f 6e 20 4d 65 74 68 6f 64 73 0d 0a 20 20  sion Methods..  
1f90: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1fa0: 0a 20 20 20 20 2f 2f 2f 20 43 68 65 63 6b 73 20  .    /// Checks 
1fb0: 69 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  if the specified
1fc0: 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 36   <see cref="Int6
1fd0: 34 22 20 2f 3e 20 69 73 20 77 69 74 68 69 6e 20  4" /> is within 
1fe0: 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 73 75 70  the..    /// sup
1ff0: 70 6f 72 74 65 64 20 72 61 6e 67 65 20 66 6f 72  ported range for
2000: 20 61 20 4a 75 6c 69 61 6e 20 44 61 79 20 76 61   a Julian Day va
2010: 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  lue...    /// </
2020: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
2030: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6a  / <param name="j
2040: 64 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  d">..    /// The
2050: 20 4a 75 6c 69 61 6e 20 44 61 79 20 76 61 6c 75   Julian Day valu
2060: 65 20 74 6f 20 63 68 65 63 6b 2e 0d 0a 20 20 20  e to check...   
2070: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2080: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
2090: 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65  ..    /// Non-ze
20a0: 72 6f 20 69 66 20 74 68 65 20 73 70 65 63 69 66  ro if the specif
20b0: 69 65 64 20 4a 75 6c 69 61 6e 20 44 61 79 20 76  ied Julian Day v
20c0: 61 6c 75 65 20 69 73 20 69 6e 20 74 68 65 20 73  alue is in the s
20d0: 75 70 70 6f 72 74 65 64 0d 0a 20 20 20 20 2f 2f  upported..    //
20e0: 2f 20 72 61 6e 67 65 3b 20 6f 74 68 65 72 77 69  / range; otherwi
20f0: 73 65 2c 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 2f  se, zero...    /
2100: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
2110: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
2120: 63 20 62 6f 6f 6c 20 69 73 56 61 6c 69 64 4a 64  c bool isValidJd
2130: 28 0d 0a 20 20 20 20 20 20 20 20 6c 6f 6e 67 20  (..        long 
2140: 6a 64 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20  jd..        ).. 
2150: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65     {..        re
2160: 74 75 72 6e 20 28 28 6a 64 20 3e 3d 20 4d 69 6e  turn ((jd >= Min
2170: 69 6d 75 6d 4a 64 29 20 26 26 20 28 6a 64 20 3c  imumJd) && (jd <
2180: 3d 20 4d 61 78 69 6d 75 6d 4a 64 29 29 3b 0d 0a  = MaximumJd));..
2190: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
21a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20  ////////....    
21f0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2200: 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20     /// Converts 
2210: 61 20 4a 75 6c 69 61 6e 20 44 61 79 20 76 61 6c  a Julian Day val
2220: 75 65 20 66 72 6f 6d 20 61 20 3c 73 65 65 20 63  ue from a <see c
2230: 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e 20  ref="Double" /> 
2240: 74 6f 20 61 6e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  to an..    /// <
2250: 73 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22  see cref="Int64"
2260: 20 2f 3e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f   />...    /// </
2270: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
2280: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6a  / <param name="j
2290: 75 6c 69 61 6e 44 61 79 22 3e 0d 0a 20 20 20 20  ulianDay">..    
22a0: 2f 2f 2f 20 54 68 65 20 4a 75 6c 69 61 6e 20 44  /// The Julian D
22b0: 61 79 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f  ay <see cref="Do
22c0: 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65 20 74  uble" /> value t
22d0: 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20  o convert...    
22e0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
22f0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
2300: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 72 65 73  .    /// The res
2310: 75 6c 74 69 6e 67 20 4a 75 6c 69 61 6e 20 44 61  ulting Julian Da
2320: 79 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74  y <see cref="Int
2330: 36 34 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20  64" /> value... 
2340: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
2350: 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73  >..    private s
2360: 74 61 74 69 63 20 6c 6f 6e 67 20 44 6f 75 62 6c  tatic long Doubl
2370: 65 54 6f 4a 64 28 0d 0a 20 20 20 20 20 20 20 20  eToJd(..        
2380: 64 6f 75 62 6c 65 20 6a 75 6c 69 61 6e 44 61 79  double julianDay
2390: 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20  ..        )..   
23a0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75   {..        retu
23b0: 72 6e 20 28 6c 6f 6e 67 29 28 6a 75 6c 69 61 6e  rn (long)(julian
23c0: 44 61 79 20 2a 20 38 36 34 30 30 30 30 30 2e 30  Day * 86400000.0
23d0: 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  );..    }....   
23e0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
23f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2430: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2440: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65  >..    /// Conve
2450: 72 74 73 20 61 20 4a 75 6c 69 61 6e 20 44 61 79  rts a Julian Day
2460: 20 76 61 6c 75 65 20 66 72 6f 6d 20 61 6e 20 3c   value from an <
2470: 73 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22  see cref="Int64"
2480: 20 2f 3e 20 74 6f 20 61 0d 0a 20 20 20 20 2f 2f   /> to a..    //
2490: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75  / <see cref="Dou
24a0: 62 6c 65 22 20 2f 3e 2e 0d 0a 20 20 20 20 2f 2f  ble" />...    //
24b0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
24c0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
24d0: 65 3d 22 6a 64 22 3e 0d 0a 20 20 20 20 2f 2f 2f  e="jd">..    ///
24e0: 20 54 68 65 20 4a 75 6c 69 61 6e 20 44 61 79 20   The Julian Day 
24f0: 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34  <see cref="Int64
2500: 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 63 6f  " /> value to co
2510: 6e 76 65 72 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20  nvert...    /// 
2520: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
2530: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
2540: 20 2f 2f 2f 20 54 68 65 20 72 65 73 75 6c 74 69   /// The resulti
2550: 6e 67 20 4a 75 6c 69 61 6e 20 44 61 79 20 3c 73  ng Julian Day <s
2560: 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22  ee cref="Double"
2570: 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20   /> value...    
2580: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
2590: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
25a0: 69 63 20 64 6f 75 62 6c 65 20 4a 64 54 6f 44 6f  ic double JdToDo
25b0: 75 62 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 6c  uble(..        l
25c0: 6f 6e 67 20 6a 64 0d 0a 20 20 20 20 20 20 20 20  ong jd..        
25d0: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
25e0: 20 20 72 65 74 75 72 6e 20 28 64 6f 75 62 6c 65    return (double
25f0: 29 28 6a 64 20 2f 20 38 36 34 30 30 30 30 30 2e  )(jd / 86400000.
2600: 30 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  0);..    }....  
2610: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2660: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
2670: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76  y>..    /// Conv
2680: 65 72 74 73 20 61 20 4a 75 6c 69 61 6e 20 44 61  erts a Julian Da
2690: 79 20 76 61 6c 75 65 20 74 6f 20 61 20 3c 73 65  y value to a <se
26a0: 65 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d 65  e cref="DateTime
26b0: 22 20 2f 3e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 54  " />...    /// T
26c0: 68 69 73 20 6d 65 74 68 6f 64 20 77 61 73 20 74  his method was t
26d0: 72 61 6e 73 6c 61 74 65 64 20 66 72 6f 6d 20 74  ranslated from t
26e0: 68 65 20 22 63 6f 6d 70 75 74 65 59 4d 44 22 20  he "computeYMD" 
26f0: 66 75 6e 63 74 69 6f 6e 20 69 6e 20 74 68 65 0d  function in the.
2700: 0a 20 20 20 20 2f 2f 2f 20 22 64 61 74 65 2e 63  .    /// "date.c
2710: 22 20 66 69 6c 65 20 62 65 6c 6f 6e 67 69 6e 67  " file belonging
2720: 20 74 6f 20 74 68 65 20 53 51 4c 69 74 65 20 63   to the SQLite c
2730: 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ore library...  
2740: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2750: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
2760: 20 6e 61 6d 65 3d 22 6a 64 22 3e 0d 0a 20 20 20   name="jd">..   
2770: 20 2f 2f 2f 20 54 68 65 20 4a 75 6c 69 61 6e 20   /// The Julian 
2780: 44 61 79 20 76 61 6c 75 65 20 74 6f 20 63 6f 6e  Day value to con
2790: 76 65 72 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  vert...    /// <
27a0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
27b0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 62 61   <param name="ba
27c0: 64 56 61 6c 75 65 22 3e 0d 0a 20 20 20 20 2f 2f  dValue">..    //
27d0: 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
27e0: 22 44 61 74 65 54 69 6d 65 22 20 2f 3e 20 76 61  "DateTime" /> va
27f0: 6c 75 65 20 74 6f 20 72 65 74 75 72 6e 20 69 6e  lue to return in
2800: 20 74 68 65 20 65 76 65 6e 74 20 74 68 61 74 20   the event that 
2810: 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 4a 75 6c  the..    /// Jul
2820: 69 61 6e 20 44 61 79 20 69 73 20 6f 75 74 20 6f  ian Day is out o
2830: 66 20 74 68 65 20 73 75 70 70 6f 72 74 65 64 20  f the supported 
2840: 72 61 6e 67 65 2e 20 20 49 66 20 74 68 69 73 20  range.  If this 
2850: 76 61 6c 75 65 20 69 73 20 6e 75 6c 6c 2c 0d 0a  value is null,..
2860: 20 20 20 20 2f 2f 2f 20 61 6e 20 65 78 63 65 70      /// an excep
2870: 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 74 68 72  tion will be thr
2880: 6f 77 6e 20 69 6e 73 74 65 61 64 2e 0d 0a 20 20  own instead...  
2890: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
28a0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
28b0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 20 3c 73 65  >..    /// A <se
28c0: 65 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d 65  e cref="DateTime
28d0: 22 20 2f 3e 20 76 61 6c 75 65 20 74 68 61 74 20  " /> value that 
28e0: 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 79 65 61  contains the yea
28f0: 72 2c 20 6d 6f 6e 74 68 2c 20 61 6e 64 0d 0a 20  r, month, and.. 
2900: 20 20 20 2f 2f 2f 20 64 61 79 20 76 61 6c 75 65     /// day value
2910: 73 20 74 68 61 74 20 61 72 65 20 63 6c 6f 73 65  s that are close
2920: 73 74 20 74 6f 20 74 68 65 20 73 70 65 63 69 66  st to the specif
2930: 69 65 64 20 4a 75 6c 69 61 6e 20 44 61 79 20 76  ied Julian Day v
2940: 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  alue...    /// <
2950: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70  /returns>..    p
2960: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 44 61  rivate static Da
2970: 74 65 54 69 6d 65 20 63 6f 6d 70 75 74 65 59 4d  teTime computeYM
2980: 44 28 0d 0a 20 20 20 20 20 20 20 20 6c 6f 6e 67  D(..        long
2990: 20 6a 64 2c 0d 0a 20 20 20 20 20 20 20 20 44 61   jd,..        Da
29a0: 74 65 54 69 6d 65 3f 20 62 61 64 56 61 6c 75 65  teTime? badValue
29b0: 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20  ..        )..   
29c0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28   {..        if (
29d0: 21 69 73 56 61 6c 69 64 4a 64 28 6a 64 29 29 0d  !isValidJd(jd)).
29e0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
29f0: 20 20 20 20 20 20 20 20 69 66 20 28 62 61 64 56          if (badV
2a00: 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  alue == null).. 
2a10: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
2a30: 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74  row new Argument
2a40: 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20 20  Exception(..    
2a50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a60: 22 4e 6f 74 20 61 20 73 75 70 70 6f 72 74 65 64  "Not a supported
2a70: 20 4a 75 6c 69 61 6e 20 44 61 79 20 76 61 6c 75   Julian Day valu
2a80: 65 2e 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  e.");..         
2a90: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2aa0: 20 20 20 20 72 65 74 75 72 6e 20 28 44 61 74 65      return (Date
2ab0: 54 69 6d 65 29 62 61 64 56 61 6c 75 65 3b 0d 0a  Time)badValue;..
2ac0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2ad0: 20 20 20 20 20 69 6e 74 20 5a 2c 20 41 2c 20 42       int Z, A, B
2ae0: 2c 20 43 2c 20 44 2c 20 45 2c 20 58 31 3b 0d 0a  , C, D, E, X1;..
2af0: 0d 0a 20 20 20 20 20 20 20 20 5a 20 3d 20 28 69  ..        Z = (i
2b00: 6e 74 29 28 28 6a 64 20 2b 20 34 33 32 30 30 30  nt)((jd + 432000
2b10: 30 30 29 20 2f 20 38 36 34 30 30 30 30 30 29 3b  00) / 86400000);
2b20: 0d 0a 20 20 20 20 20 20 20 20 41 20 3d 20 28 69  ..        A = (i
2b30: 6e 74 29 28 28 5a 20 2d 20 31 38 36 37 32 31 36  nt)((Z - 1867216
2b40: 2e 32 35 29 20 2f 20 33 36 35 32 34 2e 32 35 29  .25) / 36524.25)
2b50: 3b 0d 0a 20 20 20 20 20 20 20 20 41 20 3d 20 5a  ;..        A = Z
2b60: 20 2b 20 31 20 2b 20 41 20 2d 20 28 41 20 2f 20   + 1 + A - (A / 
2b70: 34 29 3b 0d 0a 20 20 20 20 20 20 20 20 42 20 3d  4);..        B =
2b80: 20 41 20 2b 20 31 35 32 34 3b 0d 0a 20 20 20 20   A + 1524;..    
2b90: 20 20 20 20 43 20 3d 20 28 69 6e 74 29 28 28 42      C = (int)((B
2ba0: 20 2d 20 31 32 32 2e 31 29 20 2f 20 33 36 35 2e   - 122.1) / 365.
2bb0: 32 35 29 3b 0d 0a 20 20 20 20 20 20 20 20 44 20  25);..        D 
2bc0: 3d 20 28 33 36 35 32 35 20 2a 20 43 29 20 2f 20  = (36525 * C) / 
2bd0: 31 30 30 3b 0d 0a 20 20 20 20 20 20 20 20 45 20  100;..        E 
2be0: 3d 20 28 69 6e 74 29 28 28 42 20 2d 20 44 29 20  = (int)((B - D) 
2bf0: 2f 20 33 30 2e 36 30 30 31 29 3b 0d 0a 20 20 20  / 30.6001);..   
2c00: 20 20 20 20 20 58 31 20 3d 20 28 69 6e 74 29 28       X1 = (int)(
2c10: 33 30 2e 36 30 30 31 20 2a 20 45 29 3b 0d 0a 0d  30.6001 * E);...
2c20: 0a 20 20 20 20 20 20 20 20 69 6e 74 20 64 61 79  .        int day
2c30: 2c 20 6d 6f 6e 74 68 2c 20 79 65 61 72 3b 0d 0a  , month, year;..
2c40: 0d 0a 20 20 20 20 20 20 20 20 64 61 79 20 3d 20  ..        day = 
2c50: 42 20 2d 20 44 20 2d 20 58 31 3b 0d 0a 20 20 20  B - D - X1;..   
2c60: 20 20 20 20 20 6d 6f 6e 74 68 20 3d 20 45 20 3c       month = E <
2c70: 20 31 34 20 3f 20 45 20 2d 20 31 20 3a 20 45 20   14 ? E - 1 : E 
2c80: 2d 20 31 33 3b 0d 0a 20 20 20 20 20 20 20 20 79  - 13;..        y
2c90: 65 61 72 20 3d 20 6d 6f 6e 74 68 20 3e 20 32 20  ear = month > 2 
2ca0: 3f 20 43 20 2d 20 34 37 31 36 20 3a 20 43 20 2d  ? C - 4716 : C -
2cb0: 20 34 37 31 35 3b 0d 0a 0d 0a 20 20 20 20 20 20   4715;....      
2cc0: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 7b    try..        {
2cd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
2ce0: 74 75 72 6e 20 6e 65 77 20 44 61 74 65 54 69 6d  turn new DateTim
2cf0: 65 28 79 65 61 72 2c 20 6d 6f 6e 74 68 2c 20 64  e(year, month, d
2d00: 61 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ay);..        }.
2d10: 0a 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a  .        catch..
2d20: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2d30: 20 20 20 20 20 20 20 69 66 20 28 62 61 64 56 61         if (badVa
2d40: 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  lue == null)..  
2d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
2d60: 72 6f 77 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  row;....        
2d70: 20 20 20 20 72 65 74 75 72 6e 20 28 44 61 74 65      return (Date
2d80: 54 69 6d 65 29 62 61 64 56 61 6c 75 65 3b 0d 0a  Time)badValue;..
2d90: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d          }..    }
2da0: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
2db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2df0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ///....    /// <
2e00: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
2e10: 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 4a 75 6c  / Converts a Jul
2e20: 69 61 6e 20 44 61 79 20 76 61 6c 75 65 20 74 6f  ian Day value to
2e30: 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61   a <see cref="Da
2e40: 74 65 54 69 6d 65 22 20 2f 3e 2e 0d 0a 20 20 20  teTime" />...   
2e50: 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64   /// This method
2e60: 20 77 61 73 20 74 72 61 6e 73 6c 61 74 65 64 20   was translated 
2e70: 66 72 6f 6d 20 74 68 65 20 22 63 6f 6d 70 75 74  from the "comput
2e80: 65 48 4d 53 22 20 66 75 6e 63 74 69 6f 6e 20 69  eHMS" function i
2e90: 6e 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 22  n the..    /// "
2ea0: 64 61 74 65 2e 63 22 20 66 69 6c 65 20 62 65 6c  date.c" file bel
2eb0: 6f 6e 67 69 6e 67 20 74 6f 20 74 68 65 20 53 51  onging to the SQ
2ec0: 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
2ed0: 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  y...    /// </su
2ee0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
2ef0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6a 64 22  <param name="jd"
2f00: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 4a  >..    /// The J
2f10: 75 6c 69 61 6e 20 44 61 79 20 76 61 6c 75 65 20  ulian Day value 
2f20: 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20  to convert...   
2f30: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2f40: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2f50: 6d 65 3d 22 62 61 64 56 61 6c 75 65 22 3e 0d 0a  me="badValue">..
2f60: 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
2f70: 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d 65 22   cref="DateTime"
2f80: 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 72 65 74   /> value to ret
2f90: 75 72 6e 20 69 6e 20 74 68 65 20 65 76 65 6e 74  urn in the event
2fa0: 20 74 68 61 74 20 74 68 65 0d 0a 20 20 20 20 2f   that the..    /
2fb0: 2f 2f 20 4a 75 6c 69 61 6e 20 44 61 79 20 76 61  // Julian Day va
2fc0: 6c 75 65 20 69 73 20 6f 75 74 20 6f 66 20 74 68  lue is out of th
2fd0: 65 20 73 75 70 70 6f 72 74 65 64 20 72 61 6e 67  e supported rang
2fe0: 65 2e 20 20 49 66 20 74 68 69 73 20 76 61 6c 75  e.  If this valu
2ff0: 65 20 69 73 0d 0a 20 20 20 20 2f 2f 2f 20 6e 75  e is..    /// nu
3000: 6c 6c 2c 20 61 6e 20 65 78 63 65 70 74 69 6f 6e  ll, an exception
3010: 20 77 69 6c 6c 20 62 65 20 74 68 72 6f 77 6e 20   will be thrown 
3020: 69 6e 73 74 65 61 64 2e 0d 0a 20 20 20 20 2f 2f  instead...    //
3030: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
3040: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
3050: 20 20 20 2f 2f 2f 20 41 20 3c 73 65 65 20 63 72     /// A <see cr
3060: 65 66 3d 22 44 61 74 65 54 69 6d 65 22 20 2f 3e  ef="DateTime" />
3070: 20 76 61 6c 75 65 20 74 68 61 74 20 63 6f 6e 74   value that cont
3080: 61 69 6e 73 20 74 68 65 20 68 6f 75 72 2c 20 6d  ains the hour, m
3090: 69 6e 75 74 65 2c 20 61 6e 64 0d 0a 20 20 20 20  inute, and..    
30a0: 2f 2f 2f 20 73 65 63 6f 6e 64 2c 20 61 6e 64 20  /// second, and 
30b0: 6d 69 6c 6c 69 73 65 63 6f 6e 64 20 76 61 6c 75  millisecond valu
30c0: 65 73 20 74 68 61 74 20 61 72 65 20 63 6c 6f 73  es that are clos
30d0: 65 73 74 20 74 6f 20 74 68 65 20 73 70 65 63 69  est to the speci
30e0: 66 69 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 4a 75  fied..    /// Ju
30f0: 6c 69 61 6e 20 44 61 79 20 76 61 6c 75 65 2e 0d  lian Day value..
3100: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72  .    /// </retur
3110: 6e 73 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65  ns>..    private
3120: 20 73 74 61 74 69 63 20 44 61 74 65 54 69 6d 65   static DateTime
3130: 20 63 6f 6d 70 75 74 65 48 4d 53 28 0d 0a 20 20   computeHMS(..  
3140: 20 20 20 20 20 20 6c 6f 6e 67 20 6a 64 2c 0d 0a        long jd,..
3150: 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65          DateTime
3160: 3f 20 62 61 64 56 61 6c 75 65 0d 0a 20 20 20 20  ? badValue..    
3170: 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20      )..    {..  
3180: 20 20 20 20 20 20 69 66 20 28 21 69 73 56 61 6c        if (!isVal
3190: 69 64 4a 64 28 6a 64 29 29 0d 0a 20 20 20 20 20  idJd(jd))..     
31a0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
31b0: 20 20 69 66 20 28 62 61 64 56 61 6c 75 65 20 3d    if (badValue =
31c0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
31d0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
31e0: 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65          throw ne
31f0: 77 20 41 72 67 75 6d 65 6e 74 45 78 63 65 70 74  w ArgumentExcept
3200: 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ion(..          
3210: 20 20 20 20 20 20 20 20 20 20 22 4e 6f 74 20 61            "Not a
3220: 20 73 75 70 70 6f 72 74 65 64 20 4a 75 6c 69 61   supported Julia
3230: 6e 20 44 61 79 20 76 61 6c 75 65 2e 22 29 3b 0d  n Day value.");.
3240: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
3250: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
3260: 74 75 72 6e 20 28 44 61 74 65 54 69 6d 65 29 62  turn (DateTime)b
3270: 61 64 56 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  adValue;..      
3280: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69    }....        i
3290: 6e 74 20 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  nt s;....       
32a0: 20 73 20 3d 20 28 69 6e 74 29 28 28 6a 64 20 2b   s = (int)((jd +
32b0: 20 34 33 32 30 30 30 30 30 29 20 25 20 38 36 34   43200000) % 864
32c0: 30 30 30 30 30 29 3b 0d 0a 0d 0a 20 20 20 20 20  00000);....     
32d0: 20 20 20 64 65 63 69 6d 61 6c 20 73 65 63 6f 6e     decimal secon
32e0: 64 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 73  ds;....        s
32f0: 65 63 6f 6e 64 73 20 3d 20 73 20 2f 20 31 30 30  econds = s / 100
3300: 30 2e 30 4d 3b 0d 0a 20 20 20 20 20 20 20 20 73  0.0M;..        s
3310: 20 3d 20 28 69 6e 74 29 73 65 63 6f 6e 64 73 3b   = (int)seconds;
3320: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  ....        int 
3330: 6d 69 6c 6c 69 73 65 63 6f 6e 64 20 3d 20 28 69  millisecond = (i
3340: 6e 74 29 28 28 73 65 63 6f 6e 64 73 20 2d 20 73  nt)((seconds - s
3350: 29 20 2a 20 31 30 30 30 2e 30 4d 29 3b 0d 0a 0d  ) * 1000.0M);...
3360: 0a 20 20 20 20 20 20 20 20 73 65 63 6f 6e 64 73  .        seconds
3370: 20 2d 3d 20 73 3b 0d 0a 0d 0a 20 20 20 20 20 20   -= s;....      
3380: 20 20 69 6e 74 20 68 6f 75 72 3b 0d 0a 0d 0a 20    int hour;.... 
3390: 20 20 20 20 20 20 20 68 6f 75 72 20 3d 20 73 20         hour = s 
33a0: 2f 20 33 36 30 30 3b 0d 0a 20 20 20 20 20 20 20  / 3600;..       
33b0: 20 73 20 2d 3d 20 68 6f 75 72 20 2a 20 33 36 30   s -= hour * 360
33c0: 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e  0;....        in
33d0: 74 20 6d 69 6e 75 74 65 3b 0d 0a 0d 0a 20 20 20  t minute;....   
33e0: 20 20 20 20 20 6d 69 6e 75 74 65 20 3d 20 73 20       minute = s 
33f0: 2f 20 36 30 3b 0d 0a 20 20 20 20 20 20 20 20 73  / 60;..        s
3400: 65 63 6f 6e 64 73 20 2b 3d 20 73 20 2d 20 6d 69  econds += s - mi
3410: 6e 75 74 65 20 2a 20 36 30 3b 0d 0a 0d 0a 20 20  nute * 60;....  
3420: 20 20 20 20 20 20 69 6e 74 20 73 65 63 6f 6e 64        int second
3430: 20 3d 20 28 69 6e 74 29 73 65 63 6f 6e 64 73 3b   = (int)seconds;
3440: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 74 72 79 0d  ....        try.
3450: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
3460: 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65          DateTime
3470: 20 6d 69 6e 56 61 6c 75 65 20 3d 20 44 61 74 65   minValue = Date
3480: 54 69 6d 65 2e 4d 69 6e 56 61 6c 75 65 3b 0d 0a  Time.MinValue;..
3490: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
34a0: 74 75 72 6e 20 6e 65 77 20 44 61 74 65 54 69 6d  turn new DateTim
34b0: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
34c0: 20 20 20 20 6d 69 6e 56 61 6c 75 65 2e 59 65 61      minValue.Yea
34d0: 72 2c 20 6d 69 6e 56 61 6c 75 65 2e 4d 6f 6e 74  r, minValue.Mont
34e0: 68 2c 20 6d 69 6e 56 61 6c 75 65 2e 44 61 79 2c  h, minValue.Day,
34f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3500: 20 20 68 6f 75 72 2c 20 6d 69 6e 75 74 65 2c 20    hour, minute, 
3510: 73 65 63 6f 6e 64 2c 20 6d 69 6c 6c 69 73 65 63  second, millisec
3520: 6f 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  ond);..        }
3530: 0d 0a 20 20 20 20 20 20 20 20 63 61 74 63 68 0d  ..        catch.
3540: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
3550: 20 20 20 20 20 20 20 20 69 66 20 28 62 61 64 56          if (badV
3560: 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  alue == null).. 
3570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
3580: 68 72 6f 77 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  hrow;....       
3590: 20 20 20 20 20 72 65 74 75 72 6e 20 28 44 61 74       return (Dat
35a0: 65 54 69 6d 65 29 62 61 64 56 61 6c 75 65 3b 0d  eTime)badValue;.
35b0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
35c0: 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  }....    ///////
35d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35e0: 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20  ////....    /// 
3620: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
3630: 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 3c 73  // Converts a <s
3640: 65 65 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d  ee cref="DateTim
3650: 65 22 20 2f 3e 20 74 6f 20 61 20 4a 75 6c 69 61  e" /> to a Julia
3660: 6e 20 44 61 79 20 76 61 6c 75 65 2e 0d 0a 20 20  n Day value...  
3670: 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
3680: 64 20 77 61 73 20 74 72 61 6e 73 6c 61 74 65 64  d was translated
3690: 20 66 72 6f 6d 20 74 68 65 20 22 63 6f 6d 70 75   from the "compu
36a0: 74 65 4a 44 22 20 66 75 6e 63 74 69 6f 6e 20 69  teJD" function i
36b0: 6e 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 65 20 22  n..    /// the "
36c0: 64 61 74 65 2e 63 22 20 66 69 6c 65 20 62 65 6c  date.c" file bel
36d0: 6f 6e 67 69 6e 67 20 74 6f 20 74 68 65 20 53 51  onging to the SQ
36e0: 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
36f0: 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 53 69 6e 63  y...    /// Sinc
3700: 65 20 74 68 65 20 72 61 6e 67 65 20 6f 66 20 4a  e the range of J
3710: 75 6c 69 61 6e 20 44 61 79 20 76 61 6c 75 65 73  ulian Day values
3720: 20 73 75 70 70 6f 72 74 65 64 20 62 79 20 74 68   supported by th
3730: 69 73 20 6d 65 74 68 6f 64 0d 0a 20 20 20 20 2f  is method..    /
3740: 2f 2f 20 69 6e 63 6c 75 64 65 73 20 61 6c 6c 20  // includes all 
3750: 70 6f 73 73 69 62 6c 65 20 28 76 61 6c 69 64 29  possible (valid)
3760: 20 76 61 6c 75 65 73 20 6f 66 20 61 20 3c 73 65   values of a <se
3770: 65 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d 65  e cref="DateTime
3780: 22 20 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 76 61  " />..    /// va
3790: 6c 75 65 2c 20 69 74 20 73 68 6f 75 6c 64 20 62  lue, it should b
37a0: 65 20 65 78 74 72 65 6d 65 6c 79 20 64 69 66 66  e extremely diff
37b0: 69 63 75 6c 74 20 66 6f 72 20 74 68 69 73 20 6d  icult for this m
37c0: 65 74 68 6f 64 20 74 6f 0d 0a 20 20 20 20 2f 2f  ethod to..    //
37d0: 2f 20 72 61 69 73 65 20 61 6e 20 65 78 63 65 70  / raise an excep
37e0: 74 69 6f 6e 20 6f 72 20 72 65 74 75 72 6e 20 61  tion or return a
37f0: 6e 20 75 6e 64 65 66 69 6e 65 64 20 72 65 73 75  n undefined resu
3800: 6c 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  lt...    /// </s
3810: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
3820: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 61   <param name="da
3830: 74 65 54 69 6d 65 22 3e 0d 0a 20 20 20 20 2f 2f  teTime">..    //
3840: 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
3850: 22 44 61 74 65 54 69 6d 65 22 20 2f 3e 20 76 61  "DateTime" /> va
3860: 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72 74 2e 20  lue to convert. 
3870: 20 54 68 69 73 20 76 61 6c 75 65 0d 0a 20 20 20   This value..   
3880: 20 2f 2f 2f 20 77 69 6c 6c 20 62 65 20 77 69 74   /// will be wit
3890: 68 69 6e 20 74 68 65 20 72 61 6e 67 65 20 6f 66  hin the range of
38a0: 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74 65   <see cref="Date
38b0: 54 69 6d 65 2e 4d 69 6e 56 61 6c 75 65 22 20 2f  Time.MinValue" /
38c0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 28 30 30 3a 30  >..    /// (00:0
38d0: 30 3a 30 30 2e 30 30 30 30 30 30 30 2c 20 4a 61  0:00.0000000, Ja
38e0: 6e 75 61 72 79 20 31 2c 20 30 30 30 31 29 20 74  nuary 1, 0001) t
38f0: 6f 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  o..    /// <see 
3900: 63 72 65 66 3d 22 44 61 74 65 54 69 6d 65 2e 4d  cref="DateTime.M
3910: 61 78 56 61 6c 75 65 22 20 2f 3e 20 28 32 33 3a  axValue" /> (23:
3920: 35 39 3a 35 39 2e 39 39 39 39 39 39 39 2c 20 44  59:59.9999999, D
3930: 65 63 65 6d 62 65 72 0d 0a 20 20 20 20 2f 2f 2f  ecember..    ///
3940: 20 33 31 2c 20 39 39 39 39 29 2e 0d 0a 20 20 20   31, 9999)...   
3950: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
3960: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
3970: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65  ..    /// The ne
3980: 61 72 65 73 74 20 4a 75 6c 69 61 6e 20 44 61 79  arest Julian Day
3990: 20 76 61 6c 75 65 20 63 6f 72 72 65 73 70 6f 6e   value correspon
39a0: 64 69 6e 67 20 74 6f 20 74 68 65 20 73 70 65 63  ding to the spec
39b0: 69 66 69 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ified..    /// <
39c0: 73 65 65 20 63 72 65 66 3d 22 44 61 74 65 54 69  see cref="DateTi
39d0: 6d 65 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20  me" /> value... 
39e0: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
39f0: 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73  >..    private s
3a00: 74 61 74 69 63 20 6c 6f 6e 67 20 63 6f 6d 70 75  tatic long compu
3a10: 74 65 4a 44 28 0d 0a 20 20 20 20 20 20 20 20 44  teJD(..        D
3a20: 61 74 65 54 69 6d 65 20 64 61 74 65 54 69 6d 65  ateTime dateTime
3a30: 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20  ..        )..   
3a40: 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20   {..        int 
3a50: 59 2c 20 4d 2c 20 44 3b 0d 0a 0d 0a 20 20 20 20  Y, M, D;....    
3a60: 20 20 20 20 59 20 3d 20 64 61 74 65 54 69 6d 65      Y = dateTime
3a70: 2e 59 65 61 72 3b 0d 0a 20 20 20 20 20 20 20 20  .Year;..        
3a80: 4d 20 3d 20 64 61 74 65 54 69 6d 65 2e 4d 6f 6e  M = dateTime.Mon
3a90: 74 68 3b 0d 0a 20 20 20 20 20 20 20 20 44 20 3d  th;..        D =
3aa0: 20 64 61 74 65 54 69 6d 65 2e 44 61 79 3b 0d 0a   dateTime.Day;..
3ab0: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 4d 20  ..        if (M 
3ac0: 3c 3d 20 32 29 0d 0a 20 20 20 20 20 20 20 20 7b  <= 2)..        {
3ad0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 59 2d  ..            Y-
3ae0: 2d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  -;..            
3af0: 4d 20 2b 3d 20 31 32 3b 0d 0a 20 20 20 20 20 20  M += 12;..      
3b00: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69    }....        i
3b10: 6e 74 20 41 2c 20 42 2c 20 58 31 2c 20 58 32 3b  nt A, B, X1, X2;
3b20: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 41 20 3d 20  ....        A = 
3b30: 59 20 2f 20 31 30 30 3b 0d 0a 20 20 20 20 20 20  Y / 100;..      
3b40: 20 20 42 20 3d 20 32 20 2d 20 41 20 2b 20 28 41    B = 2 - A + (A
3b50: 20 2f 20 34 29 3b 0d 0a 20 20 20 20 20 20 20 20   / 4);..        
3b60: 58 31 20 3d 20 33 36 35 32 35 20 2a 20 28 59 20  X1 = 36525 * (Y 
3b70: 2b 20 34 37 31 36 29 20 2f 20 31 30 30 3b 0d 0a  + 4716) / 100;..
3b80: 20 20 20 20 20 20 20 20 58 32 20 3d 20 33 30 36          X2 = 306
3b90: 30 30 31 20 2a 20 28 4d 20 2b 20 31 29 20 2f 20  001 * (M + 1) / 
3ba0: 31 30 30 30 30 3b 0d 0a 0d 0a 20 20 20 20 20 20  10000;....      
3bb0: 20 20 6c 6f 6e 67 20 6a 64 3b 0d 0a 0d 0a 20 20    long jd;....  
3bc0: 20 20 20 20 20 20 6a 64 20 3d 20 28 6c 6f 6e 67        jd = (long
3bd0: 29 28 28 58 31 20 2b 20 58 32 20 2b 20 44 20 2b  )((X1 + X2 + D +
3be0: 20 42 20 2d 20 31 35 32 34 2e 35 29 20 2a 20 38   B - 1524.5) * 8
3bf0: 36 34 30 30 30 30 30 29 3b 0d 0a 0d 0a 20 20 20  6400000);....   
3c00: 20 20 20 20 20 6a 64 20 2b 3d 20 28 64 61 74 65       jd += (date
3c10: 54 69 6d 65 2e 48 6f 75 72 20 2a 20 33 36 30 30  Time.Hour * 3600
3c20: 30 30 30 29 20 2b 20 28 64 61 74 65 54 69 6d 65  000) + (dateTime
3c30: 2e 4d 69 6e 75 74 65 20 2a 20 36 30 30 30 30 29  .Minute * 60000)
3c40: 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
3c50: 28 64 61 74 65 54 69 6d 65 2e 53 65 63 6f 6e 64  (dateTime.Second
3c60: 20 2a 20 31 30 30 30 29 20 2b 20 64 61 74 65 54   * 1000) + dateT
3c70: 69 6d 65 2e 4d 69 6c 6c 69 73 65 63 6f 6e 64 3b  ime.Millisecond;
3c80: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75  ....        retu
3c90: 72 6e 20 6a 64 3b 0d 0a 20 20 20 20 7d 0a 20 20  rn jd;..    }.  
3ca0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
3cb0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
3cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3cd0: 2f 2f 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 0d  ///////////////.
3d00: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
3d10: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f  ary>..    /// Co
3d20: 6e 76 65 72 74 73 20 61 20 73 74 72 69 6e 67 20  nverts a string 
3d30: 69 6e 74 6f 20 61 20 44 61 74 65 54 69 6d 65 2c  into a DateTime,
3d40: 20 75 73 69 6e 67 20 74 68 65 20 44 61 74 65 54   using the DateT
3d50: 69 6d 65 46 6f 72 6d 61 74 2c 20 44 61 74 65 54  imeFormat, DateT
3d60: 69 6d 65 4b 69 6e 64 2c 0d 0a 20 20 20 20 2f 2f  imeKind,..    //
3d70: 2f 20 61 6e 64 20 44 61 74 65 54 69 6d 65 46 6f  / and DateTimeFo
3d80: 72 6d 61 74 53 74 72 69 6e 67 20 73 70 65 63 69  rmatString speci
3d90: 66 69 65 64 20 66 6f 72 20 74 68 65 20 63 6f 6e  fied for the con
3da0: 6e 65 63 74 69 6f 6e 20 77 68 65 6e 20 69 74 20  nection when it 
3db0: 77 61 73 20 6f 70 65 6e 65 64 2e 0d 0a 20 20 20  was opened...   
3dc0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
3dd0: 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b  .    /// <remark
3de0: 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 63 63 65  s>..    /// Acce
3df0: 70 74 61 62 6c 65 20 49 53 4f 38 36 30 31 20 44  ptable ISO8601 D
3e00: 61 74 65 54 69 6d 65 20 66 6f 72 6d 61 74 73 20  ateTime formats 
3e10: 61 72 65 3a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 6c  are:..    /// <l
3e20: 69 73 74 20 74 79 70 65 3d 22 62 75 6c 6c 65 74  ist type="bullet
3e30: 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  ">..    /// <ite
3e40: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 54  m><description>T
3e50: 48 48 6d 6d 73 73 4b 3c 2f 64 65 73 63 72 69 70  HHmmssK</descrip
3e60: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
3e70: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
3e80: 63 72 69 70 74 69 6f 6e 3e 54 48 48 6d 6d 4b 3c  cription>THHmmK<
3e90: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
3ea0: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
3eb0: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
3ec0: 3e 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46  >HH:mm:ss.FFFFFF
3ed0: 46 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  FK</description>
3ee0: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
3ef0: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
3f00: 69 6f 6e 3e 48 48 3a 6d 6d 3a 73 73 4b 3c 2f 64  ion>HH:mm:ssK</d
3f10: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
3f20: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  m>..    /// <ite
3f30: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48  m><description>H
3f40: 48 3a 6d 6d 4b 3c 2f 64 65 73 63 72 69 70 74 69  H:mmK</descripti
3f50: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
3f60: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
3f70: 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64  iption>yyyy-MM-d
3f80: 64 20 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46  d HH:mm:ss.FFFFF
3f90: 46 46 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  FFK</description
3fa0: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
3fb0: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
3fc0: 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20  tion>yyyy-MM-dd 
3fd0: 48 48 3a 6d 6d 3a 73 73 4b 3c 2f 64 65 73 63 72  HH:mm:ssK</descr
3fe0: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
3ff0: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
4000: 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d  escription>yyyy-
4010: 4d 4d 2d 64 64 20 48 48 3a 6d 6d 4b 3c 2f 64 65  MM-dd HH:mmK</de
4020: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
4030: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
4040: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79  ><description>yy
4050: 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73  yy-MM-ddTHH:mm:s
4060: 73 2e 46 46 46 46 46 46 46 4b 3c 2f 64 65 73 63  s.FFFFFFFK</desc
4070: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
4080: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
4090: 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79  description>yyyy
40a0: 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 4b 3c 2f 64  -MM-ddTHH:mmK</d
40b0: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
40c0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  m>..    /// <ite
40d0: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79  m><description>y
40e0: 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a  yyy-MM-ddTHH:mm:
40f0: 73 73 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  ssK</description
4100: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
4110: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
4120: 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 48 48 6d  tion>yyyyMMddHHm
4130: 6d 73 73 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f  mssK</descriptio
4140: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
4150: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
4160: 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 48 48  ption>yyyyMMddHH
4170: 6d 6d 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  mmK</description
4180: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
4190: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
41a0: 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 54 48 48  tion>yyyyMMddTHH
41b0: 6d 6d 73 73 46 46 46 46 46 46 46 4b 3c 2f 64 65  mmssFFFFFFFK</de
41c0: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
41d0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
41e0: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 54 48  ><description>TH
41f0: 48 6d 6d 73 73 3c 2f 64 65 73 63 72 69 70 74 69  Hmmss</descripti
4200: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
4210: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
4220: 69 70 74 69 6f 6e 3e 54 48 48 6d 6d 3c 2f 64 65  iption>THHmm</de
4230: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
4240: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
4250: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 48  ><description>HH
4260: 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 3c 2f  :mm:ss.FFFFFFF</
4270: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
4280: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
4290: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
42a0: 48 48 3a 6d 6d 3a 73 73 3c 2f 64 65 73 63 72 69  HH:mm:ss</descri
42b0: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
42c0: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
42d0: 73 63 72 69 70 74 69 6f 6e 3e 48 48 3a 6d 6d 3c  scription>HH:mm<
42e0: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
42f0: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
4300: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
4310: 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d  >yyyy-MM-dd HH:m
4320: 6d 3a 73 73 2e 46 46 46 46 46 46 46 3c 2f 64 65  m:ss.FFFFFFF</de
4330: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
4340: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
4350: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79  ><description>yy
4360: 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73  yy-MM-dd HH:mm:s
4370: 73 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  s</description><
4380: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
4390: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
43a0: 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48  on>yyyy-MM-dd HH
43b0: 3a 6d 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  :mm</description
43c0: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
43d0: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
43e0: 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54  tion>yyyy-MM-ddT
43f0: 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46  HH:mm:ss.FFFFFFF
4400: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
4410: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
4420: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
4430: 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a  n>yyyy-MM-ddTHH:
4440: 6d 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  mm</description>
4450: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
4460: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
4470: 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48  ion>yyyy-MM-ddTH
4480: 48 3a 6d 6d 3a 73 73 3c 2f 64 65 73 63 72 69 70  H:mm:ss</descrip
4490: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
44a0: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
44b0: 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64  cription>yyyyMMd
44c0: 64 48 48 6d 6d 73 73 3c 2f 64 65 73 63 72 69 70  dHHmmss</descrip
44d0: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
44e0: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
44f0: 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64  cription>yyyyMMd
4500: 64 48 48 6d 6d 3c 2f 64 65 73 63 72 69 70 74 69  dHHmm</descripti
4510: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
4520: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
4530: 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 54  iption>yyyyMMddT
4540: 48 48 6d 6d 73 73 46 46 46 46 46 46 46 3c 2f 64  HHmmssFFFFFFF</d
4550: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
4560: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  m>..    /// <ite
4570: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79  m><description>y
4580: 79 79 79 2d 4d 4d 2d 64 64 3c 2f 64 65 73 63 72  yyy-MM-dd</descr
4590: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
45a0: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
45b0: 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d  escription>yyyyM
45c0: 4d 64 64 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  Mdd</description
45d0: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
45e0: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
45f0: 74 69 6f 6e 3e 79 79 2d 4d 4d 2d 64 64 3c 2f 64  tion>yy-MM-dd</d
4600: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
4610: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 6c 69  m>..    /// </li
4620: 73 74 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20  st>..    /// If 
4630: 74 68 65 20 73 74 72 69 6e 67 20 63 61 6e 6e 6f  the string canno
4640: 74 20 62 65 20 6d 61 74 63 68 65 64 20 74 6f 20  t be matched to 
4650: 6f 6e 65 20 6f 66 20 74 68 65 20 61 62 6f 76 65  one of the above
4660: 20 66 6f 72 6d 61 74 73 20 2d 4f 52 2d 0d 0a 20   formats -OR-.. 
4670: 20 20 20 2f 2f 2f 20 74 68 65 20 44 61 74 65 54     /// the DateT
4680: 69 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 20  imeFormatString 
4690: 69 66 20 6f 6e 65 20 77 61 73 20 70 72 6f 76 69  if one was provi
46a0: 64 65 64 2c 20 61 6e 20 65 78 63 65 70 74 69 6f  ded, an exceptio
46b0: 6e 20 77 69 6c 6c 0d 0a 20 20 20 20 2f 2f 2f 20  n will..    /// 
46c0: 62 65 20 74 68 72 6f 77 6e 2e 0d 0a 20 20 20 20  be thrown...    
46d0: 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a  /// </remarks>..
46e0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
46f0: 61 6d 65 3d 22 64 61 74 65 54 65 78 74 22 3e 54  ame="dateText">T
4700: 68 65 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69  he string contai
4710: 6e 69 6e 67 20 65 69 74 68 65 72 20 61 20 6c 6f  ning either a lo
4720: 6e 67 20 69 6e 74 65 67 65 72 20 6e 75 6d 62 65  ng integer numbe
4730: 72 20 6f 66 20 31 30 30 2d 6e 61 6e 6f 73 65 63  r of 100-nanosec
4740: 6f 6e 64 20 75 6e 69 74 73 20 73 69 6e 63 65 0d  ond units since.
4750: 0a 20 20 20 20 2f 2f 2f 20 53 79 73 74 65 6d 2e  .    /// System.
4760: 44 61 74 65 54 69 6d 65 2e 4d 69 6e 56 61 6c 75  DateTime.MinValu
4770: 65 2c 20 61 20 4a 75 6c 69 61 6e 20 64 61 79 20  e, a Julian day 
4780: 64 6f 75 62 6c 65 2c 20 61 6e 20 69 6e 74 65 67  double, an integ
4790: 65 72 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63  er number of sec
47a0: 6f 6e 64 73 20 73 69 6e 63 65 20 74 68 65 20 55  onds since the U
47b0: 6e 69 78 20 65 70 6f 63 68 2c 20 61 0d 0a 20 20  nix epoch, a..  
47c0: 20 20 2f 2f 2f 20 63 75 6c 74 75 72 65 2d 69 6e    /// culture-in
47d0: 64 65 70 65 6e 64 65 6e 74 20 66 6f 72 6d 61 74  dependent format
47e0: 74 65 64 20 64 61 74 65 20 61 6e 64 20 74 69 6d  ted date and tim
47f0: 65 20 73 74 72 69 6e 67 2c 20 61 20 66 6f 72 6d  e string, a form
4800: 61 74 74 65 64 20 64 61 74 65 20 61 6e 64 20 74  atted date and t
4810: 69 6d 65 20 73 74 72 69 6e 67 20 69 6e 20 74 68  ime string in th
4820: 65 20 63 75 72 72 65 6e 74 0d 0a 20 20 20 20 2f  e current..    /
4830: 2f 2f 20 63 75 6c 74 75 72 65 2c 20 6f 72 20 61  // culture, or a
4840: 6e 20 49 53 4f 38 36 30 31 2d 66 6f 72 6d 61 74  n ISO8601-format
4850: 20 73 74 72 69 6e 67 2e 3c 2f 70 61 72 61 6d 3e   string.</param>
4860: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
4870: 6e 73 3e 41 20 44 61 74 65 54 69 6d 65 20 76 61  ns>A DateTime va
4880: 6c 75 65 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  lue</returns>.. 
4890: 20 20 20 70 75 62 6c 69 63 20 44 61 74 65 54 69     public DateTi
48a0: 6d 65 20 54 6f 44 61 74 65 54 69 6d 65 28 73 74  me ToDateTime(st
48b0: 72 69 6e 67 20 64 61 74 65 54 65 78 74 29 0d 0a  ring dateText)..
48c0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 72 65 74      {..      ret
48d0: 75 72 6e 20 54 6f 44 61 74 65 54 69 6d 65 28 64  urn ToDateTime(d
48e0: 61 74 65 54 65 78 74 2c 20 5f 64 61 74 65 74 69  ateText, _dateti
48f0: 6d 65 46 6f 72 6d 61 74 2c 20 5f 64 61 74 65 74  meFormat, _datet
4900: 69 6d 65 4b 69 6e 64 2c 20 5f 64 61 74 65 74 69  imeKind, _dateti
4910: 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 29 3b  meFormatString);
4920: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
4930: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
4940: 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61    /// Converts a
4950: 20 73 74 72 69 6e 67 20 69 6e 74 6f 20 61 20 44   string into a D
4960: 61 74 65 54 69 6d 65 2c 20 75 73 69 6e 67 20 74  ateTime, using t
4970: 68 65 20 73 70 65 63 69 66 69 65 64 20 44 61 74  he specified Dat
4980: 65 54 69 6d 65 46 6f 72 6d 61 74 2c 0d 0a 20 20  eTimeFormat,..  
4990: 20 20 2f 2f 2f 20 44 61 74 65 54 69 6d 65 4b 69    /// DateTimeKi
49a0: 6e 64 20 61 6e 64 20 44 61 74 65 54 69 6d 65 46  nd and DateTimeF
49b0: 6f 72 6d 61 74 53 74 72 69 6e 67 2e 0d 0a 20 20  ormatString...  
49c0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
49d0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 6d 61 72  ..    /// <remar
49e0: 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 63 63  ks>..    /// Acc
49f0: 65 70 74 61 62 6c 65 20 49 53 4f 38 36 30 31 20  eptable ISO8601 
4a00: 44 61 74 65 54 69 6d 65 20 66 6f 72 6d 61 74 73  DateTime formats
4a10: 20 61 72 65 3a 0d 0a 20 20 20 20 2f 2f 2f 20 3c   are:..    /// <
4a20: 6c 69 73 74 20 74 79 70 65 3d 22 62 75 6c 6c 65  list type="bulle
4a30: 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  t">..    /// <it
4a40: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
4a50: 54 48 48 6d 6d 73 73 4b 3c 2f 64 65 73 63 72 69  THHmmssK</descri
4a60: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
4a70: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
4a80: 73 63 72 69 70 74 69 6f 6e 3e 54 48 48 6d 6d 4b  scription>THHmmK
4a90: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
4aa0: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
4ab0: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
4ac0: 6e 3e 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46  n>HH:mm:ss.FFFFF
4ad0: 46 46 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  FFK</description
4ae0: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
4af0: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
4b00: 74 69 6f 6e 3e 48 48 3a 6d 6d 3a 73 73 4b 3c 2f  tion>HH:mm:ssK</
4b10: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
4b20: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
4b30: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
4b40: 48 48 3a 6d 6d 4b 3c 2f 64 65 73 63 72 69 70 74  HH:mmK</descript
4b50: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
4b60: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
4b70: 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d  ription>yyyy-MM-
4b80: 64 64 20 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46  dd HH:mm:ss.FFFF
4b90: 46 46 46 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f  FFFK</descriptio
4ba0: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
4bb0: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
4bc0: 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64  ption>yyyy-MM-dd
4bd0: 20 48 48 3a 6d 6d 3a 73 73 4b 3c 2f 64 65 73 63   HH:mm:ssK</desc
4be0: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
4bf0: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
4c00: 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79  description>yyyy
4c10: 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 4b 3c 2f 64  -MM-dd HH:mmK</d
4c20: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
4c30: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  m>..    /// <ite
4c40: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79  m><description>y
4c50: 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a  yyy-MM-ddTHH:mm:
4c60: 73 73 2e 46 46 46 46 46 46 46 4b 3c 2f 64 65 73  ss.FFFFFFFK</des
4c70: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
4c80: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
4c90: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79  <description>yyy
4ca0: 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 4b 3c 2f  y-MM-ddTHH:mmK</
4cb0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
4cc0: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
4cd0: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
4ce0: 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d  yyyy-MM-ddTHH:mm
4cf0: 3a 73 73 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f  :ssK</descriptio
4d00: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
4d10: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
4d20: 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 48 48  ption>yyyyMMddHH
4d30: 6d 6d 73 73 4b 3c 2f 64 65 73 63 72 69 70 74 69  mmssK</descripti
4d40: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
4d50: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
4d60: 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 48  iption>yyyyMMddH
4d70: 48 6d 6d 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f  HmmK</descriptio
4d80: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
4d90: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
4da0: 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 54 48  ption>yyyyMMddTH
4db0: 48 6d 6d 73 73 46 46 46 46 46 46 46 4b 3c 2f 64  HmmssFFFFFFFK</d
4dc0: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
4dd0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  m>..    /// <ite
4de0: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 54  m><description>T
4df0: 48 48 6d 6d 73 73 3c 2f 64 65 73 63 72 69 70 74  HHmmss</descript
4e00: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
4e10: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
4e20: 72 69 70 74 69 6f 6e 3e 54 48 48 6d 6d 3c 2f 64  ription>THHmm</d
4e30: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
4e40: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  m>..    /// <ite
4e50: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48  m><description>H
4e60: 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 3c  H:mm:ss.FFFFFFF<
4e70: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
4e80: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
4e90: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
4ea0: 3e 48 48 3a 6d 6d 3a 73 73 3c 2f 64 65 73 63 72  >HH:mm:ss</descr
4eb0: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
4ec0: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
4ed0: 65 73 63 72 69 70 74 69 6f 6e 3e 48 48 3a 6d 6d  escription>HH:mm
4ee0: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
4ef0: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
4f00: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
4f10: 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a  n>yyyy-MM-dd HH:
4f20: 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 3c 2f 64  mm:ss.FFFFFFF</d
4f30: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
4f40: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  m>..    /// <ite
4f50: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79  m><description>y
4f60: 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a  yyy-MM-dd HH:mm:
4f70: 73 73 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  ss</description>
4f80: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
4f90: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
4fa0: 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48  ion>yyyy-MM-dd H
4fb0: 48 3a 6d 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f  H:mm</descriptio
4fc0: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
4fd0: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
4fe0: 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64  ption>yyyy-MM-dd
4ff0: 54 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46  THH:mm:ss.FFFFFF
5000: 46 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  F</description><
5010: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
5020: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
5030: 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48  on>yyyy-MM-ddTHH
5040: 3a 6d 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  :mm</description
5050: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
5060: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
5070: 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54  tion>yyyy-MM-ddT
5080: 48 48 3a 6d 6d 3a 73 73 3c 2f 64 65 73 63 72 69  HH:mm:ss</descri
5090: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
50a0: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
50b0: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d  scription>yyyyMM
50c0: 64 64 48 48 6d 6d 73 73 3c 2f 64 65 73 63 72 69  ddHHmmss</descri
50d0: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
50e0: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
50f0: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d  scription>yyyyMM
5100: 64 64 48 48 6d 6d 3c 2f 64 65 73 63 72 69 70 74  ddHHmm</descript
5110: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
5120: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
5130: 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64  ription>yyyyMMdd
5140: 54 48 48 6d 6d 73 73 46 46 46 46 46 46 46 3c 2f  THHmmssFFFFFFF</
5150: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
5160: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
5170: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
5180: 79 79 79 79 2d 4d 4d 2d 64 64 3c 2f 64 65 73 63  yyyy-MM-dd</desc
5190: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
51a0: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
51b0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79  description>yyyy
51c0: 4d 4d 64 64 3c 2f 64 65 73 63 72 69 70 74 69 6f  MMdd</descriptio
51d0: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
51e0: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
51f0: 70 74 69 6f 6e 3e 79 79 2d 4d 4d 2d 64 64 3c 2f  ption>yy-MM-dd</
5200: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
5210: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 6c  em>..    /// </l
5220: 69 73 74 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 66  ist>..    /// If
5230: 20 74 68 65 20 73 74 72 69 6e 67 20 63 61 6e 6e   the string cann
5240: 6f 74 20 62 65 20 6d 61 74 63 68 65 64 20 74 6f  ot be matched to
5250: 20 6f 6e 65 20 6f 66 20 74 68 65 20 61 62 6f 76   one of the abov
5260: 65 20 66 6f 72 6d 61 74 73 20 2d 4f 52 2d 0d 0a  e formats -OR-..
5270: 20 20 20 20 2f 2f 2f 20 74 68 65 20 44 61 74 65      /// the Date
5280: 54 69 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e 67  TimeFormatString
5290: 20 69 66 20 6f 6e 65 20 77 61 73 20 70 72 6f 76   if one was prov
52a0: 69 64 65 64 2c 20 61 6e 20 65 78 63 65 70 74 69  ided, an excepti
52b0: 6f 6e 20 77 69 6c 6c 0d 0a 20 20 20 20 2f 2f 2f  on will..    ///
52c0: 20 62 65 20 74 68 72 6f 77 6e 2e 0d 0a 20 20 20   be thrown...   
52d0: 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d   /// </remarks>.
52e0: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
52f0: 6e 61 6d 65 3d 22 64 61 74 65 54 65 78 74 22 3e  name="dateText">
5300: 54 68 65 20 73 74 72 69 6e 67 20 63 6f 6e 74 61  The string conta
5310: 69 6e 69 6e 67 20 65 69 74 68 65 72 20 61 20 6c  ining either a l
5320: 6f 6e 67 20 69 6e 74 65 67 65 72 20 6e 75 6d 62  ong integer numb
5330: 65 72 20 6f 66 20 31 30 30 2d 6e 61 6e 6f 73 65  er of 100-nanose
5340: 63 6f 6e 64 20 75 6e 69 74 73 20 73 69 6e 63 65  cond units since
5350: 0d 0a 20 20 20 20 2f 2f 2f 20 53 79 73 74 65 6d  ..    /// System
5360: 2e 44 61 74 65 54 69 6d 65 2e 4d 69 6e 56 61 6c  .DateTime.MinVal
5370: 75 65 2c 20 61 20 4a 75 6c 69 61 6e 20 64 61 79  ue, a Julian day
5380: 20 64 6f 75 62 6c 65 2c 20 61 6e 20 69 6e 74 65   double, an inte
5390: 67 65 72 20 6e 75 6d 62 65 72 20 6f 66 20 73 65  ger number of se
53a0: 63 6f 6e 64 73 20 73 69 6e 63 65 20 74 68 65 20  conds since the 
53b0: 55 6e 69 78 20 65 70 6f 63 68 2c 20 61 0d 0a 20  Unix epoch, a.. 
53c0: 20 20 20 2f 2f 2f 20 63 75 6c 74 75 72 65 2d 69     /// culture-i
53d0: 6e 64 65 70 65 6e 64 65 6e 74 20 66 6f 72 6d 61  ndependent forma
53e0: 74 74 65 64 20 64 61 74 65 20 61 6e 64 20 74 69  tted date and ti
53f0: 6d 65 20 73 74 72 69 6e 67 2c 20 61 20 66 6f 72  me string, a for
5400: 6d 61 74 74 65 64 20 64 61 74 65 20 61 6e 64 20  matted date and 
5410: 74 69 6d 65 20 73 74 72 69 6e 67 20 69 6e 20 74  time string in t
5420: 68 65 20 63 75 72 72 65 6e 74 0d 0a 20 20 20 20  he current..    
5430: 2f 2f 2f 20 63 75 6c 74 75 72 65 2c 20 6f 72 20  /// culture, or 
5440: 61 6e 20 49 53 4f 38 36 30 31 2d 66 6f 72 6d 61  an ISO8601-forma
5450: 74 20 73 74 72 69 6e 67 2e 3c 2f 70 61 72 61 6d  t string.</param
5460: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
5470: 6d 20 6e 61 6d 65 3d 22 66 6f 72 6d 61 74 22 3e  m name="format">
5480: 54 68 65 20 53 51 4c 69 74 65 44 61 74 65 46 6f  The SQLiteDateFo
5490: 72 6d 61 74 73 20 74 6f 20 75 73 65 2e 3c 2f 70  rmats to use.</p
54a0: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
54b0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6b 69 6e 64  param name="kind
54c0: 22 3e 54 68 65 20 44 61 74 65 54 69 6d 65 4b 69  ">The DateTimeKi
54d0: 6e 64 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72 61  nd to use.</para
54e0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
54f0: 61 6d 20 6e 61 6d 65 3d 22 66 6f 72 6d 61 74 53  am name="formatS
5500: 74 72 69 6e 67 22 3e 54 68 65 20 44 61 74 65 54  tring">The DateT
5510: 69 6d 65 20 66 6f 72 6d 61 74 20 73 74 72 69 6e  ime format strin
5520: 67 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72 61 6d  g to use.</param
5530: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  >..    /// <retu
5540: 72 6e 73 3e 41 20 44 61 74 65 54 69 6d 65 20 76  rns>A DateTime v
5550: 61 6c 75 65 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  alue</returns>..
5560: 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
5570: 63 20 44 61 74 65 54 69 6d 65 20 54 6f 44 61 74  c DateTime ToDat
5580: 65 54 69 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  eTime(..        
5590: 73 74 72 69 6e 67 20 64 61 74 65 54 65 78 74 2c  string dateText,
55a0: 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
55b0: 44 61 74 65 46 6f 72 6d 61 74 73 20 66 6f 72 6d  DateFormats form
55c0: 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 44 61 74  at,..        Dat
55d0: 65 54 69 6d 65 4b 69 6e 64 20 6b 69 6e 64 2c 0d  eTimeKind kind,.
55e0: 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20  .        string 
55f0: 66 6f 72 6d 61 74 53 74 72 69 6e 67 0d 0a 20 20  formatString..  
5600: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a        )..    {..
5610: 20 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28          switch (
5620: 66 6f 72 6d 61 74 29 0d 0a 20 20 20 20 20 20 20  format)..       
5630: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
5640: 63 61 73 65 20 53 51 4c 69 74 65 44 61 74 65 46  case SQLiteDateF
5650: 6f 72 6d 61 74 73 2e 54 69 63 6b 73 3a 0d 0a 20  ormats.Ticks:.. 
5660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
5670: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5680: 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 6f 44        return ToD
5690: 61 74 65 54 69 6d 65 28 43 6f 6e 76 65 72 74 2e  ateTime(Convert.
56a0: 54 6f 49 6e 74 36 34 28 0d 0a 20 20 20 20 20 20  ToInt64(..      
56b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
56c0: 20 20 64 61 74 65 54 65 78 74 2c 20 43 75 6c 74    dateText, Cult
56d0: 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e  ureInfo.Invarian
56e0: 74 43 75 6c 74 75 72 65 29 2c 20 6b 69 6e 64 29  tCulture), kind)
56f0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
5700: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
5710: 20 20 63 61 73 65 20 53 51 4c 69 74 65 44 61 74    case SQLiteDat
5720: 65 46 6f 72 6d 61 74 73 2e 4a 75 6c 69 61 6e 44  eFormats.JulianD
5730: 61 79 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ay:..           
5740: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
5750: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
5760: 72 6e 20 54 6f 44 61 74 65 54 69 6d 65 28 43 6f  rn ToDateTime(Co
5770: 6e 76 65 72 74 2e 54 6f 44 6f 75 62 6c 65 28 0d  nvert.ToDouble(.
5780: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5790: 20 20 20 20 20 20 20 20 20 64 61 74 65 54 65 78           dateTex
57a0: 74 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49  t, CultureInfo.I
57b0: 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 29  nvariantCulture)
57c0: 2c 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20 20 20  , kind);..      
57d0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
57e0: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 53 51           case SQ
57f0: 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73 2e  LiteDateFormats.
5800: 55 6e 69 78 45 70 6f 63 68 3a 0d 0a 20 20 20 20  UnixEpoch:..    
5810: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
5820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5830: 20 20 20 72 65 74 75 72 6e 20 54 6f 44 61 74 65     return ToDate
5840: 54 69 6d 65 28 43 6f 6e 76 65 72 74 2e 54 6f 49  Time(Convert.ToI
5850: 6e 74 33 32 28 0d 0a 20 20 20 20 20 20 20 20 20  nt32(..         
5860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
5870: 61 74 65 54 65 78 74 2c 20 43 75 6c 74 75 72 65  ateText, Culture
5880: 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75  Info.InvariantCu
5890: 6c 74 75 72 65 29 2c 20 6b 69 6e 64 29 3b 0d 0a  lture), kind);..
58a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
58b0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  }..            c
58c0: 61 73 65 20 53 51 4c 69 74 65 44 61 74 65 46 6f  ase SQLiteDateFo
58d0: 72 6d 61 74 73 2e 49 6e 76 61 72 69 61 6e 74 43  rmats.InvariantC
58e0: 75 6c 74 75 72 65 3a 0d 0a 20 20 20 20 20 20 20  ulture:..       
58f0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
5900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5910: 69 66 20 28 66 6f 72 6d 61 74 53 74 72 69 6e 67  if (formatString
5920: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
5930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5940: 20 20 20 72 65 74 75 72 6e 20 44 61 74 65 54 69     return DateTi
5950: 6d 65 2e 53 70 65 63 69 66 79 4b 69 6e 64 28 44  me.SpecifyKind(D
5960: 61 74 65 54 69 6d 65 2e 50 61 72 73 65 45 78 61  ateTime.ParseExa
5970: 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ct(..           
5980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5990: 20 64 61 74 65 54 65 78 74 2c 20 66 6f 72 6d 61   dateText, forma
59a0: 74 53 74 72 69 6e 67 2c 0d 0a 20 20 20 20 20 20  tString,..      
59b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
59c0: 20 20 20 20 20 20 44 61 74 65 54 69 6d 65 46 6f        DateTimeFo
59d0: 72 6d 61 74 49 6e 66 6f 2e 49 6e 76 61 72 69 61  rmatInfo.Invaria
59e0: 6e 74 49 6e 66 6f 2c 0d 0a 20 20 20 20 20 20 20  ntInfo,..       
59f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a00: 20 20 20 20 20 6b 69 6e 64 20 3d 3d 20 44 61 74       kind == Dat
5a10: 65 54 69 6d 65 4b 69 6e 64 2e 55 74 63 20 3f 0d  eTimeKind.Utc ?.
5a20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5a30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a40: 20 44 61 74 65 54 69 6d 65 53 74 79 6c 65 73 2e   DateTimeStyles.
5a50: 41 64 6a 75 73 74 54 6f 55 6e 69 76 65 72 73 61  AdjustToUniversa
5a60: 6c 20 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  l :..           
5a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a80: 20 20 20 20 20 44 61 74 65 54 69 6d 65 53 74 79       DateTimeSty
5a90: 6c 65 73 2e 4e 6f 6e 65 29 2c 0d 0a 20 20 20 20  les.None),..    
5aa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ab0: 20 20 20 20 20 20 20 20 6b 69 6e 64 29 3b 0d 0a          kind);..
5ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ad0: 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
5ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5af0: 20 20 72 65 74 75 72 6e 20 44 61 74 65 54 69 6d    return DateTim
5b00: 65 2e 53 70 65 63 69 66 79 4b 69 6e 64 28 44 61  e.SpecifyKind(Da
5b10: 74 65 54 69 6d 65 2e 50 61 72 73 65 28 0d 0a 20  teTime.Parse(.. 
5b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b30: 20 20 20 20 20 20 20 20 20 20 20 64 61 74 65 54             dateT
5b40: 65 78 74 2c 20 44 61 74 65 54 69 6d 65 46 6f 72  ext, DateTimeFor
5b50: 6d 61 74 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e  matInfo.Invarian
5b60: 74 49 6e 66 6f 2c 0d 0a 20 20 20 20 20 20 20 20  tInfo,..        
5b70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b80: 20 20 20 20 6b 69 6e 64 20 3d 3d 20 44 61 74 65      kind == Date
5b90: 54 69 6d 65 4b 69 6e 64 2e 55 74 63 20 3f 0d 0a  TimeKind.Utc ?..
5ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5bc0: 44 61 74 65 54 69 6d 65 53 74 79 6c 65 73 2e 41  DateTimeStyles.A
5bd0: 64 6a 75 73 74 54 6f 55 6e 69 76 65 72 73 61 6c  djustToUniversal
5be0: 20 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   :..            
5bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c00: 20 20 20 20 44 61 74 65 54 69 6d 65 53 74 79 6c      DateTimeStyl
5c10: 65 73 2e 4e 6f 6e 65 29 2c 0d 0a 20 20 20 20 20  es.None),..     
5c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c30: 20 20 20 20 20 20 20 6b 69 6e 64 29 3b 0d 0a 20         kind);.. 
5c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
5c50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
5c60: 73 65 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72  se SQLiteDateFor
5c70: 6d 61 74 73 2e 43 75 72 72 65 6e 74 43 75 6c 74  mats.CurrentCult
5c80: 75 72 65 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  ure:..          
5c90: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
5ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
5cb0: 28 66 6f 72 6d 61 74 53 74 72 69 6e 67 20 21 3d  (formatString !=
5cc0: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
5cd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ce0: 72 65 74 75 72 6e 20 44 61 74 65 54 69 6d 65 2e  return DateTime.
5cf0: 53 70 65 63 69 66 79 4b 69 6e 64 28 44 61 74 65  SpecifyKind(Date
5d00: 54 69 6d 65 2e 50 61 72 73 65 45 78 61 63 74 28  Time.ParseExact(
5d10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5d20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61                da
5d30: 74 65 54 65 78 74 2c 20 66 6f 72 6d 61 74 53 74  teText, formatSt
5d40: 72 69 6e 67 2c 0d 0a 20 20 20 20 20 20 20 20 20  ring,..         
5d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5d60: 20 20 20 44 61 74 65 54 69 6d 65 46 6f 72 6d 61     DateTimeForma
5d70: 74 49 6e 66 6f 2e 43 75 72 72 65 6e 74 49 6e 66  tInfo.CurrentInf
5d80: 6f 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o,..            
5d90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5da0: 6b 69 6e 64 20 3d 3d 20 44 61 74 65 54 69 6d 65  kind == DateTime
5db0: 4b 69 6e 64 2e 55 74 63 20 3f 0d 0a 20 20 20 20  Kind.Utc ?..    
5dc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5dd0: 20 20 20 20 20 20 20 20 20 20 20 20 44 61 74 65              Date
5de0: 54 69 6d 65 53 74 79 6c 65 73 2e 41 64 6a 75 73  TimeStyles.Adjus
5df0: 74 54 6f 55 6e 69 76 65 72 73 61 6c 20 3a 0d 0a  tToUniversal :..
5e00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5e10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5e20: 44 61 74 65 54 69 6d 65 53 74 79 6c 65 73 2e 4e  DateTimeStyles.N
5e30: 6f 6e 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  one),..         
5e40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5e50: 20 20 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20 20     kind);..     
5e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
5e70: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
5e80: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
5e90: 75 72 6e 20 44 61 74 65 54 69 6d 65 2e 53 70 65  urn DateTime.Spe
5ea0: 63 69 66 79 4b 69 6e 64 28 44 61 74 65 54 69 6d  cifyKind(DateTim
5eb0: 65 2e 50 61 72 73 65 28 0d 0a 20 20 20 20 20 20  e.Parse(..      
5ec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ed0: 20 20 20 20 20 20 64 61 74 65 54 65 78 74 2c 20        dateText, 
5ee0: 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 49 6e  DateTimeFormatIn
5ef0: 66 6f 2e 43 75 72 72 65 6e 74 49 6e 66 6f 2c 0d  fo.CurrentInfo,.
5f00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 69 6e               kin
5f20: 64 20 3d 3d 20 44 61 74 65 54 69 6d 65 4b 69 6e  d == DateTimeKin
5f30: 64 2e 55 74 63 20 3f 0d 0a 20 20 20 20 20 20 20  d.Utc ?..       
5f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f50: 20 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d           DateTim
5f60: 65 53 74 79 6c 65 73 2e 41 64 6a 75 73 74 54 6f  eStyles.AdjustTo
5f70: 55 6e 69 76 65 72 73 61 6c 20 3a 0d 0a 20 20 20  Universal :..   
5f80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 44 61 74               Dat
5fa0: 65 54 69 6d 65 53 74 79 6c 65 73 2e 4e 6f 6e 65  eTimeStyles.None
5fb0: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
5fc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5fd0: 6b 69 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20 20  kind);..        
5fe0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
5ff0: 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a 20         default: 
6000: 2f 2a 20 49 53 4f 2d 38 36 30 31 20 2a 2f 0d 0a  /* ISO-8601 */..
6010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6020: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
6030: 20 20 20 20 20 20 20 69 66 20 28 66 6f 72 6d 61         if (forma
6040: 74 53 74 72 69 6e 67 20 21 3d 20 6e 75 6c 6c 29  tString != null)
6050: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6060: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
6070: 20 44 61 74 65 54 69 6d 65 2e 53 70 65 63 69 66   DateTime.Specif
6080: 79 4b 69 6e 64 28 44 61 74 65 54 69 6d 65 2e 50  yKind(DateTime.P
6090: 61 72 73 65 45 78 61 63 74 28 0d 0a 20 20 20 20  arseExact(..    
60a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
60b0: 20 20 20 20 20 20 20 20 64 61 74 65 54 65 78 74          dateText
60c0: 2c 20 66 6f 72 6d 61 74 53 74 72 69 6e 67 2c 0d  , formatString,.
60d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
60e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 44 61 74               Dat
60f0: 65 54 69 6d 65 46 6f 72 6d 61 74 49 6e 66 6f 2e  eTimeFormatInfo.
6100: 49 6e 76 61 72 69 61 6e 74 49 6e 66 6f 2c 0d 0a  InvariantInfo,..
6110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6120: 20 20 20 20 20 20 20 20 20 20 20 20 6b 69 6e 64              kind
6130: 20 3d 3d 20 44 61 74 65 54 69 6d 65 4b 69 6e 64   == DateTimeKind
6140: 2e 55 74 63 20 3f 0d 0a 20 20 20 20 20 20 20 20  .Utc ?..        
6150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6160: 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65          DateTime
6170: 53 74 79 6c 65 73 2e 41 64 6a 75 73 74 54 6f 55  Styles.AdjustToU
6180: 6e 69 76 65 72 73 61 6c 20 3a 0d 0a 20 20 20 20  niversal :..    
6190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
61a0: 20 20 20 20 20 20 20 20 20 20 20 20 44 61 74 65              Date
61b0: 54 69 6d 65 53 74 79 6c 65 73 2e 4e 6f 6e 65 29  TimeStyles.None)
61c0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
61d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b                 k
61e0: 69 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ind);..         
61f0: 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d             else.
6200: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6210: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
6220: 44 61 74 65 54 69 6d 65 2e 53 70 65 63 69 66 79  DateTime.Specify
6230: 4b 69 6e 64 28 44 61 74 65 54 69 6d 65 2e 50 61  Kind(DateTime.Pa
6240: 72 73 65 45 78 61 63 74 28 0d 0a 20 20 20 20 20  rseExact(..     
6250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6260: 20 20 20 20 20 20 20 64 61 74 65 54 65 78 74 2c         dateText,
6270: 20 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74   _datetimeFormat
6280: 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s,..            
6290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
62a0: 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 49 6e  DateTimeFormatIn
62b0: 66 6f 2e 49 6e 76 61 72 69 61 6e 74 49 6e 66 6f  fo.InvariantInfo
62c0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
62d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b                 k
62e0: 69 6e 64 20 3d 3d 20 44 61 74 65 54 69 6d 65 4b  ind == DateTimeK
62f0: 69 6e 64 2e 55 74 63 20 3f 0d 0a 20 20 20 20 20  ind.Utc ?..     
6300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6310: 20 20 20 20 20 20 20 20 20 20 20 44 61 74 65 54             DateT
6320: 69 6d 65 53 74 79 6c 65 73 2e 41 64 6a 75 73 74  imeStyles.Adjust
6330: 54 6f 55 6e 69 76 65 72 73 61 6c 20 3a 0d 0a 20  ToUniversal :.. 
6340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44                 D
6360: 61 74 65 54 69 6d 65 53 74 79 6c 65 73 2e 4e 6f  ateTimeStyles.No
6370: 6e 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ne),..          
6380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6390: 20 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20 20 20    kind);..      
63a0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
63b0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d       }..    }...
63c0: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
63d0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76  y>..    /// Conv
63e0: 65 72 74 73 20 61 20 6a 75 6c 69 61 6e 64 61 79  erts a julianday
63f0: 20 76 61 6c 75 65 20 69 6e 74 6f 20 61 20 44 61   value into a Da
6400: 74 65 54 69 6d 65 0d 0a 20 20 20 20 2f 2f 2f 20  teTime..    /// 
6410: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
6420: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
6430: 22 6a 75 6c 69 61 6e 44 61 79 22 3e 54 68 65 20  "julianDay">The 
6440: 76 61 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72 74  value to convert
6450: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
6460: 2f 20 3c 72 65 74 75 72 6e 73 3e 41 20 2e 4e 45  / <returns>A .NE
6470: 54 20 44 61 74 65 54 69 6d 65 3c 2f 72 65 74 75  T DateTime</retu
6480: 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63  rns>..    public
6490: 20 44 61 74 65 54 69 6d 65 20 54 6f 44 61 74 65   DateTime ToDate
64a0: 54 69 6d 65 28 64 6f 75 62 6c 65 20 6a 75 6c 69  Time(double juli
64b0: 61 6e 44 61 79 29 0d 0a 20 20 20 20 7b 0d 0a 20  anDay)..    {.. 
64c0: 20 20 20 20 20 72 65 74 75 72 6e 20 54 6f 44 61       return ToDa
64d0: 74 65 54 69 6d 65 28 6a 75 6c 69 61 6e 44 61 79  teTime(julianDay
64e0: 2c 20 5f 64 61 74 65 74 69 6d 65 4b 69 6e 64 29  , _datetimeKind)
64f0: 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
6500: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
6510: 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20     /// Converts 
6520: 61 20 6a 75 6c 69 61 6e 64 61 79 20 76 61 6c 75  a julianday valu
6530: 65 20 69 6e 74 6f 20 61 20 44 61 74 65 54 69 6d  e into a DateTim
6540: 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  e..    /// </sum
6550: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
6560: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6a 75 6c 69  param name="juli
6570: 61 6e 44 61 79 22 3e 54 68 65 20 76 61 6c 75 65  anDay">The value
6580: 20 74 6f 20 63 6f 6e 76 65 72 74 3c 2f 70 61 72   to convert</par
6590: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
65a0: 72 61 6d 20 6e 61 6d 65 3d 22 6b 69 6e 64 22 3e  ram name="kind">
65b0: 54 68 65 20 44 61 74 65 54 69 6d 65 4b 69 6e 64  The DateTimeKind
65c0: 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72 61 6d 3e   to use.</param>
65d0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
65e0: 6e 73 3e 41 20 2e 4e 45 54 20 44 61 74 65 54 69  ns>A .NET DateTi
65f0: 6d 65 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  me</returns>..  
6600: 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
6610: 44 61 74 65 54 69 6d 65 20 54 6f 44 61 74 65 54  DateTime ToDateT
6620: 69 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 64 6f  ime(..        do
6630: 75 62 6c 65 20 6a 75 6c 69 61 6e 44 61 79 2c 0d  uble julianDay,.
6640: 0a 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d  .        DateTim
6650: 65 4b 69 6e 64 20 6b 69 6e 64 0d 0a 20 20 20 20  eKind kind..    
6660: 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20      )..    {..  
6670: 20 20 20 20 20 20 6c 6f 6e 67 20 6a 64 20 3d 20        long jd = 
6680: 44 6f 75 62 6c 65 54 6f 4a 64 28 6a 75 6c 69 61  DoubleToJd(julia
6690: 6e 44 61 79 29 3b 0d 0a 20 20 20 20 20 20 20 20  nDay);..        
66a0: 44 61 74 65 54 69 6d 65 20 64 61 74 65 54 69 6d  DateTime dateTim
66b0: 65 59 4d 44 20 3d 20 63 6f 6d 70 75 74 65 59 4d  eYMD = computeYM
66c0: 44 28 6a 64 2c 20 6e 75 6c 6c 29 3b 0d 0a 20 20  D(jd, null);..  
66d0: 20 20 20 20 20 20 44 61 74 65 54 69 6d 65 20 64        DateTime d
66e0: 61 74 65 54 69 6d 65 48 4d 53 20 3d 20 63 6f 6d  ateTimeHMS = com
66f0: 70 75 74 65 48 4d 53 28 6a 64 2c 20 6e 75 6c 6c  puteHMS(jd, null
6700: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65  );....        re
6710: 74 75 72 6e 20 6e 65 77 20 44 61 74 65 54 69 6d  turn new DateTim
6720: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
6730: 64 61 74 65 54 69 6d 65 59 4d 44 2e 59 65 61 72  dateTimeYMD.Year
6740: 2c 20 64 61 74 65 54 69 6d 65 59 4d 44 2e 4d 6f  , dateTimeYMD.Mo
6750: 6e 74 68 2c 20 64 61 74 65 54 69 6d 65 59 4d 44  nth, dateTimeYMD
6760: 2e 44 61 79 2c 0d 0a 20 20 20 20 20 20 20 20 20  .Day,..         
6770: 20 20 20 64 61 74 65 54 69 6d 65 48 4d 53 2e 48     dateTimeHMS.H
6780: 6f 75 72 2c 20 64 61 74 65 54 69 6d 65 48 4d 53  our, dateTimeHMS
6790: 2e 4d 69 6e 75 74 65 2c 20 64 61 74 65 54 69 6d  .Minute, dateTim
67a0: 65 48 4d 53 2e 53 65 63 6f 6e 64 2c 0d 0a 20 20  eHMS.Second,..  
67b0: 20 20 20 20 20 20 20 20 20 20 64 61 74 65 54 69            dateTi
67c0: 6d 65 48 4d 53 2e 4d 69 6c 6c 69 73 65 63 6f 6e  meHMS.Millisecon
67d0: 64 2c 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20 7d  d, kind);..    }
67e0: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
67f0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43  mary>..    /// C
6800: 6f 6e 76 65 72 74 73 20 74 68 65 20 73 70 65 63  onverts the spec
6810: 69 66 69 65 64 20 6e 75 6d 62 65 72 20 6f 66 20  ified number of 
6820: 73 65 63 6f 6e 64 73 20 66 72 6f 6d 20 74 68 65  seconds from the
6830: 20 55 6e 69 78 20 65 70 6f 63 68 20 69 6e 74 6f   Unix epoch into
6840: 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65   a..    /// <see
6850: 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d 65 22   cref="DateTime"
6860: 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20   /> value...    
6870: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
6880: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
6890: 61 6d 65 3d 22 73 65 63 6f 6e 64 73 22 3e 0d 0a  ame="seconds">..
68a0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62      /// The numb
68b0: 65 72 20 6f 66 20 77 68 6f 6c 65 20 73 65 63 6f  er of whole seco
68c0: 6e 64 73 20 73 69 6e 63 65 20 74 68 65 20 55 6e  nds since the Un
68d0: 69 78 20 65 70 6f 63 68 2e 0d 0a 20 20 20 20 2f  ix epoch...    /
68e0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
68f0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
6900: 3d 22 6b 69 6e 64 22 3e 0d 0a 20 20 20 20 2f 2f  ="kind">..    //
6910: 2f 20 45 69 74 68 65 72 20 55 74 63 20 6f 72 20  / Either Utc or 
6920: 4c 6f 63 61 6c 20 74 69 6d 65 2e 0d 0a 20 20 20  Local time...   
6930: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
6940: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
6950: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65  ..    /// The ne
6960: 77 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74  w <see cref="Dat
6970: 65 54 69 6d 65 22 20 2f 3e 20 76 61 6c 75 65 2e  eTime" /> value.
6980: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75  ..    /// </retu
6990: 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  rns>..    intern
69a0: 61 6c 20 73 74 61 74 69 63 20 44 61 74 65 54 69  al static DateTi
69b0: 6d 65 20 54 6f 44 61 74 65 54 69 6d 65 28 69 6e  me ToDateTime(in
69c0: 74 20 73 65 63 6f 6e 64 73 2c 20 44 61 74 65 54  t seconds, DateT
69d0: 69 6d 65 4b 69 6e 64 20 6b 69 6e 64 29 0d 0a 20  imeKind kind).. 
69e0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65     {..        re
69f0: 74 75 72 6e 20 44 61 74 65 54 69 6d 65 2e 53 70  turn DateTime.Sp
6a00: 65 63 69 66 79 4b 69 6e 64 28 55 6e 69 78 45 70  ecifyKind(UnixEp
6a10: 6f 63 68 2e 41 64 64 53 65 63 6f 6e 64 73 28 73  och.AddSeconds(s
6a20: 65 63 6f 6e 64 73 29 2c 20 6b 69 6e 64 29 3b 0d  econds), kind);.
6a30: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
6a40: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
6a50: 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 74 68   /// Converts th
6a60: 65 20 73 70 65 63 69 66 69 65 64 20 6e 75 6d 62  e specified numb
6a70: 65 72 20 6f 66 20 74 69 63 6b 73 20 73 69 6e 63  er of ticks sinc
6a80: 65 20 74 68 65 20 65 70 6f 63 68 20 69 6e 74 6f  e the epoch into
6a90: 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65   a..    /// <see
6aa0: 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d 65 22   cref="DateTime"
6ab0: 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20   /> value...    
6ac0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
6ad0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
6ae0: 61 6d 65 3d 22 74 69 63 6b 73 22 3e 0d 0a 20 20  ame="ticks">..  
6af0: 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72    /// The number
6b00: 20 6f 66 20 77 68 6f 6c 65 20 74 69 63 6b 73 20   of whole ticks 
6b10: 73 69 6e 63 65 20 74 68 65 20 65 70 6f 63 68 2e  since the epoch.
6b20: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
6b30: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
6b40: 61 6d 20 6e 61 6d 65 3d 22 6b 69 6e 64 22 3e 0d  am name="kind">.
6b50: 0a 20 20 20 20 2f 2f 2f 20 45 69 74 68 65 72 20  .    /// Either 
6b60: 55 74 63 20 6f 72 20 4c 6f 63 61 6c 20 74 69 6d  Utc or Local tim
6b70: 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  e...    /// </pa
6b80: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
6b90: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f  eturns>..    ///
6ba0: 20 54 68 65 20 6e 65 77 20 3c 73 65 65 20 63 72   The new <see cr
6bb0: 65 66 3d 22 44 61 74 65 54 69 6d 65 22 20 2f 3e  ef="DateTime" />
6bc0: 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f   value...    ///
6bd0: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
6be0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
6bf0: 20 44 61 74 65 54 69 6d 65 20 54 6f 44 61 74 65   DateTime ToDate
6c00: 54 69 6d 65 28 6c 6f 6e 67 20 74 69 63 6b 73 2c  Time(long ticks,
6c10: 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 20 6b 69   DateTimeKind ki
6c20: 6e 64 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  nd)..    {..    
6c30: 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20 44      return new D
6c40: 61 74 65 54 69 6d 65 28 74 69 63 6b 73 2c 20 6b  ateTime(ticks, k
6c50: 69 6e 64 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  ind);..    }....
6c60: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
6c70: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65  >..    /// Conve
6c80: 72 74 73 20 61 20 44 61 74 65 54 69 6d 65 20 73  rts a DateTime s
6c90: 74 72 75 63 74 20 74 6f 20 61 20 4a 75 6c 69 61  truct to a Julia
6ca0: 6e 44 61 79 20 64 6f 75 62 6c 65 0d 0a 20 20 20  nDay double..   
6cb0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
6cc0: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
6cd0: 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 54 68 65  name="value">The
6ce0: 20 44 61 74 65 54 69 6d 65 20 74 6f 20 63 6f 6e   DateTime to con
6cf0: 76 65 72 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  vert</param>..  
6d00: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54    /// <returns>T
6d10: 68 65 20 4a 75 6c 69 61 6e 44 61 79 20 76 61 6c  he JulianDay val
6d20: 75 65 20 74 68 65 20 44 61 74 65 74 69 6d 65 20  ue the Datetime 
6d30: 72 65 70 72 65 73 65 6e 74 73 3c 2f 72 65 74 75  represents</retu
6d40: 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63  rns>..    public
6d50: 20 73 74 61 74 69 63 20 64 6f 75 62 6c 65 20 54   static double T
6d60: 6f 4a 75 6c 69 61 6e 44 61 79 28 44 61 74 65 54  oJulianDay(DateT
6d70: 69 6d 65 20 76 61 6c 75 65 29 0d 0a 20 20 20 20  ime value)..    
6d80: 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  {..        retur
6d90: 6e 20 4a 64 54 6f 44 6f 75 62 6c 65 28 63 6f 6d  n JdToDouble(com
6da0: 70 75 74 65 4a 44 28 76 61 6c 75 65 29 29 3b 0d  puteJD(value));.
6db0: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
6dc0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
6dd0: 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20   /// Converts a 
6de0: 44 61 74 65 54 69 6d 65 20 73 74 72 75 63 74 20  DateTime struct 
6df0: 74 6f 20 74 68 65 20 77 68 6f 6c 65 20 6e 75 6d  to the whole num
6e00: 62 65 72 20 6f 66 20 73 65 63 6f 6e 64 73 20 73  ber of seconds s
6e10: 69 6e 63 65 20 74 68 65 0d 0a 20 20 20 20 2f 2f  ince the..    //
6e20: 2f 20 55 6e 69 78 20 65 70 6f 63 68 2e 0d 0a 20  / Unix epoch... 
6e30: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
6e40: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
6e50: 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 54  m name="value">T
6e60: 68 65 20 44 61 74 65 54 69 6d 65 20 74 6f 20 63  he DateTime to c
6e70: 6f 6e 76 65 72 74 3c 2f 70 61 72 61 6d 3e 0d 0a  onvert</param>..
6e80: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
6e90: 3e 54 68 65 20 77 68 6f 6c 65 20 6e 75 6d 62 65  >The whole numbe
6ea0: 72 20 6f 66 20 73 65 63 6f 6e 64 73 20 73 69 6e  r of seconds sin
6eb0: 63 65 20 74 68 65 20 55 6e 69 78 20 65 70 6f 63  ce the Unix epoc
6ec0: 68 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  h</returns>..   
6ed0: 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 6c   public static l
6ee0: 6f 6e 67 20 54 6f 55 6e 69 78 45 70 6f 63 68 28  ong ToUnixEpoch(
6ef0: 44 61 74 65 54 69 6d 65 20 76 61 6c 75 65 29 0d  DateTime value).
6f00: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
6f10: 72 65 74 75 72 6e 20 28 76 61 6c 75 65 2e 53 75  return (value.Su
6f20: 62 74 72 61 63 74 28 55 6e 69 78 45 70 6f 63 68  btract(UnixEpoch
6f30: 29 2e 54 69 63 6b 73 20 2f 20 54 69 6d 65 53 70  ).Ticks / TimeSp
6f40: 61 6e 2e 54 69 63 6b 73 50 65 72 53 65 63 6f 6e  an.TicksPerSecon
6f50: 64 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  d);..    }....  
6f60: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
6f70: 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73  .    /// Returns
6f80: 20 74 68 65 20 44 61 74 65 54 69 6d 65 20 66 6f   the DateTime fo
6f90: 72 6d 61 74 20 73 74 72 69 6e 67 20 74 6f 20 75  rmat string to u
6fa0: 73 65 20 66 6f 72 20 74 68 65 20 73 70 65 63 69  se for the speci
6fb0: 66 69 65 64 20 44 61 74 65 54 69 6d 65 4b 69 6e  fied DateTimeKin
6fc0: 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20 3c  d...    /// If <
6fd0: 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 66  paramref name="f
6fe0: 6f 72 6d 61 74 53 74 72 69 6e 67 22 20 2f 3e 20  ormatString" /> 
6ff0: 69 73 20 6e 6f 74 20 6e 75 6c 6c 2c 20 69 74 20  is not null, it 
7000: 77 69 6c 6c 20 62 65 20 72 65 74 75 72 6e 65 64  will be returned
7010: 20 76 65 72 62 61 74 69 6d 2e 0d 0a 20 20 20 20   verbatim...    
7020: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
7030: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
7040: 61 6d 65 3d 22 6b 69 6e 64 22 3e 54 68 65 20 44  ame="kind">The D
7050: 61 74 65 54 69 6d 65 4b 69 6e 64 20 74 6f 20 75  ateTimeKind to u
7060: 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  se.</param>..   
7070: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
7080: 3d 22 66 6f 72 6d 61 74 53 74 72 69 6e 67 22 3e  ="formatString">
7090: 54 68 65 20 44 61 74 65 54 69 6d 65 20 66 6f 72  The DateTime for
70a0: 6d 61 74 20 73 74 72 69 6e 67 20 74 6f 20 75 73  mat string to us
70b0: 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  e.</param>..    
70c0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
70d0: 20 20 20 2f 2f 2f 20 54 68 65 20 44 61 74 65 54     /// The DateT
70e0: 69 6d 65 20 66 6f 72 6d 61 74 20 73 74 72 69 6e  ime format strin
70f0: 67 20 74 6f 20 75 73 65 20 66 6f 72 20 74 68 65  g to use for the
7100: 20 73 70 65 63 69 66 69 65 64 20 44 61 74 65 54   specified DateT
7110: 69 6d 65 4b 69 6e 64 2e 0d 0a 20 20 20 20 2f 2f  imeKind...    //
7120: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
7130: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
7140: 20 73 74 72 69 6e 67 20 47 65 74 44 61 74 65 54   string GetDateT
7150: 69 6d 65 4b 69 6e 64 46 6f 72 6d 61 74 28 0d 0a  imeKindFormat(..
7160: 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65          DateTime
7170: 4b 69 6e 64 20 6b 69 6e 64 2c 0d 0a 20 20 20 20  Kind kind,..    
7180: 20 20 20 20 73 74 72 69 6e 67 20 66 6f 72 6d 61      string forma
7190: 74 53 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20  tString..       
71a0: 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20   )..    {..     
71b0: 20 20 20 69 66 20 28 66 6f 72 6d 61 74 53 74 72     if (formatStr
71c0: 69 6e 67 20 21 3d 20 6e 75 6c 6c 29 20 72 65 74  ing != null) ret
71d0: 75 72 6e 20 66 6f 72 6d 61 74 53 74 72 69 6e 67  urn formatString
71e0: 3b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  ;..        retur
71f0: 6e 20 28 6b 69 6e 64 20 3d 3d 20 44 61 74 65 54  n (kind == DateT
7200: 69 6d 65 4b 69 6e 64 2e 55 74 63 29 20 3f 20 5f  imeKind.Utc) ? _
7210: 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 55 74  datetimeFormatUt
7220: 63 20 3a 20 5f 64 61 74 65 74 69 6d 65 46 6f 72  c : _datetimeFor
7230: 6d 61 74 4c 6f 63 61 6c 3b 0d 0a 20 20 20 20 7d  matLocal;..    }
7240: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
7250: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43  mary>..    /// C
7260: 6f 6e 76 65 72 74 73 20 61 20 73 74 72 69 6e 67  onverts a string
7270: 20 69 6e 74 6f 20 61 20 44 61 74 65 54 69 6d 65   into a DateTime
7280: 2c 20 75 73 69 6e 67 20 74 68 65 20 44 61 74 65  , using the Date
7290: 54 69 6d 65 46 6f 72 6d 61 74 2c 20 44 61 74 65  TimeFormat, Date
72a0: 54 69 6d 65 4b 69 6e 64 2c 0d 0a 20 20 20 20 2f  TimeKind,..    /
72b0: 2f 2f 20 61 6e 64 20 44 61 74 65 54 69 6d 65 46  // and DateTimeF
72c0: 6f 72 6d 61 74 53 74 72 69 6e 67 20 73 70 65 63  ormatString spec
72d0: 69 66 69 65 64 20 66 6f 72 20 74 68 65 20 63 6f  ified for the co
72e0: 6e 6e 65 63 74 69 6f 6e 20 77 68 65 6e 20 69 74  nnection when it
72f0: 20 77 61 73 20 6f 70 65 6e 65 64 2e 0d 0a 20 20   was opened...  
7300: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
7310: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
7320: 20 6e 61 6d 65 3d 22 64 61 74 65 56 61 6c 75 65   name="dateValue
7330: 22 3e 54 68 65 20 44 61 74 65 54 69 6d 65 20 76  ">The DateTime v
7340: 61 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72 74 3c  alue to convert<
7350: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
7360: 20 3c 72 65 74 75 72 6e 73 3e 45 69 74 68 65 72   <returns>Either
7370: 20 61 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69   a string contai
7380: 6e 69 6e 67 20 74 68 65 20 6c 6f 6e 67 20 69 6e  ning the long in
7390: 74 65 67 65 72 20 6e 75 6d 62 65 72 20 6f 66 20  teger number of 
73a0: 31 30 30 2d 6e 61 6e 6f 73 65 63 6f 6e 64 20 75  100-nanosecond u
73b0: 6e 69 74 73 20 73 69 6e 63 65 20 53 79 73 74 65  nits since Syste
73c0: 6d 2e 44 61 74 65 54 69 6d 65 2e 4d 69 6e 56 61  m.DateTime.MinVa
73d0: 6c 75 65 2c 20 61 0d 0a 20 20 20 20 2f 2f 2f 20  lue, a..    /// 
73e0: 4a 75 6c 69 61 6e 20 64 61 79 20 64 6f 75 62 6c  Julian day doubl
73f0: 65 2c 20 61 6e 20 69 6e 74 65 67 65 72 20 6e 75  e, an integer nu
7400: 6d 62 65 72 20 6f 66 20 73 65 63 6f 6e 64 73 20  mber of seconds 
7410: 73 69 6e 63 65 20 74 68 65 20 55 6e 69 78 20 65  since the Unix e
7420: 70 6f 63 68 2c 20 61 20 63 75 6c 74 75 72 65 2d  poch, a culture-
7430: 69 6e 64 65 70 65 6e 64 65 6e 74 20 66 6f 72 6d  independent form
7440: 61 74 74 65 64 20 64 61 74 65 20 61 6e 64 20 74  atted date and t
7450: 69 6d 65 0d 0a 20 20 20 20 2f 2f 2f 20 73 74 72  ime..    /// str
7460: 69 6e 67 2c 20 61 20 66 6f 72 6d 61 74 74 65 64  ing, a formatted
7470: 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 73   date and time s
7480: 74 72 69 6e 67 20 69 6e 20 74 68 65 20 63 75 72  tring in the cur
7490: 72 65 6e 74 20 63 75 6c 74 75 72 65 2c 20 6f 72  rent culture, or
74a0: 20 61 6e 20 49 53 4f 38 36 30 31 2d 66 6f 72 6d   an ISO8601-form
74b0: 61 74 20 64 61 74 65 2f 74 69 6d 65 20 73 74 72  at date/time str
74c0: 69 6e 67 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  ing.</returns>..
74d0: 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e      public strin
74e0: 67 20 54 6f 53 74 72 69 6e 67 28 44 61 74 65 54  g ToString(DateT
74f0: 69 6d 65 20 64 61 74 65 56 61 6c 75 65 29 0d 0a  ime dateValue)..
7500: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 72      {..        r
7510: 65 74 75 72 6e 20 54 6f 53 74 72 69 6e 67 28 64  eturn ToString(d
7520: 61 74 65 56 61 6c 75 65 2c 20 5f 64 61 74 65 74  ateValue, _datet
7530: 69 6d 65 46 6f 72 6d 61 74 2c 20 5f 64 61 74 65  imeFormat, _date
7540: 74 69 6d 65 4b 69 6e 64 2c 20 5f 64 61 74 65 74  timeKind, _datet
7550: 69 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 29  imeFormatString)
7560: 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
7570: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
7580: 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20     /// Converts 
7590: 61 20 73 74 72 69 6e 67 20 69 6e 74 6f 20 61 20  a string into a 
75a0: 44 61 74 65 54 69 6d 65 2c 20 75 73 69 6e 67 20  DateTime, using 
75b0: 74 68 65 20 44 61 74 65 54 69 6d 65 46 6f 72 6d  the DateTimeForm
75c0: 61 74 2c 20 44 61 74 65 54 69 6d 65 4b 69 6e 64  at, DateTimeKind
75d0: 2c 0d 0a 20 20 20 20 2f 2f 2f 20 61 6e 64 20 44  ,..    /// and D
75e0: 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 53 74 72  ateTimeFormatStr
75f0: 69 6e 67 20 73 70 65 63 69 66 69 65 64 20 66 6f  ing specified fo
7600: 72 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  r the connection
7610: 20 77 68 65 6e 20 69 74 20 77 61 73 20 6f 70 65   when it was ope
7620: 6e 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ned...    /// </
7630: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
7640: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64  / <param name="d
7650: 61 74 65 56 61 6c 75 65 22 3e 54 68 65 20 44 61  ateValue">The Da
7660: 74 65 54 69 6d 65 20 76 61 6c 75 65 20 74 6f 20  teTime value to 
7670: 63 6f 6e 76 65 72 74 3c 2f 70 61 72 61 6d 3e 0d  convert</param>.
7680: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
7690: 6e 61 6d 65 3d 22 66 6f 72 6d 61 74 22 3e 54 68  name="format">Th
76a0: 65 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d  e SQLiteDateForm
76b0: 61 74 73 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72  ats to use.</par
76c0: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
76d0: 72 61 6d 20 6e 61 6d 65 3d 22 6b 69 6e 64 22 3e  ram name="kind">
76e0: 54 68 65 20 44 61 74 65 54 69 6d 65 4b 69 6e 64  The DateTimeKind
76f0: 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72 61 6d 3e   to use.</param>
7700: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
7710: 20 6e 61 6d 65 3d 22 66 6f 72 6d 61 74 53 74 72   name="formatStr
7720: 69 6e 67 22 3e 54 68 65 20 44 61 74 65 54 69 6d  ing">The DateTim
7730: 65 20 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 20  e format string 
7740: 74 6f 20 75 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d  to use.</param>.
7750: 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
7760: 73 3e 45 69 74 68 65 72 20 61 20 73 74 72 69 6e  s>Either a strin
7770: 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65  g containing the
7780: 20 6c 6f 6e 67 20 69 6e 74 65 67 65 72 20 6e 75   long integer nu
7790: 6d 62 65 72 20 6f 66 20 31 30 30 2d 6e 61 6e 6f  mber of 100-nano
77a0: 73 65 63 6f 6e 64 20 75 6e 69 74 73 20 73 69 6e  second units sin
77b0: 63 65 20 53 79 73 74 65 6d 2e 44 61 74 65 54 69  ce System.DateTi
77c0: 6d 65 2e 4d 69 6e 56 61 6c 75 65 2c 20 61 0d 0a  me.MinValue, a..
77d0: 20 20 20 20 2f 2f 2f 20 4a 75 6c 69 61 6e 20 64      /// Julian d
77e0: 61 79 20 64 6f 75 62 6c 65 2c 20 61 6e 20 69 6e  ay double, an in
77f0: 74 65 67 65 72 20 6e 75 6d 62 65 72 20 6f 66 20  teger number of 
7800: 73 65 63 6f 6e 64 73 20 73 69 6e 63 65 20 74 68  seconds since th
7810: 65 20 55 6e 69 78 20 65 70 6f 63 68 2c 20 61 20  e Unix epoch, a 
7820: 63 75 6c 74 75 72 65 2d 69 6e 64 65 70 65 6e 64  culture-independ
7830: 65 6e 74 20 66 6f 72 6d 61 74 74 65 64 20 64 61  ent formatted da
7840: 74 65 20 61 6e 64 20 74 69 6d 65 0d 0a 20 20 20  te and time..   
7850: 20 2f 2f 2f 20 73 74 72 69 6e 67 2c 20 61 20 66   /// string, a f
7860: 6f 72 6d 61 74 74 65 64 20 64 61 74 65 20 61 6e  ormatted date an
7870: 64 20 74 69 6d 65 20 73 74 72 69 6e 67 20 69 6e  d time string in
7880: 20 74 68 65 20 63 75 72 72 65 6e 74 20 63 75 6c   the current cul
7890: 74 75 72 65 2c 20 6f 72 20 61 6e 20 49 53 4f 38  ture, or an ISO8
78a0: 36 30 31 2d 66 6f 72 6d 61 74 20 64 61 74 65 2f  601-format date/
78b0: 74 69 6d 65 20 73 74 72 69 6e 67 2e 3c 2f 72 65  time string.</re
78c0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c  turns>..    publ
78d0: 69 63 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  ic static string
78e0: 20 54 6f 53 74 72 69 6e 67 28 0d 0a 20 20 20 20   ToString(..    
78f0: 20 20 20 20 44 61 74 65 54 69 6d 65 20 64 61 74      DateTime dat
7900: 65 56 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20 20  eValue,..       
7910: 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61   SQLiteDateForma
7920: 74 73 20 66 6f 72 6d 61 74 2c 0d 0a 20 20 20 20  ts format,..    
7930: 20 20 20 20 44 61 74 65 54 69 6d 65 4b 69 6e 64      DateTimeKind
7940: 20 6b 69 6e 64 2c 0d 0a 20 20 20 20 20 20 20 20   kind,..        
7950: 73 74 72 69 6e 67 20 66 6f 72 6d 61 74 53 74 72  string formatStr
7960: 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a  ing..        )..
7970: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 73      {..        s
7980: 77 69 74 63 68 20 28 66 6f 72 6d 61 74 29 0d 0a  witch (format)..
7990: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
79a0: 20 20 20 20 20 20 20 63 61 73 65 20 53 51 4c 69         case SQLi
79b0: 74 65 44 61 74 65 46 6f 72 6d 61 74 73 2e 54 69  teDateFormats.Ti
79c0: 63 6b 73 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  cks:..          
79d0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 61 74        return dat
79e0: 65 56 61 6c 75 65 2e 54 69 63 6b 73 2e 54 6f 53  eValue.Ticks.ToS
79f0: 74 72 69 6e 67 28 43 75 6c 74 75 72 65 49 6e 66  tring(CultureInf
7a00: 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75  o.InvariantCultu
7a10: 72 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  re);..          
7a20: 20 20 63 61 73 65 20 53 51 4c 69 74 65 44 61 74    case SQLiteDat
7a30: 65 46 6f 72 6d 61 74 73 2e 4a 75 6c 69 61 6e 44  eFormats.JulianD
7a40: 61 79 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ay:..           
7a50: 20 20 20 20 20 72 65 74 75 72 6e 20 54 6f 4a 75       return ToJu
7a60: 6c 69 61 6e 44 61 79 28 64 61 74 65 56 61 6c 75  lianDay(dateValu
7a70: 65 29 2e 54 6f 53 74 72 69 6e 67 28 43 75 6c 74  e).ToString(Cult
7a80: 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e  ureInfo.Invarian
7a90: 74 43 75 6c 74 75 72 65 29 3b 0d 0a 20 20 20 20  tCulture);..    
7aa0: 20 20 20 20 20 20 20 20 63 61 73 65 20 53 51 4c          case SQL
7ab0: 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73 2e 55  iteDateFormats.U
7ac0: 6e 69 78 45 70 6f 63 68 3a 0d 0a 20 20 20 20 20  nixEpoch:..     
7ad0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
7ae0: 6e 20 28 28 6c 6f 6e 67 29 28 64 61 74 65 56 61  n ((long)(dateVa
7af0: 6c 75 65 2e 53 75 62 74 72 61 63 74 28 55 6e 69  lue.Subtract(Uni
7b00: 78 45 70 6f 63 68 29 2e 54 69 63 6b 73 20 2f 20  xEpoch).Ticks / 
7b10: 54 69 6d 65 53 70 61 6e 2e 54 69 63 6b 73 50 65  TimeSpan.TicksPe
7b20: 72 53 65 63 6f 6e 64 29 29 2e 54 6f 53 74 72 69  rSecond)).ToStri
7b30: 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ng();..         
7b40: 20 20 20 63 61 73 65 20 53 51 4c 69 74 65 44 61     case SQLiteDa
7b50: 74 65 46 6f 72 6d 61 74 73 2e 49 6e 76 61 72 69  teFormats.Invari
7b60: 61 6e 74 43 75 6c 74 75 72 65 3a 0d 0a 20 20 20  antCulture:..   
7b70: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
7b80: 75 72 6e 20 64 61 74 65 56 61 6c 75 65 2e 54 6f  urn dateValue.To
7b90: 53 74 72 69 6e 67 28 28 66 6f 72 6d 61 74 53 74  String((formatSt
7ba0: 72 69 6e 67 20 21 3d 20 6e 75 6c 6c 29 20 3f 0d  ring != null) ?.
7bb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7bc0: 20 20 20 20 20 66 6f 72 6d 61 74 53 74 72 69 6e       formatStrin
7bd0: 67 20 3a 20 46 75 6c 6c 46 6f 72 6d 61 74 2c 20  g : FullFormat, 
7be0: 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61  CultureInfo.Inva
7bf0: 72 69 61 6e 74 43 75 6c 74 75 72 65 29 3b 0d 0a  riantCulture);..
7c00: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
7c10: 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61   SQLiteDateForma
7c20: 74 73 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  ts.CurrentCultur
7c30: 65 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e:..            
7c40: 20 20 20 20 72 65 74 75 72 6e 20 64 61 74 65 56      return dateV
7c50: 61 6c 75 65 2e 54 6f 53 74 72 69 6e 67 28 28 66  alue.ToString((f
7c60: 6f 72 6d 61 74 53 74 72 69 6e 67 20 21 3d 20 6e  ormatString != n
7c70: 75 6c 6c 29 20 3f 0d 0a 20 20 20 20 20 20 20 20  ull) ?..        
7c80: 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 6d              form
7c90: 61 74 53 74 72 69 6e 67 20 3a 20 46 75 6c 6c 46  atString : FullF
7ca0: 6f 72 6d 61 74 2c 20 43 75 6c 74 75 72 65 49 6e  ormat, CultureIn
7cb0: 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
7cc0: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
7cd0: 20 64 65 66 61 75 6c 74 3a 0d 0a 20 20 20 20 20   default:..     
7ce0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
7cf0: 6e 20 28 64 61 74 65 56 61 6c 75 65 2e 4b 69 6e  n (dateValue.Kin
7d00: 64 20 3d 3d 20 44 61 74 65 54 69 6d 65 4b 69 6e  d == DateTimeKin
7d10: 64 2e 55 6e 73 70 65 63 69 66 69 65 64 29 20 3f  d.Unspecified) ?
7d20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7d30: 20 20 20 20 20 20 44 61 74 65 54 69 6d 65 2e 53        DateTime.S
7d40: 70 65 63 69 66 79 4b 69 6e 64 28 64 61 74 65 56  pecifyKind(dateV
7d50: 61 6c 75 65 2c 20 6b 69 6e 64 29 2e 54 6f 53 74  alue, kind).ToSt
7d60: 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 20  ring(..         
7d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47                 G
7d80: 65 74 44 61 74 65 54 69 6d 65 4b 69 6e 64 46 6f  etDateTimeKindFo
7d90: 72 6d 61 74 28 6b 69 6e 64 2c 20 66 6f 72 6d 61  rmat(kind, forma
7da0: 74 53 74 72 69 6e 67 29 2c 0d 0a 20 20 20 20 20  tString),..     
7db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7dc0: 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
7dd0: 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74  fo.InvariantCult
7de0: 75 72 65 29 20 3a 20 64 61 74 65 56 61 6c 75 65  ure) : dateValue
7df0: 2e 54 6f 53 74 72 69 6e 67 28 0d 0a 20 20 20 20  .ToString(..    
7e00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7e10: 20 20 20 20 47 65 74 44 61 74 65 54 69 6d 65 4b      GetDateTimeK
7e20: 69 6e 64 46 6f 72 6d 61 74 28 64 61 74 65 56 61  indFormat(dateVa
7e30: 6c 75 65 2e 4b 69 6e 64 2c 20 66 6f 72 6d 61 74  lue.Kind, format
7e40: 53 74 72 69 6e 67 29 2c 0d 0a 20 20 20 20 20 20  String),..      
7e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7e60: 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
7e70: 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75  o.InvariantCultu
7e80: 72 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  re);..        }.
7e90: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
7ea0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
7eb0: 20 2f 2f 2f 20 49 6e 74 65 72 6e 61 6c 20 66 75   /// Internal fu
7ec0: 6e 63 74 69 6f 6e 20 74 6f 20 63 6f 6e 76 65 72  nction to conver
7ed0: 74 20 61 20 55 54 46 2d 38 20 65 6e 63 6f 64 65  t a UTF-8 encode
7ee0: 64 20 49 6e 74 50 74 72 20 6f 66 20 74 68 65 20  d IntPtr of the 
7ef0: 73 70 65 63 69 66 69 65 64 20 6c 65 6e 67 74 68  specified length
7f00: 20 74 6f 20 61 20 44 61 74 65 54 69 6d 65 2e 0d   to a DateTime..
7f10: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
7f20: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  ry>..    /// <re
7f30: 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20  marks>..    /// 
7f40: 54 68 69 73 20 69 73 20 61 20 63 6f 6e 76 65 6e  This is a conven
7f50: 69 65 6e 63 65 20 66 75 6e 63 74 69 6f 6e 2c 20  ience function, 
7f60: 77 68 69 63 68 20 66 69 72 73 74 20 63 61 6c 6c  which first call
7f70: 73 20 54 6f 53 74 72 69 6e 67 28 29 20 6f 6e 20  s ToString() on 
7f80: 74 68 65 20 49 6e 74 50 74 72 20 74 6f 20 63 6f  the IntPtr to co
7f90: 6e 76 65 72 74 20 69 74 20 74 6f 20 61 20 73 74  nvert it to a st
7fa0: 72 69 6e 67 2c 20 74 68 65 6e 20 63 61 6c 6c 73  ring, then calls
7fb0: 0d 0a 20 20 20 20 2f 2f 2f 20 54 6f 44 61 74 65  ..    /// ToDate
7fc0: 54 69 6d 65 28 29 20 6f 6e 20 74 68 65 20 73 74  Time() on the st
7fd0: 72 69 6e 67 20 74 6f 20 72 65 74 75 72 6e 20 61  ring to return a
7fe0: 20 44 61 74 65 54 69 6d 65 2e 0d 0a 20 20 20 20   DateTime...    
7ff0: 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a  /// </remarks>..
8000: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
8010: 61 6d 65 3d 22 70 74 72 22 3e 41 20 70 6f 69 6e  ame="ptr">A poin
8020: 74 65 72 20 74 6f 20 74 68 65 20 55 54 46 2d 38  ter to the UTF-8
8030: 20 65 6e 63 6f 64 65 64 20 73 74 72 69 6e 67 3c   encoded string<
8040: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
8050: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 65   <param name="le
8060: 6e 22 3e 54 68 65 20 6c 65 6e 67 74 68 20 69 6e  n">The length in
8070: 20 62 79 74 65 73 20 6f 66 20 74 68 65 20 73 74   bytes of the st
8080: 72 69 6e 67 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  ring</param>..  
8090: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54    /// <returns>T
80a0: 68 65 20 70 61 72 73 65 64 20 44 61 74 65 54 69  he parsed DateTi
80b0: 6d 65 20 76 61 6c 75 65 3c 2f 72 65 74 75 72 6e  me value</return
80c0: 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  s>..    internal
80d0: 20 44 61 74 65 54 69 6d 65 20 54 6f 44 61 74 65   DateTime ToDate
80e0: 54 69 6d 65 28 49 6e 74 50 74 72 20 70 74 72 2c  Time(IntPtr ptr,
80f0: 20 69 6e 74 20 6c 65 6e 29 0d 0a 20 20 20 20 7b   int len)..    {
8100: 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 54  ..      return T
8110: 6f 44 61 74 65 54 69 6d 65 28 54 6f 53 74 72 69  oDateTime(ToStri
8120: 6e 67 28 70 74 72 2c 20 6c 65 6e 29 29 3b 0d 0a  ng(ptr, len));..
8130: 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
8140: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
8150: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
8160: 2f 2f 2f 20 53 6d 61 72 74 20 6d 65 74 68 6f 64  /// Smart method
8170: 20 6f 66 20 73 70 6c 69 74 74 69 6e 67 20 61 20   of splitting a 
8180: 73 74 72 69 6e 67 2e 20 20 53 6b 69 70 73 20 71  string.  Skips q
8190: 75 6f 74 65 64 20 65 6c 65 6d 65 6e 74 73 2c 20  uoted elements, 
81a0: 72 65 6d 6f 76 65 73 20 74 68 65 20 71 75 6f 74  removes the quot
81b0: 65 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  es...    /// </s
81c0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
81d0: 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20   <remarks>..    
81e0: 2f 2f 2f 20 54 68 69 73 20 73 70 6c 69 74 20 66  /// This split f
81f0: 75 6e 63 74 69 6f 6e 20 77 6f 72 6b 73 20 73 6f  unction works so
8200: 6d 65 77 68 61 74 20 6c 69 6b 65 20 74 68 65 20  mewhat like the 
8210: 53 74 72 69 6e 67 2e 53 70 6c 69 74 28 29 20 66  String.Split() f
8220: 75 6e 63 74 69 6f 6e 20 69 6e 20 74 68 61 74 20  unction in that 
8230: 69 74 20 62 72 65 61 6b 73 20 61 70 61 72 74 20  it breaks apart 
8240: 61 20 73 74 72 69 6e 67 20 69 6e 74 6f 0d 0a 20  a string into.. 
8250: 20 20 20 2f 2f 2f 20 70 69 65 63 65 73 20 61 6e     /// pieces an
8260: 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 70 69  d returns the pi
8270: 65 63 65 73 20 61 73 20 61 6e 20 61 72 72 61 79  eces as an array
8280: 2e 20 20 54 68 65 20 70 72 69 6d 61 72 79 20 64  .  The primary d
8290: 69 66 66 65 72 65 6e 63 65 73 20 61 72 65 3a 0d  ifferences are:.
82a0: 0a 20 20 20 20 2f 2f 2f 20 3c 6c 69 73 74 20 74  .    /// <list t
82b0: 79 70 65 3d 22 62 75 6c 6c 65 74 22 3e 0d 0a 20  ype="bullet">.. 
82c0: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
82d0: 73 63 72 69 70 74 69 6f 6e 3e 4f 6e 6c 79 20 6f  scription>Only o
82e0: 6e 65 20 63 68 61 72 61 63 74 65 72 20 63 61 6e  ne character can
82f0: 20 62 65 20 70 72 6f 76 69 64 65 64 20 61 73 20   be provided as 
8300: 61 20 73 65 70 61 72 61 74 6f 72 20 63 68 61 72  a separator char
8310: 61 63 74 65 72 3c 2f 64 65 73 63 72 69 70 74 69  acter</descripti
8320: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
8330: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
8340: 69 70 74 69 6f 6e 3e 51 75 6f 74 65 64 20 74 65  iption>Quoted te
8350: 78 74 20 69 6e 73 69 64 65 20 74 68 65 20 73 74  xt inside the st
8360: 72 69 6e 67 20 69 73 20 73 6b 69 70 70 65 64 20  ring is skipped 
8370: 6f 76 65 72 20 77 68 65 6e 20 73 65 61 72 63 68  over when search
8380: 69 6e 67 20 66 6f 72 20 74 68 65 20 73 65 70 61  ing for the sepa
8390: 72 61 74 6f 72 2c 20 61 6e 64 20 74 68 65 20 71  rator, and the q
83a0: 75 6f 74 65 73 20 61 72 65 20 72 65 6d 6f 76 65  uotes are remove
83b0: 64 2e 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  d.</description>
83c0: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
83d0: 20 3c 2f 6c 69 73 74 3e 0d 0a 20 20 20 20 2f 2f   </list>..    //
83e0: 2f 20 54 68 75 73 2c 20 69 66 20 73 70 6c 69 74  / Thus, if split
83f0: 74 69 6e 67 20 74 68 65 20 66 6f 6c 6c 6f 77 69  ting the followi
8400: 6e 67 20 73 74 72 69 6e 67 20 6c 6f 6f 6b 69 6e  ng string lookin
8410: 67 20 66 6f 72 20 61 20 63 6f 6d 6d 61 3a 3c 62  g for a comma:<b
8420: 72 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4f 6e 65  r/>..    /// One
8430: 2c 54 77 6f 2c 20 22 54 68 72 65 65 2c 20 46 6f  ,Two, "Three, Fo
8440: 75 72 22 2c 20 46 69 76 65 3c 62 72 2f 3e 0d 0a  ur", Five<br/>..
8450: 20 20 20 20 2f 2f 2f 20 3c 62 72 2f 3e 0d 0a 20      /// <br/>.. 
8460: 20 20 20 2f 2f 2f 20 54 68 65 20 72 65 73 75 6c     /// The resul
8470: 74 69 6e 67 20 61 72 72 61 79 20 77 6f 75 6c 64  ting array would
8480: 20 63 6f 6e 74 61 69 6e 3c 62 72 2f 3e 0d 0a 20   contain<br/>.. 
8490: 20 20 20 2f 2f 2f 20 5b 30 5d 20 4f 6e 65 3c 62     /// [0] One<b
84a0: 72 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 5b 31 5d  r/>..    /// [1]
84b0: 20 54 77 6f 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f   Two<br/>..    /
84c0: 2f 2f 20 5b 32 5d 20 54 68 72 65 65 2c 20 46 6f  // [2] Three, Fo
84d0: 75 72 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f 2f  ur<br/>..    ///
84e0: 20 5b 33 5d 20 46 69 76 65 3c 62 72 2f 3e 0d 0a   [3] Five<br/>..
84f0: 20 20 20 20 2f 2f 2f 20 3c 62 72 2f 3e 0d 0a 20      /// <br/>.. 
8500: 20 20 20 2f 2f 2f 20 4e 6f 74 65 20 74 68 61 74     /// Note that
8510: 20 74 68 65 20 6c 65 61 64 69 6e 67 20 61 6e 64   the leading and
8520: 20 74 72 61 69 6c 69 6e 67 20 73 70 61 63 65 73   trailing spaces
8530: 20 77 65 72 65 20 72 65 6d 6f 76 65 64 20 66 72   were removed fr
8540: 6f 6d 20 65 61 63 68 20 69 74 65 6d 20 64 75 72  om each item dur
8550: 69 6e 67 20 74 68 65 20 73 70 6c 69 74 2e 0d 0a  ing the split...
8560: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b      /// </remark
8570: 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  s>..    /// <par
8580: 61 6d 20 6e 61 6d 65 3d 22 73 6f 75 72 63 65 22  am name="source"
8590: 3e 53 6f 75 72 63 65 20 73 74 72 69 6e 67 20 74  >Source string t
85a0: 6f 20 73 70 6c 69 74 20 61 70 61 72 74 3c 2f 70  o split apart</p
85b0: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
85c0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 65 70 61  param name="sepa
85d0: 72 61 74 6f 72 22 3e 53 65 70 61 72 61 74 6f 72  rator">Separator
85e0: 20 63 68 61 72 61 63 74 65 72 3c 2f 70 61 72 61   character</para
85f0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
8600: 75 72 6e 73 3e 41 20 73 74 72 69 6e 67 20 61 72  urns>A string ar
8610: 72 61 79 20 6f 66 20 74 68 65 20 73 70 6c 69 74  ray of the split
8620: 20 75 70 20 65 6c 65 6d 65 6e 74 73 3c 2f 72 65   up elements</re
8630: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c  turns>..    publ
8640: 69 63 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  ic static string
8650: 5b 5d 20 53 70 6c 69 74 28 73 74 72 69 6e 67 20  [] Split(string 
8660: 73 6f 75 72 63 65 2c 20 63 68 61 72 20 73 65 70  source, char sep
8670: 61 72 61 74 6f 72 29 0d 0a 20 20 20 20 7b 0d 0a  arator)..    {..
8680: 20 20 20 20 20 20 63 68 61 72 5b 5d 20 74 6f 6b        char[] tok
8690: 73 20 3d 20 6e 65 77 20 63 68 61 72 5b 32 5d 20  s = new char[2] 
86a0: 7b 20 27 5c 22 27 2c 20 73 65 70 61 72 61 74 6f  { '\"', separato
86b0: 72 20 7d 3b 0d 0a 20 20 20 20 20 20 63 68 61 72  r };..      char
86c0: 5b 5d 20 71 75 6f 74 20 3d 20 6e 65 77 20 63 68  [] quot = new ch
86d0: 61 72 5b 31 5d 20 7b 20 27 5c 22 27 20 7d 3b 0d  ar[1] { '\"' };.
86e0: 0a 20 20 20 20 20 20 69 6e 74 20 6e 20 3d 20 30  .      int n = 0
86f0: 3b 0d 0a 20 20 20 20 20 20 4c 69 73 74 3c 73 74  ;..      List<st
8700: 72 69 6e 67 3e 20 6c 73 20 3d 20 6e 65 77 20 4c  ring> ls = new L
8710: 69 73 74 3c 73 74 72 69 6e 67 3e 28 29 3b 0d 0a  ist<string>();..
8720: 20 20 20 20 20 20 73 74 72 69 6e 67 20 73 3b 0d        string s;.
8730: 0a 0d 0a 20 20 20 20 20 20 77 68 69 6c 65 20 28  ...      while (
8740: 73 6f 75 72 63 65 2e 4c 65 6e 67 74 68 20 3e 20  source.Length > 
8750: 30 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  0)..      {..   
8760: 20 20 20 20 20 6e 20 3d 20 73 6f 75 72 63 65 2e       n = source.
8770: 49 6e 64 65 78 4f 66 41 6e 79 28 74 6f 6b 73 2c  IndexOfAny(toks,
8780: 20 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 69 66   n);..        if
8790: 20 28 6e 20 3d 3d 20 2d 31 29 20 62 72 65 61 6b   (n == -1) break
87a0: 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 73  ;..        if (s
87b0: 6f 75 72 63 65 5b 6e 5d 20 3d 3d 20 74 6f 6b 73  ource[n] == toks
87c0: 5b 30 5d 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  [0])..        {.
87d0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 73 6f 75  .          //sou
87e0: 72 63 65 20 3d 20 73 6f 75 72 63 65 2e 52 65 6d  rce = source.Rem
87f0: 6f 76 65 28 6e 2c 20 31 29 3b 0d 0a 20 20 20 20  ove(n, 1);..    
8800: 20 20 20 20 20 20 6e 20 3d 20 73 6f 75 72 63 65        n = source
8810: 2e 49 6e 64 65 78 4f 66 41 6e 79 28 71 75 6f 74  .IndexOfAny(quot
8820: 2c 20 6e 20 2b 20 31 29 3b 0d 0a 20 20 20 20 20  , n + 1);..     
8830: 20 20 20 20 20 69 66 20 28 6e 20 3d 3d 20 2d 31       if (n == -1
8840: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
8850: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 73 6f              //so
8860: 75 72 63 65 20 3d 20 22 5c 22 22 20 2b 20 73 6f  urce = "\"" + so
8870: 75 72 63 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  urce;..         
8880: 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20     break;..     
8890: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
88a0: 20 20 6e 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20    n++;..        
88b0: 20 20 2f 2f 73 6f 75 72 63 65 20 3d 20 73 6f 75    //source = sou
88c0: 72 63 65 2e 52 65 6d 6f 76 65 28 6e 2c 20 31 29  rce.Remove(n, 1)
88d0: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
88e0: 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
88f0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
8900: 20 73 20 3d 20 73 6f 75 72 63 65 2e 53 75 62 73   s = source.Subs
8910: 74 72 69 6e 67 28 30 2c 20 6e 29 2e 54 72 69 6d  tring(0, n).Trim
8920: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 69  ();..          i
8930: 66 20 28 73 2e 4c 65 6e 67 74 68 20 3e 20 31 20  f (s.Length > 1 
8940: 26 26 20 73 5b 30 5d 20 3d 3d 20 71 75 6f 74 5b  && s[0] == quot[
8950: 30 5d 20 26 26 20 73 5b 73 2e 4c 65 6e 67 74 68  0] && s[s.Length
8960: 20 2d 20 31 5d 20 3d 3d 20 73 5b 30 5d 29 0d 0a   - 1] == s[0])..
8970: 20 20 20 20 20 20 20 20 20 20 20 20 73 20 3d 20              s = 
8980: 73 2e 53 75 62 73 74 72 69 6e 67 28 31 2c 20 73  s.Substring(1, s
8990: 2e 4c 65 6e 67 74 68 20 2d 20 32 29 3b 0d 0a 0d  .Length - 2);...
89a0: 0a 20 20 20 20 20 20 20 20 20 20 73 6f 75 72 63  .          sourc
89b0: 65 20 3d 20 73 6f 75 72 63 65 2e 53 75 62 73 74  e = source.Subst
89c0: 72 69 6e 67 28 6e 20 2b 20 31 29 2e 54 72 69 6d  ring(n + 1).Trim
89d0: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 69  ();..          i
89e0: 66 20 28 73 2e 4c 65 6e 67 74 68 20 3e 20 30 29  f (s.Length > 0)
89f0: 20 6c 73 2e 41 64 64 28 73 29 3b 0d 0a 20 20 20   ls.Add(s);..   
8a00: 20 20 20 20 20 20 20 6e 20 3d 20 30 3b 0d 0a 20         n = 0;.. 
8a10: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
8a20: 7d 0d 0a 20 20 20 20 20 20 69 66 20 28 73 6f 75  }..      if (sou
8a30: 72 63 65 2e 4c 65 6e 67 74 68 20 3e 20 30 29 0d  rce.Length > 0).
8a40: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
8a50: 20 20 73 20 3d 20 73 6f 75 72 63 65 2e 54 72 69    s = source.Tri
8a60: 6d 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 69 66  m();..        if
8a70: 20 28 73 2e 4c 65 6e 67 74 68 20 3e 20 31 20 26   (s.Length > 1 &
8a80: 26 20 73 5b 30 5d 20 3d 3d 20 71 75 6f 74 5b 30  & s[0] == quot[0
8a90: 5d 20 26 26 20 73 5b 73 2e 4c 65 6e 67 74 68 20  ] && s[s.Length 
8aa0: 2d 20 31 5d 20 3d 3d 20 73 5b 30 5d 29 0d 0a 20  - 1] == s[0]).. 
8ab0: 20 20 20 20 20 20 20 20 20 73 20 3d 20 73 2e 53           s = s.S
8ac0: 75 62 73 74 72 69 6e 67 28 31 2c 20 73 2e 4c 65  ubstring(1, s.Le
8ad0: 6e 67 74 68 20 2d 20 32 29 3b 0d 0a 20 20 20 20  ngth - 2);..    
8ae0: 20 20 20 20 6c 73 2e 41 64 64 28 73 29 3b 0d 0a      ls.Add(s);..
8af0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
8b00: 20 73 74 72 69 6e 67 5b 5d 20 61 72 20 3d 20 6e   string[] ar = n
8b10: 65 77 20 73 74 72 69 6e 67 5b 6c 73 2e 43 6f 75  ew string[ls.Cou
8b20: 6e 74 5d 3b 0d 0a 20 20 20 20 20 20 6c 73 2e 43  nt];..      ls.C
8b30: 6f 70 79 54 6f 28 61 72 2c 20 30 29 3b 0d 0a 0d  opyTo(ar, 0);...
8b40: 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 72  .      return ar
8b50: 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
8b60: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
8b70: 20 20 20 2f 2f 2f 20 53 70 6c 69 74 73 20 74 68     /// Splits th
8b80: 65 20 73 70 65 63 69 66 69 65 64 20 73 74 72 69  e specified stri
8b90: 6e 67 20 69 6e 74 6f 20 6d 75 6c 74 69 70 6c 65  ng into multiple
8ba0: 20 73 74 72 69 6e 67 73 20 62 61 73 65 64 20 6f   strings based o
8bb0: 6e 20 61 20 73 65 70 61 72 61 74 6f 72 0d 0a 20  n a separator.. 
8bc0: 20 20 20 2f 2f 2f 20 61 6e 64 20 72 65 74 75 72     /// and retur
8bd0: 6e 73 20 74 68 65 20 72 65 73 75 6c 74 20 61 73  ns the result as
8be0: 20 61 6e 20 61 72 72 61 79 20 6f 66 20 73 74 72   an array of str
8bf0: 69 6e 67 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ings...    /// <
8c00: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
8c10: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
8c20: 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f  value">..    ///
8c30: 20 54 68 65 20 73 74 72 69 6e 67 20 74 6f 20 73   The string to s
8c40: 70 6c 69 74 20 69 6e 74 6f 20 70 69 65 63 65 73  plit into pieces
8c50: 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 73 65   based on the se
8c60: 70 61 72 61 74 6f 72 20 63 68 61 72 61 63 74 65  parator characte
8c70: 72 2e 20 20 49 66 0d 0a 20 20 20 20 2f 2f 2f 20  r.  If..    /// 
8c80: 74 68 69 73 20 73 74 72 69 6e 67 20 69 73 20 6e  this string is n
8c90: 75 6c 6c 2c 20 6e 75 6c 6c 20 77 69 6c 6c 20 61  ull, null will a
8ca0: 6c 77 61 79 73 20 62 65 20 72 65 74 75 72 6e 65  lways be returne
8cb0: 64 2e 20 20 49 66 20 74 68 69 73 20 73 74 72 69  d.  If this stri
8cc0: 6e 67 20 69 73 0d 0a 20 20 20 20 2f 2f 2f 20 65  ng is..    /// e
8cd0: 6d 70 74 79 2c 20 61 6e 20 61 72 72 61 79 20 6f  mpty, an array o
8ce0: 66 20 7a 65 72 6f 20 73 74 72 69 6e 67 73 20 77  f zero strings w
8cf0: 69 6c 6c 20 61 6c 77 61 79 73 20 62 65 20 72 65  ill always be re
8d00: 74 75 72 6e 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f  turned...    ///
8d10: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
8d20: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
8d30: 73 65 70 61 72 61 74 6f 72 22 3e 0d 0a 20 20 20  separator">..   
8d40: 20 2f 2f 2f 20 54 68 65 20 63 68 61 72 61 63 74   /// The charact
8d50: 65 72 20 75 73 65 64 20 74 6f 20 64 69 76 69 64  er used to divid
8d60: 65 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 73  e the original s
8d70: 74 72 69 6e 67 20 69 6e 74 6f 20 73 75 62 2d 73  tring into sub-s
8d80: 74 72 69 6e 67 73 2e 0d 0a 20 20 20 20 2f 2f 2f  trings...    ///
8d90: 20 54 68 69 73 20 63 68 61 72 61 63 74 65 72 20   This character 
8da0: 63 61 6e 6e 6f 74 20 62 65 20 61 20 62 61 63 6b  cannot be a back
8db0: 73 6c 61 73 68 20 6f 72 20 61 20 64 6f 75 62 6c  slash or a doubl
8dc0: 65 2d 71 75 6f 74 65 3b 20 6f 74 68 65 72 77 69  e-quote; otherwi
8dd0: 73 65 2c 20 6e 6f 0d 0a 20 20 20 20 2f 2f 2f 20  se, no..    /// 
8de0: 77 6f 72 6b 20 77 69 6c 6c 20 62 65 20 70 65 72  work will be per
8df0: 66 6f 72 6d 65 64 20 61 6e 64 20 6e 75 6c 6c 20  formed and null 
8e00: 77 69 6c 6c 20 62 65 20 72 65 74 75 72 6e 65 64  will be returned
8e10: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
8e20: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
8e30: 72 61 6d 20 6e 61 6d 65 3d 22 6b 65 65 70 51 75  ram name="keepQu
8e40: 6f 74 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49  ote">..    /// I
8e50: 66 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  f this parameter
8e60: 20 69 73 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 61 6c   is non-zero, al
8e70: 6c 20 64 6f 75 62 6c 65 2d 71 75 6f 74 65 20 63  l double-quote c
8e80: 68 61 72 61 63 74 65 72 73 20 77 69 6c 6c 20 62  haracters will b
8e90: 65 0d 0a 20 20 20 20 2f 2f 2f 20 72 65 74 61 69  e..    /// retai
8ea0: 6e 65 64 20 69 6e 20 74 68 65 20 72 65 74 75 72  ned in the retur
8eb0: 6e 65 64 20 6c 69 73 74 20 6f 66 20 73 74 72 69  ned list of stri
8ec0: 6e 67 73 3b 20 6f 74 68 65 72 77 69 73 65 2c 20  ngs; otherwise, 
8ed0: 74 68 65 79 20 77 69 6c 6c 20 62 65 0d 0a 20 20  they will be..  
8ee0: 20 20 2f 2f 2f 20 64 72 6f 70 70 65 64 2e 0d 0a    /// dropped...
8ef0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
8f00: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
8f10: 20 6e 61 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a   name="error">..
8f20: 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 66 61 69      /// Upon fai
8f30: 6c 75 72 65 2c 20 74 68 69 73 20 70 61 72 61 6d  lure, this param
8f40: 65 74 65 72 20 77 69 6c 6c 20 62 65 20 6d 6f 64  eter will be mod
8f50: 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e  ified to contain
8f60: 20 61 6e 20 61 70 70 72 6f 70 72 69 61 74 65 0d   an appropriate.
8f70: 0a 20 20 20 20 2f 2f 2f 20 65 72 72 6f 72 20 6d  .    /// error m
8f80: 65 73 73 61 67 65 2e 0d 0a 20 20 20 20 2f 2f 2f  essage...    ///
8f90: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
8fa0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
8fb0: 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77 20 61 72    /// The new ar
8fc0: 72 61 79 20 6f 66 20 73 74 72 69 6e 67 73 20 6f  ray of strings o
8fd0: 72 20 6e 75 6c 6c 20 69 66 20 74 68 65 20 69 6e  r null if the in
8fe0: 70 75 74 20 73 74 72 69 6e 67 20 69 73 20 6e 75  put string is nu
8ff0: 6c 6c 20 2d 4f 52 2d 20 74 68 65 0d 0a 20 20 20  ll -OR- the..   
9000: 20 2f 2f 2f 20 73 65 70 61 72 61 74 6f 72 20 63   /// separator c
9010: 68 61 72 61 63 74 65 72 20 69 73 20 61 20 62 61  haracter is a ba
9020: 63 6b 73 6c 61 73 68 20 6f 72 20 61 20 64 6f 75  ckslash or a dou
9030: 62 6c 65 2d 71 75 6f 74 65 20 2d 4f 52 2d 20 74  ble-quote -OR- t
9040: 68 65 20 73 74 72 69 6e 67 0d 0a 20 20 20 20 2f  he string..    /
9050: 2f 2f 20 63 6f 6e 74 61 69 6e 73 20 61 6e 20 75  // contains an u
9060: 6e 62 61 6c 61 6e 63 65 64 20 62 61 63 6b 73 6c  nbalanced backsl
9070: 61 73 68 20 6f 72 20 64 6f 75 62 6c 65 2d 71 75  ash or double-qu
9080: 6f 74 65 20 63 68 61 72 61 63 74 65 72 2e 0d 0a  ote character...
9090: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
90a0: 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  s>..    internal
90b0: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 5b 5d   static string[]
90c0: 20 4e 65 77 53 70 6c 69 74 28 0d 0a 20 20 20 20   NewSplit(..    
90d0: 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65      string value
90e0: 2c 0d 0a 20 20 20 20 20 20 20 20 63 68 61 72 20  ,..        char 
90f0: 73 65 70 61 72 61 74 6f 72 2c 0d 0a 20 20 20 20  separator,..    
9100: 20 20 20 20 62 6f 6f 6c 20 6b 65 65 70 51 75 6f      bool keepQuo
9110: 74 65 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66  te,..        ref
9120: 20 73 74 72 69 6e 67 20 65 72 72 6f 72 0d 0a 20   string error.. 
9130: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d         )..    {.
9140: 0a 20 20 20 20 20 20 20 20 63 6f 6e 73 74 20 63  .        const c
9150: 68 61 72 20 45 73 63 61 70 65 43 68 61 72 20 3d  har EscapeChar =
9160: 20 27 5c 5c 27 3b 0d 0a 20 20 20 20 20 20 20 20   '\\';..        
9170: 63 6f 6e 73 74 20 63 68 61 72 20 51 75 6f 74 65  const char Quote
9180: 43 68 61 72 20 3d 20 27 5c 22 27 3b 0d 0a 0d 0a  Char = '\"';....
9190: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
91a0: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 74 20      // NOTE: It 
91b0: 69 73 20 69 6c 6c 65 67 61 6c 20 66 6f 72 20 74  is illegal for t
91c0: 68 65 20 73 65 70 61 72 61 74 6f 72 20 63 68 61  he separator cha
91d0: 72 61 63 74 65 72 20 74 6f 20 62 65 20 65 69 74  racter to be eit
91e0: 68 65 72 20 61 0d 0a 20 20 20 20 20 20 20 20 2f  her a..        /
91f0: 2f 20 20 20 20 20 20 20 62 61 63 6b 73 6c 61 73  /       backslas
9200: 68 20 6f 72 20 61 20 64 6f 75 62 6c 65 2d 71 75  h or a double-qu
9210: 6f 74 65 20 62 65 63 61 75 73 65 20 62 6f 74 68  ote because both
9220: 20 6f 66 20 74 68 6f 73 65 20 63 68 61 72 61 63   of those charac
9230: 74 65 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ters..        //
9240: 20 20 20 20 20 20 20 61 72 65 20 75 73 65 64 20         are used 
9250: 66 6f 72 20 65 73 63 61 70 69 6e 67 20 6f 74 68  for escaping oth
9260: 65 72 20 63 68 61 72 61 63 74 65 72 73 20 28 65  er characters (e
9270: 2e 67 2e 20 74 68 65 20 73 65 70 61 72 61 74 6f  .g. the separato
9280: 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 20 20  r..        //   
9290: 20 20 20 20 63 68 61 72 61 63 74 65 72 29 2e 0d      character)..
92a0: 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20  .        //..   
92b0: 20 20 20 20 20 69 66 20 28 28 73 65 70 61 72 61       if ((separa
92c0: 74 6f 72 20 3d 3d 20 45 73 63 61 70 65 43 68 61  tor == EscapeCha
92d0: 72 29 20 7c 7c 20 28 73 65 70 61 72 61 74 6f 72  r) || (separator
92e0: 20 3d 3d 20 51 75 6f 74 65 43 68 61 72 29 29 0d   == QuoteChar)).
92f0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
9300: 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20          error = 
9310: 22 73 65 70 61 72 61 74 6f 72 20 63 68 61 72 61  "separator chara
9320: 63 74 65 72 20 63 61 6e 6e 6f 74 20 62 65 20 74  cter cannot be t
9330: 68 65 20 65 73 63 61 70 65 20 6f 72 20 71 75 6f  he escape or quo
9340: 74 65 20 63 68 61 72 61 63 74 65 72 73 22 3b 0d  te characters";.
9350: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
9360: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
9370: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
9380: 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c  if (value == nul
9390: 6c 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  l)..        {.. 
93a0: 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72             error
93b0: 20 3d 20 22 73 74 72 69 6e 67 20 76 61 6c 75 65   = "string value
93c0: 20 74 6f 20 73 70 6c 69 74 20 63 61 6e 6e 6f 74   to split cannot
93d0: 20 62 65 20 6e 75 6c 6c 22 3b 0d 0a 20 20 20 20   be null";..    
93e0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
93f0: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ull;..        }.
9400: 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 6c  ...        int l
9410: 65 6e 67 74 68 20 3d 20 76 61 6c 75 65 2e 4c 65  ength = value.Le
9420: 6e 67 74 68 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ngth;....       
9430: 20 69 66 20 28 6c 65 6e 67 74 68 20 3d 3d 20 30   if (length == 0
9440: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  )..            r
9450: 65 74 75 72 6e 20 6e 65 77 20 73 74 72 69 6e 67  eturn new string
9460: 5b 30 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  [0];....        
9470: 4c 69 73 74 3c 73 74 72 69 6e 67 3e 20 6c 69 73  List<string> lis
9480: 74 20 3d 20 6e 65 77 20 4c 69 73 74 3c 73 74 72  t = new List<str
9490: 69 6e 67 3e 28 29 3b 0d 0a 20 20 20 20 20 20 20  ing>();..       
94a0: 20 53 74 72 69 6e 67 42 75 69 6c 64 65 72 20 65   StringBuilder e
94b0: 6c 65 6d 65 6e 74 20 3d 20 6e 65 77 20 53 74 72  lement = new Str
94c0: 69 6e 67 42 75 69 6c 64 65 72 28 29 3b 0d 0a 20  ingBuilder();.. 
94d0: 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78         int index
94e0: 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 62   = 0;..        b
94f0: 6f 6f 6c 20 65 73 63 61 70 65 20 3d 20 66 61 6c  ool escape = fal
9500: 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f  se;..        boo
9510: 6c 20 71 75 6f 74 65 20 3d 20 66 61 6c 73 65 3b  l quote = false;
9520: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 77 68 69 6c  ....        whil
9530: 65 20 28 69 6e 64 65 78 20 3c 20 6c 65 6e 67 74  e (index < lengt
9540: 68 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  h)..        {.. 
9550: 20 20 20 20 20 20 20 20 20 20 20 63 68 61 72 20             char 
9560: 63 68 61 72 61 63 74 65 72 20 3d 20 76 61 6c 75  character = valu
9570: 65 5b 69 6e 64 65 78 2b 2b 5d 3b 0d 0a 0d 0a 20  e[index++];.... 
9580: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65             if (e
9590: 73 63 61 70 65 29 0d 0a 20 20 20 20 20 20 20 20  scape)..        
95a0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
95b0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
95c0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 48 41             // HA
95d0: 43 4b 3a 20 4f 6e 6c 79 20 63 6f 6e 73 69 64 65  CK: Only conside
95e0: 72 20 74 68 65 20 65 73 63 61 70 65 20 63 68 61  r the escape cha
95f0: 72 61 63 74 65 72 20 74 6f 20 62 65 20 61 6e 20  racter to be an 
9600: 61 63 74 75 61 6c 0d 0a 20 20 20 20 20 20 20 20  actual..        
9610: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
9620: 20 22 65 73 63 61 70 65 22 20 69 66 20 69 74 20   "escape" if it 
9630: 69 73 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61  is followed by a
9640: 20 72 65 73 65 72 76 65 64 20 63 68 61 72 61 63   reserved charac
9650: 74 65 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ter;..          
9660: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f        //       o
9670: 74 68 65 72 77 69 73 65 2c 20 65 6d 69 74 20 74  therwise, emit t
9680: 68 65 20 6f 72 69 67 69 6e 61 6c 20 65 73 63 61  he original esca
9690: 70 65 20 63 68 61 72 61 63 74 65 72 20 61 6e 64  pe character and
96a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
96b0: 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 63    //       the c
96c0: 75 72 72 65 6e 74 20 63 68 61 72 61 63 74 65 72  urrent character
96d0: 20 69 6e 20 61 6e 20 65 66 66 6f 72 74 20 74 6f   in an effort to
96e0: 20 68 65 6c 70 20 70 72 65 73 65 72 76 65 0d 0a   help preserve..
96f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9700: 2f 2f 20 20 20 20 20 20 20 74 68 65 20 6f 72 69  //       the ori
9710: 67 69 6e 61 6c 20 73 74 72 69 6e 67 20 63 6f 6e  ginal string con
9720: 74 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 20  tent...         
9730: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
9740: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28             if ((
9750: 63 68 61 72 61 63 74 65 72 20 21 3d 20 45 73 63  character != Esc
9760: 61 70 65 43 68 61 72 29 20 26 26 0d 0a 20 20 20  apeChar) &&..   
9770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9780: 20 28 63 68 61 72 61 63 74 65 72 20 21 3d 20 51   (character != Q
9790: 75 6f 74 65 43 68 61 72 29 20 26 26 0d 0a 20 20  uoteChar) &&..  
97a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
97b0: 20 20 28 63 68 61 72 61 63 74 65 72 20 21 3d 20    (character != 
97c0: 73 65 70 61 72 61 74 6f 72 29 29 0d 0a 20 20 20  separator))..   
97d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
97e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
97f0: 20 20 20 20 65 6c 65 6d 65 6e 74 2e 41 70 70 65      element.Appe
9800: 6e 64 28 45 73 63 61 70 65 43 68 61 72 29 3b 0d  nd(EscapeChar);.
9810: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9820: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
9830: 20 20 20 20 20 20 65 6c 65 6d 65 6e 74 2e 41 70        element.Ap
9840: 70 65 6e 64 28 63 68 61 72 61 63 74 65 72 29 3b  pend(character);
9850: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9860: 20 20 65 73 63 61 70 65 20 3d 20 66 61 6c 73 65    escape = false
9870: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
9880: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c  ..            el
9890: 73 65 20 69 66 20 28 63 68 61 72 61 63 74 65 72  se if (character
98a0: 20 3d 3d 20 45 73 63 61 70 65 43 68 61 72 29 0d   == EscapeChar).
98b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
98c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
98d0: 65 73 63 61 70 65 20 3d 20 74 72 75 65 3b 0d 0a  escape = true;..
98e0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
98f0: 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
9900: 69 66 20 28 63 68 61 72 61 63 74 65 72 20 3d 3d  if (character ==
9910: 20 51 75 6f 74 65 43 68 61 72 29 0d 0a 20 20 20   QuoteChar)..   
9920: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
9930: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
9940: 6b 65 65 70 51 75 6f 74 65 29 0d 0a 20 20 20 20  keepQuote)..    
9950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9960: 65 6c 65 6d 65 6e 74 2e 41 70 70 65 6e 64 28 63  element.Append(c
9970: 68 61 72 61 63 74 65 72 29 3b 0d 0a 0d 0a 20 20  haracter);....  
9980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 71 75                qu
9990: 6f 74 65 20 3d 20 21 71 75 6f 74 65 3b 0d 0a 20  ote = !quote;.. 
99a0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
99b0: 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69            else i
99c0: 66 20 28 63 68 61 72 61 63 74 65 72 20 3d 3d 20  f (character == 
99d0: 73 65 70 61 72 61 74 6f 72 29 0d 0a 20 20 20 20  separator)..    
99e0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
99f0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 71             if (q
9a00: 75 6f 74 65 29 0d 0a 20 20 20 20 20 20 20 20 20  uote)..         
9a10: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
9a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
9a30: 65 6d 65 6e 74 2e 41 70 70 65 6e 64 28 63 68 61  ement.Append(cha
9a40: 72 61 63 74 65 72 29 3b 0d 0a 20 20 20 20 20 20  racter);..      
9a50: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
9a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
9a70: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
9a80: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
9a90: 20 20 20 20 20 20 20 20 20 20 6c 69 73 74 2e 41            list.A
9aa0: 64 64 28 65 6c 65 6d 65 6e 74 2e 54 6f 53 74 72  dd(element.ToStr
9ab0: 69 6e 67 28 29 29 3b 0d 0a 20 20 20 20 20 20 20  ing());..       
9ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 65               ele
9ad0: 6d 65 6e 74 2e 4c 65 6e 67 74 68 20 3d 20 30 3b  ment.Length = 0;
9ae0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9af0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
9b00: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
9b10: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
9b20: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
9b30: 20 20 20 20 20 65 6c 65 6d 65 6e 74 2e 41 70 70       element.App
9b40: 65 6e 64 28 63 68 61 72 61 63 74 65 72 29 3b 0d  end(character);.
9b50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
9b60: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
9b70: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
9b80: 20 2f 2f 20 4e 4f 54 45 3a 20 41 6e 20 75 6e 62   // NOTE: An unb
9b90: 61 6c 61 6e 63 65 64 20 65 73 63 61 70 65 20 6f  alanced escape o
9ba0: 72 20 71 75 6f 74 65 20 63 68 61 72 61 63 74 65  r quote characte
9bb0: 72 20 69 6e 20 74 68 65 20 73 74 72 69 6e 67 20  r in the string 
9bc0: 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 20  is..        //  
9bd0: 20 20 20 20 20 63 6f 6e 73 69 64 65 72 65 64 20       considered 
9be0: 74 6f 20 62 65 20 61 20 66 61 74 61 6c 20 65 72  to be a fatal er
9bf0: 72 6f 72 3b 20 74 68 65 72 65 66 6f 72 65 2c 20  ror; therefore, 
9c00: 72 65 74 75 72 6e 20 6e 75 6c 6c 2e 0d 0a 20 20  return null...  
9c10: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
9c20: 20 20 69 66 20 28 65 73 63 61 70 65 20 7c 7c 20    if (escape || 
9c30: 71 75 6f 74 65 29 0d 0a 20 20 20 20 20 20 20 20  quote)..        
9c40: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65  {..            e
9c50: 72 72 6f 72 20 3d 20 22 75 6e 62 61 6c 61 6e 63  rror = "unbalanc
9c60: 65 64 20 65 73 63 61 70 65 20 6f 72 20 71 75 6f  ed escape or quo
9c70: 74 65 20 63 68 61 72 61 63 74 65 72 20 66 6f 75  te character fou
9c80: 6e 64 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  nd";..          
9c90: 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
9ca0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
9cb0: 20 20 20 20 20 69 66 20 28 65 6c 65 6d 65 6e 74       if (element
9cc0: 2e 4c 65 6e 67 74 68 20 3e 20 30 29 0d 0a 20 20  .Length > 0)..  
9cd0: 20 20 20 20 20 20 20 20 20 20 6c 69 73 74 2e 41            list.A
9ce0: 64 64 28 65 6c 65 6d 65 6e 74 2e 54 6f 53 74 72  dd(element.ToStr
9cf0: 69 6e 67 28 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  ing());....     
9d00: 20 20 20 72 65 74 75 72 6e 20 6c 69 73 74 2e 54     return list.T
9d10: 6f 41 72 72 61 79 28 29 3b 0d 0a 20 20 20 20 7d  oArray();..    }
9d20: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
9d30: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 51  mary>..    /// Q
9d40: 75 65 72 69 65 73 20 61 6e 64 20 72 65 74 75 72  ueries and retur
9d50: 6e 73 20 74 68 65 20 73 74 72 69 6e 67 20 72 65  ns the string re
9d60: 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 66 6f 72  presentation for
9d70: 20 61 6e 20 6f 62 6a 65 63 74 2c 20 75 73 69 6e   an object, usin
9d80: 67 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 73  g the..    /// s
9d90: 70 65 63 69 66 69 65 64 20 28 6f 72 20 63 75 72  pecified (or cur
9da0: 72 65 6e 74 29 20 66 6f 72 6d 61 74 20 70 72 6f  rent) format pro
9db0: 76 69 64 65 72 2e 0d 0a 20 20 20 20 2f 2f 2f 20  vider...    /// 
9dc0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
9dd0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
9de0: 22 6f 62 6a 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  "obj">..    /// 
9df0: 54 68 65 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  The object insta
9e00: 6e 63 65 20 74 6f 20 72 65 74 75 72 6e 20 74 68  nce to return th
9e10: 65 20 73 74 72 69 6e 67 20 72 65 70 72 65 73 65  e string represe
9e20: 6e 74 61 74 69 6f 6e 20 66 6f 72 2e 0d 0a 20 20  ntation for...  
9e30: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
9e40: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
9e50: 61 6d 65 3d 22 70 72 6f 76 69 64 65 72 22 3e 0d  ame="provider">.
9e60: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6f 72  .    /// The for
9e70: 6d 61 74 20 70 72 6f 76 69 64 65 72 20 74 6f 20  mat provider to 
9e80: 75 73 65 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66  use -OR- null if
9e90: 20 74 68 65 20 63 75 72 72 65 6e 74 20 66 6f 72   the current for
9ea0: 6d 61 74 20 70 72 6f 76 69 64 65 72 20 66 6f 72  mat provider for
9eb0: 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 65 20 74 68  ..    /// the th
9ec0: 72 65 61 64 20 73 68 6f 75 6c 64 20 62 65 20 75  read should be u
9ed0: 73 65 64 20 69 6e 73 74 65 61 64 2e 0d 0a 20 20  sed instead...  
9ee0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
9ef0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
9f00: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 73  >..    /// The s
9f10: 74 72 69 6e 67 20 72 65 70 72 65 73 65 6e 74 61  tring representa
9f20: 74 69 6f 6e 20 66 6f 72 20 74 68 65 20 6f 62 6a  tion for the obj
9f30: 65 63 74 20 69 6e 73 74 61 6e 63 65 20 2d 4f 52  ect instance -OR
9f40: 2d 20 6e 75 6c 6c 20 69 66 20 74 68 65 0d 0a 20  - null if the.. 
9f50: 20 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20 69 6e     /// object in
9f60: 73 74 61 6e 63 65 20 69 73 20 61 6c 73 6f 20 6e  stance is also n
9f70: 75 6c 6c 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ull...    /// </
9f80: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75  returns>..    pu
9f90: 62 6c 69 63 20 73 74 61 74 69 63 20 73 74 72 69  blic static stri
9fa0: 6e 67 20 54 6f 53 74 72 69 6e 67 57 69 74 68 50  ng ToStringWithP
9fb0: 72 6f 76 69 64 65 72 28 0d 0a 20 20 20 20 20 20  rovider(..      
9fc0: 20 20 6f 62 6a 65 63 74 20 6f 62 6a 2c 0d 0a 20    object obj,.. 
9fd0: 20 20 20 20 20 20 20 49 46 6f 72 6d 61 74 50 72         IFormatPr
9fe0: 6f 76 69 64 65 72 20 70 72 6f 76 69 64 65 72 0d  ovider provider.
9ff0: 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20  .        )..    
a000: 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 6f  {..        if (o
a010: 62 6a 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  bj == null)..   
a020: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
a030: 6e 75 6c 6c 3b 20 2f 2a 20 6e 75 6c 6c 20 2d 2d  null; /* null --
a040: 3e 20 6e 75 6c 6c 20 2a 2f 0d 0a 0d 0a 20 20 20  > null */....   
a050: 20 20 20 20 20 69 66 20 28 6f 62 6a 20 69 73 20       if (obj is 
a060: 73 74 72 69 6e 67 29 0d 0a 20 20 20 20 20 20 20  string)..       
a070: 20 20 20 20 20 72 65 74 75 72 6e 20 28 73 74 72       return (str
a080: 69 6e 67 29 6f 62 6a 3b 20 2f 2a 20 69 64 65 6e  ing)obj; /* iden
a090: 74 69 74 79 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20  tity */....     
a0a0: 20 20 20 49 43 6f 6e 76 65 72 74 69 62 6c 65 20     IConvertible 
a0b0: 63 6f 6e 76 65 72 74 69 62 6c 65 20 3d 20 6f 62  convertible = ob
a0c0: 6a 20 61 73 20 49 43 6f 6e 76 65 72 74 69 62 6c  j as IConvertibl
a0d0: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66  e;....        if
a0e0: 20 28 63 6f 6e 76 65 72 74 69 62 6c 65 20 21 3d   (convertible !=
a0f0: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
a100: 20 20 20 20 72 65 74 75 72 6e 20 63 6f 6e 76 65      return conve
a110: 72 74 69 62 6c 65 2e 54 6f 53 74 72 69 6e 67 28  rtible.ToString(
a120: 70 72 6f 76 69 64 65 72 29 3b 0d 0a 0d 0a 20 20  provider);....  
a130: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6f 62 6a        return obj
a140: 2e 54 6f 53 74 72 69 6e 67 28 29 3b 20 2f 2a 20  .ToString(); /* 
a150: 6e 6f 74 20 49 43 6f 6e 76 65 72 74 69 62 6c 65  not IConvertible
a160: 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20   */..    }....  
a170: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
a180: 0a 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74  .    /// Attempt
a190: 73 20 74 6f 20 63 6f 6e 76 65 72 74 20 61 6e 20  s to convert an 
a1a0: 61 72 62 69 74 72 61 72 79 20 6f 62 6a 65 63 74  arbitrary object
a1b0: 20 74 6f 20 74 68 65 20 42 6f 6f 6c 65 61 6e 20   to the Boolean 
a1c0: 64 61 74 61 20 74 79 70 65 2e 0d 0a 20 20 20 20  data type...    
a1d0: 2f 2f 2f 20 4e 75 6c 6c 20 6f 62 6a 65 63 74 20  /// Null object 
a1e0: 76 61 6c 75 65 73 20 61 72 65 20 63 6f 6e 76 65  values are conve
a1f0: 72 74 65 64 20 74 6f 20 66 61 6c 73 65 2e 20 20  rted to false.  
a200: 54 68 72 6f 77 73 20 61 6e 20 65 78 63 65 70 74  Throws an except
a210: 69 6f 6e 0d 0a 20 20 20 20 2f 2f 2f 20 75 70 6f  ion..    /// upo
a220: 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20  n failure...    
a230: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
a240: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
a250: 61 6d 65 3d 22 6f 62 6a 22 3e 0d 0a 20 20 20 20  ame="obj">..    
a260: 2f 2f 2f 20 54 68 65 20 6f 62 6a 65 63 74 20 76  /// The object v
a270: 61 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72 74 2e  alue to convert.
a280: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
a290: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
a2a0: 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 76 69 64 65  am name="provide
a2b0: 72 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  r">..    /// The
a2c0: 20 66 6f 72 6d 61 74 20 70 72 6f 76 69 64 65 72   format provider
a2d0: 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20 2f 2f   to use...    //
a2e0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
a2f0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
a300: 22 76 69 61 46 72 61 6d 65 77 6f 72 6b 22 3e 0d  "viaFramework">.
a310: 0a 20 20 20 20 2f 2f 2f 20 49 66 20 6e 6f 6e 2d  .    /// If non-
a320: 7a 65 72 6f 2c 20 61 20 73 74 72 69 6e 67 20 76  zero, a string v
a330: 61 6c 75 65 20 77 69 6c 6c 20 62 65 20 63 6f 6e  alue will be con
a340: 76 65 72 74 65 64 20 75 73 69 6e 67 20 74 68 65  verted using the
a350: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63  ..    /// <see c
a360: 72 65 66 3d 22 43 6f 6e 76 65 72 74 2e 54 6f 42  ref="Convert.ToB
a370: 6f 6f 6c 65 61 6e 28 4f 62 6a 65 63 74 2c 20 49  oolean(Object, I
a380: 46 6f 72 6d 61 74 50 72 6f 76 69 64 65 72 29 22  FormatProvider)"
a390: 20 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 6d 65 74   />..    /// met
a3a0: 68 6f 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 20  hod; otherwise, 
a3b0: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 54  the <see cref="T
a3c0: 6f 42 6f 6f 6c 65 61 6e 28 53 74 72 69 6e 67 29  oBoolean(String)
a3d0: 22 20 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 6d 65  " />..    /// me
a3e0: 74 68 6f 64 20 77 69 6c 6c 20 62 65 20 75 73 65  thod will be use
a3f0: 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  d...    /// </pa
a400: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
a410: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f  eturns>..    ///
a420: 20 54 68 65 20 63 6f 6e 76 65 72 74 65 64 20 62   The converted b
a430: 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 2e 0d 0a 20  oolean value... 
a440: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
a450: 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
a460: 73 74 61 74 69 63 20 62 6f 6f 6c 20 54 6f 42 6f  static bool ToBo
a470: 6f 6c 65 61 6e 28 0d 0a 20 20 20 20 20 20 20 20  olean(..        
a480: 6f 62 6a 65 63 74 20 6f 62 6a 2c 0d 0a 20 20 20  object obj,..   
a490: 20 20 20 20 20 49 46 6f 72 6d 61 74 50 72 6f 76       IFormatProv
a4a0: 69 64 65 72 20 70 72 6f 76 69 64 65 72 2c 0d 0a  ider provider,..
a4b0: 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 76 69 61          bool via
a4c0: 46 72 61 6d 65 77 6f 72 6b 0d 0a 20 20 20 20 20  Framework..     
a4d0: 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20     )..    {..   
a4e0: 20 20 20 20 20 69 66 20 28 6f 62 6a 20 3d 3d 20       if (obj == 
a4f0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
a500: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
a510: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 54 79 70 65  ....        Type
a520: 43 6f 64 65 20 74 79 70 65 43 6f 64 65 20 3d 20  Code typeCode = 
a530: 54 79 70 65 2e 47 65 74 54 79 70 65 43 6f 64 65  Type.GetTypeCode
a540: 28 6f 62 6a 2e 47 65 74 54 79 70 65 28 29 29 3b  (obj.GetType());
a550: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 73 77 69 74  ....        swit
a560: 63 68 20 28 74 79 70 65 43 6f 64 65 29 0d 0a 20  ch (typeCode).. 
a570: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
a580: 20 20 20 20 20 20 63 61 73 65 20 54 79 70 65 43        case TypeC
a590: 6f 64 65 2e 45 6d 70 74 79 3a 0d 0a 20 20 20 20  ode.Empty:..    
a5a0: 20 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70          case Typ
a5b0: 65 43 6f 64 65 2e 44 42 4e 75 6c 6c 3a 0d 0a 20  eCode.DBNull:.. 
a5c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
a5d0: 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
a5e0: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 54            case T
a5f0: 79 70 65 43 6f 64 65 2e 42 6f 6f 6c 65 61 6e 3a  ypeCode.Boolean:
a600: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a610: 20 20 72 65 74 75 72 6e 20 28 62 6f 6f 6c 29 6f    return (bool)o
a620: 62 6a 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  bj;..           
a630: 20 63 61 73 65 20 54 79 70 65 43 6f 64 65 2e 43   case TypeCode.C
a640: 68 61 72 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  har:..          
a650: 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 28 63        return ((c
a660: 68 61 72 29 6f 62 6a 29 20 21 3d 20 28 63 68 61  har)obj) != (cha
a670: 72 29 30 20 3f 20 74 72 75 65 20 3a 20 66 61 6c  r)0 ? true : fal
a680: 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se;..           
a690: 20 63 61 73 65 20 54 79 70 65 43 6f 64 65 2e 53   case TypeCode.S
a6a0: 42 79 74 65 3a 0d 0a 20 20 20 20 20 20 20 20 20  Byte:..         
a6b0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 28         return ((
a6c0: 73 62 79 74 65 29 6f 62 6a 29 20 21 3d 20 28 73  sbyte)obj) != (s
a6d0: 62 79 74 65 29 30 20 3f 20 74 72 75 65 20 3a 20  byte)0 ? true : 
a6e0: 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  false;..        
a6f0: 20 20 20 20 63 61 73 65 20 54 79 70 65 43 6f 64      case TypeCod
a700: 65 2e 42 79 74 65 3a 0d 0a 20 20 20 20 20 20 20  e.Byte:..       
a710: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
a720: 28 28 62 79 74 65 29 6f 62 6a 29 20 21 3d 20 28  ((byte)obj) != (
a730: 62 79 74 65 29 30 20 3f 20 74 72 75 65 20 3a 20  byte)0 ? true : 
a740: 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  false;..        
a750: 20 20 20 20 63 61 73 65 20 54 79 70 65 43 6f 64      case TypeCod
a760: 65 2e 49 6e 74 31 36 3a 0d 0a 20 20 20 20 20 20  e.Int16:..      
a770: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
a780: 20 28 28 73 68 6f 72 74 29 6f 62 6a 29 20 21 3d   ((short)obj) !=
a790: 20 28 73 68 6f 72 74 29 30 20 3f 20 74 72 75 65   (short)0 ? true
a7a0: 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20   : false;..     
a7b0: 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70 65         case Type
a7c0: 43 6f 64 65 2e 55 49 6e 74 31 36 3a 0d 0a 20 20  Code.UInt16:..  
a7d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
a7e0: 74 75 72 6e 20 28 28 75 73 68 6f 72 74 29 6f 62  turn ((ushort)ob
a7f0: 6a 29 20 21 3d 20 28 75 73 68 6f 72 74 29 30 20  j) != (ushort)0 
a800: 3f 20 74 72 75 65 20 3a 20 66 61 6c 73 65 3b 0d  ? true : false;.
a810: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
a820: 65 20 54 79 70 65 43 6f 64 65 2e 49 6e 74 33 32  e TypeCode.Int32
a830: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
a840: 20 20 20 72 65 74 75 72 6e 20 28 28 69 6e 74 29     return ((int)
a850: 6f 62 6a 29 20 21 3d 20 28 69 6e 74 29 30 20 3f  obj) != (int)0 ?
a860: 20 74 72 75 65 20 3a 20 66 61 6c 73 65 3b 0d 0a   true : false;..
a870: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
a880: 20 54 79 70 65 43 6f 64 65 2e 55 49 6e 74 33 32   TypeCode.UInt32
a890: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
a8a0: 20 20 20 72 65 74 75 72 6e 20 28 28 75 69 6e 74     return ((uint
a8b0: 29 6f 62 6a 29 20 21 3d 20 28 75 69 6e 74 29 30  )obj) != (uint)0
a8c0: 20 3f 20 74 72 75 65 20 3a 20 66 61 6c 73 65 3b   ? true : false;
a8d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
a8e0: 73 65 20 54 79 70 65 43 6f 64 65 2e 49 6e 74 36  se TypeCode.Int6
a8f0: 34 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  4:..            
a900: 20 20 20 20 72 65 74 75 72 6e 20 28 28 6c 6f 6e      return ((lon
a910: 67 29 6f 62 6a 29 20 21 3d 20 28 6c 6f 6e 67 29  g)obj) != (long)
a920: 30 20 3f 20 74 72 75 65 20 3a 20 66 61 6c 73 65  0 ? true : false
a930: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  ;..            c
a940: 61 73 65 20 54 79 70 65 43 6f 64 65 2e 55 49 6e  ase TypeCode.UIn
a950: 74 36 34 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  t64:..          
a960: 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 28 75        return ((u
a970: 6c 6f 6e 67 29 6f 62 6a 29 20 21 3d 20 28 75 6c  long)obj) != (ul
a980: 6f 6e 67 29 30 20 3f 20 74 72 75 65 20 3a 20 66  ong)0 ? true : f
a990: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
a9a0: 20 20 20 63 61 73 65 20 54 79 70 65 43 6f 64 65     case TypeCode
a9b0: 2e 53 69 6e 67 6c 65 3a 0d 0a 20 20 20 20 20 20  .Single:..      
a9c0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
a9d0: 20 28 28 66 6c 6f 61 74 29 6f 62 6a 29 20 21 3d   ((float)obj) !=
a9e0: 20 28 66 6c 6f 61 74 29 30 2e 30 20 3f 20 74 72   (float)0.0 ? tr
a9f0: 75 65 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20 20  ue : false;..   
aa00: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 54 79           case Ty
aa10: 70 65 43 6f 64 65 2e 44 6f 75 62 6c 65 3a 0d 0a  peCode.Double:..
aa20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aa30: 72 65 74 75 72 6e 20 28 28 64 6f 75 62 6c 65 29  return ((double)
aa40: 6f 62 6a 29 20 21 3d 20 28 64 6f 75 62 6c 65 29  obj) != (double)
aa50: 30 2e 30 20 3f 20 74 72 75 65 20 3a 20 66 61 6c  0.0 ? true : fal
aa60: 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se;..           
aa70: 20 63 61 73 65 20 54 79 70 65 43 6f 64 65 2e 44   case TypeCode.D
aa80: 65 63 69 6d 61 6c 3a 0d 0a 20 20 20 20 20 20 20  ecimal:..       
aa90: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
aaa0: 28 28 64 65 63 69 6d 61 6c 29 6f 62 6a 29 20 21  ((decimal)obj) !
aab0: 3d 20 44 65 63 69 6d 61 6c 2e 5a 65 72 6f 20 3f  = Decimal.Zero ?
aac0: 20 74 72 75 65 20 3a 20 66 61 6c 73 65 3b 0d 0a   true : false;..
aad0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
aae0: 20 54 79 70 65 43 6f 64 65 2e 53 74 72 69 6e 67   TypeCode.String
aaf0: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
ab00: 20 20 20 72 65 74 75 72 6e 20 76 69 61 46 72 61     return viaFra
ab10: 6d 65 77 6f 72 6b 20 3f 0d 0a 20 20 20 20 20 20  mework ?..      
ab20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 6f                Co
ab30: 6e 76 65 72 74 2e 54 6f 42 6f 6f 6c 65 61 6e 28  nvert.ToBoolean(
ab40: 6f 62 6a 2c 20 70 72 6f 76 69 64 65 72 29 20 3a  obj, provider) :
ab50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ab60: 20 20 20 20 20 20 54 6f 42 6f 6f 6c 65 61 6e 28        ToBoolean(
ab70: 54 6f 53 74 72 69 6e 67 57 69 74 68 50 72 6f 76  ToStringWithProv
ab80: 69 64 65 72 28 6f 62 6a 2c 20 70 72 6f 76 69 64  ider(obj, provid
ab90: 65 72 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  er));..         
aba0: 20 20 20 64 65 66 61 75 6c 74 3a 0d 0a 20 20 20     default:..   
abb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72               thr
abc0: 6f 77 20 6e 65 77 20 53 51 4c 69 74 65 45 78 63  ow new SQLiteExc
abd0: 65 70 74 69 6f 6e 28 53 74 72 69 6e 67 2e 46 6f  eption(String.Fo
abe0: 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
abf0: 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
ac00: 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
ac10: 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
ac20: 20 20 20 20 20 20 20 20 20 20 20 20 22 43 61 6e              "Can
ac30: 6e 6f 74 20 63 6f 6e 76 65 72 74 20 74 79 70 65  not convert type
ac40: 20 7b 30 7d 20 74 6f 20 62 6f 6f 6c 65 61 6e 22   {0} to boolean"
ac50: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
ac60: 20 20 20 20 20 20 20 74 79 70 65 43 6f 64 65 29         typeCode)
ac70: 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
ac80: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
ac90: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
aca0: 2f 2f 20 43 6f 6e 76 65 72 74 20 61 20 76 61 6c  // Convert a val
acb0: 75 65 20 74 6f 20 74 72 75 65 20 6f 72 20 66 61  ue to true or fa
acc0: 6c 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  lse...    /// </
acd0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
ace0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73  / <param name="s
acf0: 6f 75 72 63 65 22 3e 41 20 73 74 72 69 6e 67 20  ource">A string 
ad00: 6f 72 20 6e 75 6d 62 65 72 20 72 65 70 72 65 73  or number repres
ad10: 65 6e 74 69 6e 67 20 74 72 75 65 20 6f 72 20 66  enting true or f
ad20: 61 6c 73 65 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  alse</param>..  
ad30: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 3c    /// <returns><
ad40: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70  /returns>..    p
ad50: 75 62 6c 69 63 20 73 74 61 74 69 63 20 62 6f 6f  ublic static boo
ad60: 6c 20 54 6f 42 6f 6f 6c 65 61 6e 28 6f 62 6a 65  l ToBoolean(obje
ad70: 63 74 20 73 6f 75 72 63 65 29 0d 0a 20 20 20 20  ct source)..    
ad80: 7b 0d 0a 20 20 20 20 20 20 69 66 20 28 73 6f 75  {..      if (sou
ad90: 72 63 65 20 69 73 20 62 6f 6f 6c 29 20 72 65 74  rce is bool) ret
ada0: 75 72 6e 20 28 62 6f 6f 6c 29 73 6f 75 72 63 65  urn (bool)source
adb0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 72 65 74 75 72  ;....      retur
adc0: 6e 20 54 6f 42 6f 6f 6c 65 61 6e 28 54 6f 53 74  n ToBoolean(ToSt
add0: 72 69 6e 67 57 69 74 68 50 72 6f 76 69 64 65 72  ringWithProvider
ade0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 6f 75  (..          sou
adf0: 72 63 65 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f  rce, CultureInfo
ae00: 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72  .InvariantCultur
ae10: 65 29 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  e));..    }.... 
ae20: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
ae30: 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72  ..    /// Conver
ae40: 74 20 61 20 73 74 72 69 6e 67 20 74 6f 20 74 72  t a string to tr
ae50: 75 65 20 6f 72 20 66 61 6c 73 65 2e 0d 0a 20 20  ue or false...  
ae60: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
ae70: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
ae80: 20 6e 61 6d 65 3d 22 73 6f 75 72 63 65 22 3e 41   name="source">A
ae90: 20 73 74 72 69 6e 67 20 72 65 70 72 65 73 65 6e   string represen
aea0: 74 69 6e 67 20 74 72 75 65 20 6f 72 20 66 61 6c  ting true or fal
aeb0: 73 65 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  se</param>..    
aec0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 3c 2f 72  /// <returns></r
aed0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f  eturns>..    ///
aee0: 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20   <remarks>..    
aef0: 2f 2f 2f 20 22 79 65 73 22 2c 20 22 6e 6f 22 2c  /// "yes", "no",
af00: 20 22 79 22 2c 20 22 6e 22 2c 20 22 30 22 2c 20   "y", "n", "0", 
af10: 22 31 22 2c 20 22 6f 6e 22 2c 20 22 6f 66 66 22  "1", "on", "off"
af20: 20 61 73 20 77 65 6c 6c 20 61 73 20 42 6f 6f 6c   as well as Bool
af30: 65 61 6e 2e 46 61 6c 73 65 53 74 72 69 6e 67 20  ean.FalseString 
af40: 61 6e 64 20 42 6f 6f 6c 65 61 6e 2e 54 72 75 65  and Boolean.True
af50: 53 74 72 69 6e 67 20 77 69 6c 6c 20 61 6c 6c 20  String will all 
af60: 62 65 0d 0a 20 20 20 20 2f 2f 2f 20 63 6f 6e 76  be..    /// conv
af70: 65 72 74 65 64 20 74 6f 20 61 20 70 72 6f 70 65  erted to a prope
af80: 72 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 2e  r boolean value.
af90: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61  ..    /// </rema
afa0: 72 6b 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63  rks>..    public
afb0: 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 54 6f 42   static bool ToB
afc0: 6f 6f 6c 65 61 6e 28 73 74 72 69 6e 67 20 73 6f  oolean(string so
afd0: 75 72 63 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  urce)..    {..  
afe0: 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e 43      if (String.C
aff0: 6f 6d 70 61 72 65 28 73 6f 75 72 63 65 2c 20 62  ompare(source, b
b000: 6f 6f 6c 2e 54 72 75 65 53 74 72 69 6e 67 2c 20  ool.TrueString, 
b010: 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e  StringComparison
b020: 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61  .OrdinalIgnoreCa
b030: 73 65 29 20 3d 3d 20 30 29 20 72 65 74 75 72 6e  se) == 0) return
b040: 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 65 6c   true;..      el
b050: 73 65 20 69 66 20 28 53 74 72 69 6e 67 2e 43 6f  se if (String.Co
b060: 6d 70 61 72 65 28 73 6f 75 72 63 65 2c 20 62 6f  mpare(source, bo
b070: 6f 6c 2e 46 61 6c 73 65 53 74 72 69 6e 67 2c 20  ol.FalseString, 
b080: 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e  StringComparison
b090: 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61  .OrdinalIgnoreCa
b0a0: 73 65 29 20 3d 3d 20 30 29 20 72 65 74 75 72 6e  se) == 0) return
b0b0: 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
b0c0: 20 73 77 69 74 63 68 28 73 6f 75 72 63 65 2e 54   switch(source.T
b0d0: 6f 4c 6f 77 65 72 28 43 75 6c 74 75 72 65 49 6e  oLower(CultureIn
b0e0: 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74  fo.InvariantCult
b0f0: 75 72 65 29 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  ure))..      {..
b100: 20 20 20 20 20 20 20 20 63 61 73 65 20 22 79 65          case "ye
b110: 73 22 3a 0d 0a 20 20 20 20 20 20 20 20 63 61 73  s":..        cas
b120: 65 20 22 79 22 3a 0d 0a 20 20 20 20 20 20 20 20  e "y":..        
b130: 63 61 73 65 20 22 31 22 3a 0d 0a 20 20 20 20 20  case "1":..     
b140: 20 20 20 63 61 73 65 20 22 6f 6e 22 3a 0d 0a 20     case "on":.. 
b150: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
b160: 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 63  true;..        c
b170: 61 73 65 20 22 6e 6f 22 3a 0d 0a 20 20 20 20 20  ase "no":..     
b180: 20 20 20 63 61 73 65 20 22 6e 22 3a 0d 0a 20 20     case "n":..  
b190: 20 20 20 20 20 20 63 61 73 65 20 22 30 22 3a 0d        case "0":.
b1a0: 0a 20 20 20 20 20 20 20 20 63 61 73 65 20 22 6f  .        case "o
b1b0: 66 66 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  ff":..          
b1c0: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20  return false;.. 
b1d0: 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0d         default:.
b1e0: 0a 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77  .          throw
b1f0: 20 6e 65 77 20 41 72 67 75 6d 65 6e 74 45 78 63   new ArgumentExc
b200: 65 70 74 69 6f 6e 28 22 73 6f 75 72 63 65 22 29  eption("source")
b210: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  ;..      }..    
b220: 7d 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  }....    #region
b230: 20 54 79 70 65 20 43 6f 6e 76 65 72 73 69 6f 6e   Type Conversion
b240: 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  s..    /// <summ
b250: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f  ary>..    /// Co
b260: 6e 76 65 72 74 73 20 61 20 53 51 4c 69 74 65 54  nverts a SQLiteT
b270: 79 70 65 20 74 6f 20 61 20 2e 4e 45 54 20 54 79  ype to a .NET Ty
b280: 70 65 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 2f  pe object..    /
b290: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
b2a0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
b2b0: 6d 65 3d 22 74 22 3e 54 68 65 20 53 51 4c 69 74  me="t">The SQLit
b2c0: 65 54 79 70 65 20 74 6f 20 63 6f 6e 76 65 72 74  eType to convert
b2d0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
b2e0: 2f 20 3c 72 65 74 75 72 6e 73 3e 52 65 74 75 72  / <returns>Retur
b2f0: 6e 73 20 61 20 2e 4e 45 54 20 54 79 70 65 20 6f  ns a .NET Type o
b300: 62 6a 65 63 74 3c 2f 72 65 74 75 72 6e 73 3e 0d  bject</returns>.
b310: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
b320: 61 74 69 63 20 54 79 70 65 20 53 51 4c 69 74 65  atic Type SQLite
b330: 54 79 70 65 54 6f 54 79 70 65 28 53 51 4c 69 74  TypeToType(SQLit
b340: 65 54 79 70 65 20 74 29 0d 0a 20 20 20 20 7b 0d  eType t)..    {.
b350: 0a 20 20 20 20 20 20 69 66 20 28 74 2e 54 79 70  .      if (t.Typ
b360: 65 20 3d 3d 20 44 62 54 79 70 65 2e 4f 62 6a 65  e == DbType.Obje
b370: 63 74 29 0d 0a 20 20 20 20 20 20 20 20 72 65 74  ct)..        ret
b380: 75 72 6e 20 5f 61 66 66 69 6e 69 74 79 74 6f 74  urn _affinitytot
b390: 79 70 65 5b 28 69 6e 74 29 74 2e 41 66 66 69 6e  ype[(int)t.Affin
b3a0: 69 74 79 5d 3b 0d 0a 20 20 20 20 20 20 65 6c 73  ity];..      els
b3b0: 65 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  e..        retur
b3c0: 6e 20 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 2e  n SQLiteConvert.
b3d0: 44 62 54 79 70 65 54 6f 54 79 70 65 28 74 2e 54  DbTypeToType(t.T
b3e0: 79 70 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  ype);..    }....
b3f0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
b400: 69 63 20 54 79 70 65 5b 5d 20 5f 61 66 66 69 6e  ic Type[] _affin
b410: 69 74 79 74 6f 74 79 70 65 20 3d 20 7b 0d 0a 20  itytotype = {.. 
b420: 20 20 20 20 20 74 79 70 65 6f 66 28 6f 62 6a 65       typeof(obje
b430: 63 74 29 2c 20 20 20 2f 2f 20 55 6e 69 6e 69 74  ct),   // Uninit
b440: 69 61 6c 69 7a 65 64 20 28 30 29 0d 0a 20 20 20  ialized (0)..   
b450: 20 20 20 74 79 70 65 6f 66 28 49 6e 74 36 34 29     typeof(Int64)
b460: 2c 20 20 20 20 2f 2f 20 49 6e 74 36 34 20 28 31  ,    // Int64 (1
b470: 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28  )..      typeof(
b480: 44 6f 75 62 6c 65 29 2c 20 20 20 2f 2f 20 44 6f  Double),   // Do
b490: 75 62 6c 65 20 28 32 29 0d 0a 20 20 20 20 20 20  uble (2)..      
b4a0: 74 79 70 65 6f 66 28 73 74 72 69 6e 67 29 2c 20  typeof(string), 
b4b0: 20 20 2f 2f 20 54 65 78 74 20 28 33 29 0d 0a 20    // Text (3).. 
b4c0: 20 20 20 20 20 74 79 70 65 6f 66 28 62 79 74 65       typeof(byte
b4d0: 5b 5d 29 2c 20 20 20 2f 2f 20 42 6c 6f 62 20 28  []),   // Blob (
b4e0: 34 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66  4)..      typeof
b4f0: 28 6f 62 6a 65 63 74 29 2c 20 20 20 2f 2f 20 4e  (object),   // N
b500: 75 6c 6c 20 28 35 29 0d 0a 20 20 20 20 20 20 74  ull (5)..      t
b510: 79 70 65 6f 66 28 44 61 74 65 54 69 6d 65 29 2c  ypeof(DateTime),
b520: 20 2f 2f 20 44 61 74 65 54 69 6d 65 20 28 31 30   // DateTime (10
b530: 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28  )..      typeof(
b540: 6f 62 6a 65 63 74 29 20 20 20 20 2f 2f 20 4e 6f  object)    // No
b550: 6e 65 20 28 31 31 29 0d 0a 20 20 20 20 7d 3b 0d  ne (11)..    };.
b560: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
b570: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 46 6f  ary>..    /// Fo
b580: 72 20 61 20 67 69 76 65 6e 20 69 6e 74 72 69 6e  r a given intrin
b590: 73 69 63 20 74 79 70 65 2c 20 72 65 74 75 72 6e  sic type, return
b5a0: 20 61 20 44 62 54 79 70 65 0d 0a 20 20 20 20 2f   a DbType..    /
b5b0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
b5c0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
b5d0: 6d 65 3d 22 74 79 70 22 3e 54 68 65 20 6e 61 74  me="typ">The nat
b5e0: 69 76 65 20 74 79 70 65 20 74 6f 20 63 6f 6e 76  ive type to conv
b5f0: 65 72 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  ert</param>..   
b600: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68   /// <returns>Th
b610: 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20  e corresponding 
b620: 28 63 6c 6f 73 65 73 74 20 6d 61 74 63 68 29 20  (closest match) 
b630: 44 62 54 79 70 65 3c 2f 72 65 74 75 72 6e 73 3e  DbType</returns>
b640: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
b650: 74 61 74 69 63 20 44 62 54 79 70 65 20 54 79 70  tatic DbType Typ
b660: 65 54 6f 44 62 54 79 70 65 28 54 79 70 65 20 74  eToDbType(Type t
b670: 79 70 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  yp)..    {..    
b680: 20 20 54 79 70 65 43 6f 64 65 20 74 63 20 3d 20    TypeCode tc = 
b690: 54 79 70 65 2e 47 65 74 54 79 70 65 43 6f 64 65  Type.GetTypeCode
b6a0: 28 74 79 70 29 3b 0d 0a 20 20 20 20 20 20 69 66  (typ);..      if
b6b0: 20 28 74 63 20 3d 3d 20 54 79 70 65 43 6f 64 65   (tc == TypeCode
b6c0: 2e 4f 62 6a 65 63 74 29 0d 0a 20 20 20 20 20 20  .Object)..      
b6d0: 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 74  {..        if (t
b6e0: 79 70 20 3d 3d 20 74 79 70 65 6f 66 28 62 79 74  yp == typeof(byt
b6f0: 65 5b 5d 29 29 20 72 65 74 75 72 6e 20 44 62 54  e[])) return DbT
b700: 79 70 65 2e 42 69 6e 61 72 79 3b 0d 0a 20 20 20  ype.Binary;..   
b710: 20 20 20 20 20 69 66 20 28 74 79 70 20 3d 3d 20       if (typ == 
b720: 74 79 70 65 6f 66 28 47 75 69 64 29 29 20 72 65  typeof(Guid)) re
b730: 74 75 72 6e 20 44 62 54 79 70 65 2e 47 75 69 64  turn DbType.Guid
b740: 3b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  ;..        retur
b750: 6e 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 3b  n DbType.String;
b760: 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20  ..      }..     
b770: 20 72 65 74 75 72 6e 20 5f 74 79 70 65 74 6f 64   return _typetod
b780: 62 74 79 70 65 5b 28 69 6e 74 29 74 63 5d 3b 0d  btype[(int)tc];.
b790: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72  .    }....    pr
b7a0: 69 76 61 74 65 20 73 74 61 74 69 63 20 44 62 54  ivate static DbT
b7b0: 79 70 65 5b 5d 20 5f 74 79 70 65 74 6f 64 62 74  ype[] _typetodbt
b7c0: 79 70 65 20 3d 20 7b 0d 0a 20 20 20 20 20 20 44  ype = {..      D
b7d0: 62 54 79 70 65 2e 4f 62 6a 65 63 74 2c 20 20 20  bType.Object,   
b7e0: 2f 2f 20 45 6d 70 74 79 20 28 30 29 0d 0a 20 20  // Empty (0)..  
b7f0: 20 20 20 20 44 62 54 79 70 65 2e 42 69 6e 61 72      DbType.Binar
b800: 79 2c 20 20 20 2f 2f 20 4f 62 6a 65 63 74 20 28  y,   // Object (
b810: 31 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65  1)..      DbType
b820: 2e 4f 62 6a 65 63 74 2c 20 20 20 2f 2f 20 44 42  .Object,   // DB
b830: 4e 75 6c 6c 20 28 32 29 0d 0a 20 20 20 20 20 20  Null (2)..      
b840: 44 62 54 79 70 65 2e 42 6f 6f 6c 65 61 6e 2c 20  DbType.Boolean, 
b850: 20 2f 2f 20 42 6f 6f 6c 65 61 6e 20 28 33 29 0d   // Boolean (3).
b860: 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 53 42  .      DbType.SB
b870: 79 74 65 2c 20 20 20 20 2f 2f 20 43 68 61 72 20  yte,    // Char 
b880: 28 34 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70  (4)..      DbTyp
b890: 65 2e 53 42 79 74 65 2c 20 20 20 20 2f 2f 20 53  e.SByte,    // S
b8a0: 42 79 74 65 20 28 35 29 0d 0a 20 20 20 20 20 20  Byte (5)..      
b8b0: 44 62 54 79 70 65 2e 42 79 74 65 2c 20 20 20 20  DbType.Byte,    
b8c0: 20 2f 2f 20 42 79 74 65 20 28 36 29 0d 0a 20 20   // Byte (6)..  
b8d0: 20 20 20 20 44 62 54 79 70 65 2e 49 6e 74 31 36      DbType.Int16
b8e0: 2c 20 20 20 20 2f 2f 20 49 6e 74 31 36 20 28 37  ,    // Int16 (7
b8f0: 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e  )..      DbType.
b900: 55 49 6e 74 31 36 2c 20 20 20 2f 2f 20 55 49 6e  UInt16,   // UIn
b910: 74 31 36 20 28 38 29 0d 0a 20 20 20 20 20 20 44  t16 (8)..      D
b920: 62 54 79 70 65 2e 49 6e 74 33 32 2c 20 20 20 20  bType.Int32,    
b930: 2f 2f 20 49 6e 74 33 32 20 28 39 29 0d 0a 20 20  // Int32 (9)..  
b940: 20 20 20 20 44 62 54 79 70 65 2e 55 49 6e 74 33      DbType.UInt3
b950: 32 2c 20 20 20 2f 2f 20 55 49 6e 74 33 32 20 28  2,   // UInt32 (
b960: 31 30 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70  10)..      DbTyp
b970: 65 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 49  e.Int64,    // I
b980: 6e 74 36 34 20 28 31 31 29 0d 0a 20 20 20 20 20  nt64 (11)..     
b990: 20 44 62 54 79 70 65 2e 55 49 6e 74 36 34 2c 20   DbType.UInt64, 
b9a0: 20 20 2f 2f 20 55 49 6e 74 36 34 20 28 31 32 29    // UInt64 (12)
b9b0: 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 53  ..      DbType.S
b9c0: 69 6e 67 6c 65 2c 20 20 20 2f 2f 20 53 69 6e 67  ingle,   // Sing
b9d0: 6c 65 20 28 31 33 29 0d 0a 20 20 20 20 20 20 44  le (13)..      D
b9e0: 62 54 79 70 65 2e 44 6f 75 62 6c 65 2c 20 20 20  bType.Double,   
b9f0: 2f 2f 20 44 6f 75 62 6c 65 20 28 31 34 29 0d 0a  // Double (14)..
ba00: 20 20 20 20 20 20 44 62 54 79 70 65 2e 44 65 63        DbType.Dec
ba10: 69 6d 61 6c 2c 20 20 2f 2f 20 44 65 63 69 6d 61  imal,  // Decima
ba20: 6c 20 28 31 35 29 0d 0a 20 20 20 20 20 20 44 62  l (15)..      Db
ba30: 54 79 70 65 2e 44 61 74 65 54 69 6d 65 2c 20 2f  Type.DateTime, /
ba40: 2f 20 44 61 74 65 54 69 6d 65 20 28 31 36 29 0d  / DateTime (16).
ba50: 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 4f 62  .      DbType.Ob
ba60: 6a 65 63 74 2c 20 20 20 2f 2f 20 3f 3f 20 28 31  ject,   // ?? (1
ba70: 37 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65  7)..      DbType
ba80: 2e 53 74 72 69 6e 67 20 20 20 20 2f 2f 20 53 74  .String    // St
ba90: 72 69 6e 67 20 28 31 38 29 0d 0a 20 20 20 20 7d  ring (18)..    }
baa0: 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  ;....    /// <su
bab0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
bac0: 52 65 74 75 72 6e 73 20 74 68 65 20 43 6f 6c 75  Returns the Colu
bad0: 6d 6e 53 69 7a 65 20 66 6f 72 20 74 68 65 20 67  mnSize for the g
bae0: 69 76 65 6e 20 44 62 54 79 70 65 0d 0a 20 20 20  iven DbType..   
baf0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
bb00: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
bb10: 6e 61 6d 65 3d 22 74 79 70 22 3e 54 68 65 20 44  name="typ">The D
bb20: 62 54 79 70 65 20 74 6f 20 67 65 74 20 74 68 65  bType to get the
bb30: 20 73 69 7a 65 20 6f 66 3c 2f 70 61 72 61 6d 3e   size of</param>
bb40: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
bb50: 6e 73 3e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  ns></returns>.. 
bb60: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
bb70: 69 63 20 69 6e 74 20 44 62 54 79 70 65 54 6f 43  ic int DbTypeToC
bb80: 6f 6c 75 6d 6e 53 69 7a 65 28 44 62 54 79 70 65  olumnSize(DbType
bb90: 20 74 79 70 29 0d 0a 20 20 20 20 7b 0d 0a 20 20   typ)..    {..  
bba0: 20 20 20 20 72 65 74 75 72 6e 20 5f 64 62 74 79      return _dbty
bbb0: 70 65 74 6f 63 6f 6c 75 6d 6e 73 69 7a 65 5b 28  petocolumnsize[(
bbc0: 69 6e 74 29 74 79 70 5d 3b 0d 0a 20 20 20 20 7d  int)typ];..    }
bbd0: 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20  ....    private 
bbe0: 73 74 61 74 69 63 20 69 6e 74 5b 5d 20 5f 64 62  static int[] _db
bbf0: 74 79 70 65 74 6f 63 6f 6c 75 6d 6e 73 69 7a 65  typetocolumnsize
bc00: 20 3d 20 7b 0d 0a 20 20 20 20 20 20 69 6e 74 2e   = {..      int.
bc10: 4d 61 78 56 61 6c 75 65 2c 20 2f 2f 20 41 6e 73  MaxValue, // Ans
bc20: 69 53 74 72 69 6e 67 20 28 30 29 0d 0a 20 20 20  iString (0)..   
bc30: 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75 65 2c     int.MaxValue,
bc40: 20 2f 2f 20 42 69 6e 61 72 79 20 28 31 29 0d 0a   // Binary (1)..
bc50: 20 20 20 20 20 20 31 2c 20 20 20 20 20 20 20 20        1,        
bc60: 20 20 20 20 2f 2f 20 42 79 74 65 20 28 32 29 0d      // Byte (2).
bc70: 0a 20 20 20 20 20 20 31 2c 20 20 20 20 20 20 20  .      1,       
bc80: 20 20 20 20 20 2f 2f 20 42 6f 6f 6c 65 61 6e 20       // Boolean 
bc90: 28 33 29 0d 0a 20 20 20 20 20 20 38 2c 20 20 20  (3)..      8,   
bca0: 20 20 20 20 20 20 20 20 20 2f 2f 20 43 75 72 72           // Curr
bcb0: 65 6e 63 79 20 28 34 29 0d 0a 20 20 20 20 20 20  ency (4)..      
bcc0: 38 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  8,            //
bcd0: 20 44 61 74 65 20 28 35 29 0d 0a 20 20 20 20 20   Date (5)..     
bce0: 20 38 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f   8,            /
bcf0: 2f 20 44 61 74 65 54 69 6d 65 20 28 36 29 0d 0a  / DateTime (6)..
bd00: 20 20 20 20 20 20 38 2c 20 20 20 20 20 20 20 20        8,        
bd10: 20 20 20 20 2f 2f 20 44 65 63 69 6d 61 6c 20 28      // Decimal (
bd20: 37 29 0d 0a 20 20 20 20 20 20 38 2c 20 20 20 20  7)..      8,    
bd30: 20 20 20 20 20 20 20 20 2f 2f 20 44 6f 75 62 6c          // Doubl
bd40: 65 20 28 38 29 0d 0a 20 20 20 20 20 20 31 36 2c  e (8)..      16,
bd50: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 47 75             // Gu
bd60: 69 64 20 28 39 29 0d 0a 20 20 20 20 20 20 32 2c  id (9)..      2,
bd70: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49              // I
bd80: 6e 74 31 36 20 28 31 30 29 0d 0a 20 20 20 20 20  nt16 (10)..     
bd90: 20 34 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f   4,            /
bda0: 2f 20 49 6e 74 33 32 20 28 31 31 29 0d 0a 20 20  / Int32 (11)..  
bdb0: 20 20 20 20 38 2c 20 20 20 20 20 20 20 20 20 20      8,          
bdc0: 20 20 2f 2f 20 49 6e 74 36 34 20 28 31 32 29 0d    // Int64 (12).
bdd0: 0a 20 20 20 20 20 20 69 6e 74 2e 4d 61 78 56 61  .      int.MaxVa
bde0: 6c 75 65 2c 20 2f 2f 20 4f 62 6a 65 63 74 20 28  lue, // Object (
bdf0: 31 33 29 0d 0a 20 20 20 20 20 20 31 2c 20 20 20  13)..      1,   
be00: 20 20 20 20 20 20 20 20 20 2f 2f 20 53 42 79 74           // SByt
be10: 65 20 28 31 34 29 0d 0a 20 20 20 20 20 20 34 2c  e (14)..      4,
be20: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 53              // S
be30: 69 6e 67 6c 65 20 28 31 35 29 0d 0a 20 20 20 20  ingle (15)..    
be40: 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75 65 2c 20    int.MaxValue, 
be50: 2f 2f 20 53 74 72 69 6e 67 20 28 31 36 29 0d 0a  // String (16)..
be60: 20 20 20 20 20 20 38 2c 20 20 20 20 20 20 20 20        8,        
be70: 20 20 20 20 2f 2f 20 54 69 6d 65 20 28 31 37 29      // Time (17)
be80: 0d 0a 20 20 20 20 20 20 32 2c 20 20 20 20 20 20  ..      2,      
be90: 20 20 20 20 20 20 2f 2f 20 55 49 6e 74 31 36 20        // UInt16 
bea0: 28 31 38 29 0d 0a 20 20 20 20 20 20 34 2c 20 20  (18)..      4,  
beb0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 55 49 6e            // UIn
bec0: 74 33 32 20 28 31 39 29 0d 0a 20 20 20 20 20 20  t32 (19)..      
bed0: 38 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  8,            //
bee0: 20 55 49 6e 74 36 34 20 28 32 30 29 0d 0a 20 20   UInt64 (20)..  
bef0: 20 20 20 20 38 2c 20 20 20 20 20 20 20 20 20 20      8,          
bf00: 20 20 2f 2f 20 56 61 72 4e 75 6d 65 72 69 63 20    // VarNumeric 
bf10: 28 32 31 29 0d 0a 20 20 20 20 20 20 69 6e 74 2e  (21)..      int.
bf20: 4d 61 78 56 61 6c 75 65 2c 20 2f 2f 20 41 6e 73  MaxValue, // Ans
bf30: 69 53 74 72 69 6e 67 46 69 78 65 64 4c 65 6e 67  iStringFixedLeng
bf40: 74 68 20 28 32 32 29 0d 0a 20 20 20 20 20 20 69  th (22)..      i
bf50: 6e 74 2e 4d 61 78 56 61 6c 75 65 2c 20 2f 2f 20  nt.MaxValue, // 
bf60: 53 74 72 69 6e 67 46 69 78 65 64 4c 65 6e 67 74  StringFixedLengt
bf70: 68 20 28 32 33 29 0d 0a 20 20 20 20 20 20 69 6e  h (23)..      in
bf80: 74 2e 4d 61 78 56 61 6c 75 65 2c 20 2f 2f 20 3f  t.MaxValue, // ?
bf90: 3f 20 28 32 34 29 0d 0a 20 20 20 20 20 20 69 6e  ? (24)..      in
bfa0: 74 2e 4d 61 78 56 61 6c 75 65 20 20 2f 2f 20 58  t.MaxValue  // X
bfb0: 6d 6c 20 28 32 35 29 0d 0a 20 20 20 20 7d 3b 0d  ml (25)..    };.
bfc0: 0a 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ...    internal 
bfd0: 73 74 61 74 69 63 20 6f 62 6a 65 63 74 20 44 62  static object Db
bfe0: 54 79 70 65 54 6f 4e 75 6d 65 72 69 63 50 72 65  TypeToNumericPre
bff0: 63 69 73 69 6f 6e 28 44 62 54 79 70 65 20 74 79  cision(DbType ty
c000: 70 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  p)..    {..     
c010: 20 72 65 74 75 72 6e 20 5f 64 62 74 79 70 65 74   return _dbtypet
c020: 6f 6e 75 6d 65 72 69 63 70 72 65 63 69 73 69 6f  onumericprecisio
c030: 6e 5b 28 69 6e 74 29 74 79 70 5d 3b 0d 0a 20 20  n[(int)typ];..  
c040: 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61    }....    priva
c050: 74 65 20 73 74 61 74 69 63 20 6f 62 6a 65 63 74  te static object
c060: 5b 5d 20 5f 64 62 74 79 70 65 74 6f 6e 75 6d 65  [] _dbtypetonume
c070: 72 69 63 70 72 65 63 69 73 69 6f 6e 20 3d 20 7b  ricprecision = {
c080: 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56  ..      DBNull.V
c090: 61 6c 75 65 2c 20 2f 2f 20 41 6e 73 69 53 74 72  alue, // AnsiStr
c0a0: 69 6e 67 20 28 30 29 0d 0a 20 20 20 20 20 20 44  ing (0)..      D
c0b0: 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20  BNull.Value, // 
c0c0: 42 69 6e 61 72 79 20 28 31 29 0d 0a 20 20 20 20  Binary (1)..    
c0d0: 20 20 33 2c 20 20 20 20 20 20 20 20 20 20 20 20    3,            
c0e0: 2f 2f 20 42 79 74 65 20 28 32 29 0d 0a 20 20 20  // Byte (2)..   
c0f0: 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c     DBNull.Value,
c100: 20 2f 2f 20 42 6f 6f 6c 65 61 6e 20 28 33 29 0d   // Boolean (3).
c110: 0a 20 20 20 20 20 20 31 39 2c 20 20 20 20 20 20  .      19,      
c120: 20 20 20 20 20 2f 2f 20 43 75 72 72 65 6e 63 79       // Currency
c130: 20 28 34 29 0d 0a 20 20 20 20 20 20 44 42 4e 75   (4)..      DBNu
c140: 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 44 61 74  ll.Value, // Dat
c150: 65 20 28 35 29 0d 0a 20 20 20 20 20 20 44 42 4e  e (5)..      DBN
c160: 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 44 61  ull.Value, // Da
c170: 74 65 54 69 6d 65 20 28 36 29 0d 0a 20 20 20 20  teTime (6)..    
c180: 20 20 35 33 2c 20 20 20 20 20 20 20 20 20 20 20    53,           
c190: 2f 2f 20 44 65 63 69 6d 61 6c 20 28 37 29 0d 0a  // Decimal (7)..
c1a0: 20 20 20 20 20 20 35 33 2c 20 20 20 20 20 20 20        53,       
c1b0: 20 20 20 20 2f 2f 20 44 6f 75 62 6c 65 20 28 38      // Double (8
c1c0: 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e  )..      DBNull.
c1d0: 56 61 6c 75 65 2c 20 2f 2f 20 47 75 69 64 20 28  Value, // Guid (
c1e0: 39 29 0d 0a 20 20 20 20 20 20 35 2c 20 20 20 20  9)..      5,    
c1f0: 20 20 20 20 20 20 20 20 2f 2f 20 49 6e 74 31 36          // Int16
c200: 20 28 31 30 29 0d 0a 20 20 20 20 20 20 31 30 2c   (10)..      10,
c210: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49 6e             // In
c220: 74 33 32 20 28 31 31 29 0d 0a 20 20 20 20 20 20  t32 (11)..      
c230: 31 39 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2f  19,           //
c240: 20 49 6e 74 36 34 20 28 31 32 29 0d 0a 20 20 20   Int64 (12)..   
c250: 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c     DBNull.Value,
c260: 20 2f 2f 20 4f 62 6a 65 63 74 20 28 31 33 29 0d   // Object (13).
c270: 0a 20 20 20 20 20 20 33 2c 20 20 20 20 20 20 20  .      3,       
c280: 20 20 20 20 20 2f 2f 20 53 42 79 74 65 20 28 31       // SByte (1
c290: 34 29 0d 0a 20 20 20 20 20 20 32 34 2c 20 20 20  4)..      24,   
c2a0: 20 20 20 20 20 20 20 20 2f 2f 20 53 69 6e 67 6c          // Singl
c2b0: 65 20 28 31 35 29 0d 0a 20 20 20 20 20 20 44 42  e (15)..      DB
c2c0: 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 53  Null.Value, // S
c2d0: 74 72 69 6e 67 20 28 31 36 29 0d 0a 20 20 20 20  tring (16)..    
c2e0: 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20    DBNull.Value, 
c2f0: 2f 2f 20 54 69 6d 65 20 28 31 37 29 0d 0a 20 20  // Time (17)..  
c300: 20 20 20 20 35 2c 20 20 20 20 20 20 20 20 20 20      5,          
c310: 20 20 2f 2f 20 55 49 6e 74 31 36 20 28 31 38 29    // UInt16 (18)
c320: 0d 0a 20 20 20 20 20 20 31 30 2c 20 20 20 20 20  ..      10,     
c330: 20 20 20 20 20 20 2f 2f 20 55 49 6e 74 33 32 20        // UInt32 
c340: 28 31 39 29 0d 0a 20 20 20 20 20 20 31 39 2c 20  (19)..      19, 
c350: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 55 49 6e            // UIn
c360: 74 36 34 20 28 32 30 29 0d 0a 20 20 20 20 20 20  t64 (20)..      
c370: 35 33 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2f  53,           //
c380: 20 56 61 72 4e 75 6d 65 72 69 63 20 28 32 31 29   VarNumeric (21)
c390: 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56  ..      DBNull.V
c3a0: 61 6c 75 65 2c 20 2f 2f 20 41 6e 73 69 53 74 72  alue, // AnsiStr
c3b0: 69 6e 67 46 69 78 65 64 4c 65 6e 67 74 68 20 28  ingFixedLength (
c3c0: 32 32 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c  22)..      DBNul
c3d0: 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 53 74 72 69  l.Value, // Stri
c3e0: 6e 67 46 69 78 65 64 4c 65 6e 67 74 68 20 28 32  ngFixedLength (2
c3f0: 33 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  3)..      DBNull
c400: 2e 56 61 6c 75 65 2c 20 2f 2f 20 3f 3f 20 28 32  .Value, // ?? (2
c410: 34 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  4)..      DBNull
c420: 2e 56 61 6c 75 65 20 20 2f 2f 20 58 6d 6c 20 28  .Value  // Xml (
c430: 32 35 29 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20  25)..    };.... 
c440: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
c450: 69 63 20 6f 62 6a 65 63 74 20 44 62 54 79 70 65  ic object DbType
c460: 54 6f 4e 75 6d 65 72 69 63 53 63 61 6c 65 28 44  ToNumericScale(D
c470: 62 54 79 70 65 20 74 79 70 29 0d 0a 20 20 20 20  bType typ)..    
c480: 7b 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  {..      return 
c490: 5f 64 62 74 79 70 65 74 6f 6e 75 6d 65 72 69 63  _dbtypetonumeric
c4a0: 73 63 61 6c 65 5b 28 69 6e 74 29 74 79 70 5d 3b  scale[(int)typ];
c4b0: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
c4c0: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 6f 62  rivate static ob
c4d0: 6a 65 63 74 5b 5d 20 5f 64 62 74 79 70 65 74 6f  ject[] _dbtypeto
c4e0: 6e 75 6d 65 72 69 63 73 63 61 6c 65 20 3d 20 7b  numericscale = {
c4f0: 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56  ..      DBNull.V
c500: 61 6c 75 65 2c 20 2f 2f 20 41 6e 73 69 53 74 72  alue, // AnsiStr
c510: 69 6e 67 20 28 30 29 0d 0a 20 20 20 20 20 20 44  ing (0)..      D
c520: 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20  BNull.Value, // 
c530: 42 69 6e 61 72 79 20 28 31 29 0d 0a 20 20 20 20  Binary (1)..    
c540: 20 20 30 2c 20 20 20 20 20 20 20 20 20 20 20 20    0,            
c550: 2f 2f 20 42 79 74 65 20 28 32 29 0d 0a 20 20 20  // Byte (2)..   
c560: 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c     DBNull.Value,
c570: 20 2f 2f 20 42 6f 6f 6c 65 61 6e 20 28 33 29 0d   // Boolean (3).
c580: 0a 20 20 20 20 20 20 34 2c 20 20 20 20 20 20 20  .      4,       
c590: 20 20 20 20 20 2f 2f 20 43 75 72 72 65 6e 63 79       // Currency
c5a0: 20 28 34 29 0d 0a 20 20 20 20 20 20 44 42 4e 75   (4)..      DBNu
c5b0: 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 44 61 74  ll.Value, // Dat
c5c0: 65 20 28 35 29 0d 0a 20 20 20 20 20 20 44 42 4e  e (5)..      DBN
c5d0: 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 44 61  ull.Value, // Da
c5e0: 74 65 54 69 6d 65 20 28 36 29 0d 0a 20 20 20 20  teTime (6)..    
c5f0: 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20    DBNull.Value, 
c600: 2f 2f 20 44 65 63 69 6d 61 6c 20 28 37 29 0d 0a  // Decimal (7)..
c610: 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c        DBNull.Val
c620: 75 65 2c 20 2f 2f 20 44 6f 75 62 6c 65 20 28 38  ue, // Double (8
c630: 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e  )..      DBNull.
c640: 56 61 6c 75 65 2c 20 2f 2f 20 47 75 69 64 20 28  Value, // Guid (
c650: 39 29 0d 0a 20 20 20 20 20 20 30 2c 20 20 20 20  9)..      0,    
c660: 20 20 20 20 20 20 20 20 2f 2f 20 49 6e 74 31 36          // Int16
c670: 20 28 31 30 29 0d 0a 20 20 20 20 20 20 30 2c 20   (10)..      0, 
c680: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49 6e             // In
c690: 74 33 32 20 28 31 31 29 0d 0a 20 20 20 20 20 20  t32 (11)..      
c6a0: 30 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  0,            //
c6b0: 20 49 6e 74 36 34 20 28 31 32 29 0d 0a 20 20 20   Int64 (12)..   
c6c0: 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c     DBNull.Value,
c6d0: 20 2f 2f 20 4f 62 6a 65 63 74 20 28 31 33 29 0d   // Object (13).
c6e0: 0a 20 20 20 20 20 20 30 2c 20 20 20 20 20 20 20  .      0,       
c6f0: 20 20 20 20 20 2f 2f 20 53 42 79 74 65 20 28 31       // SByte (1
c700: 34 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  4)..      DBNull
c710: 2e 56 61 6c 75 65 2c 20 2f 2f 20 53 69 6e 67 6c  .Value, // Singl
c720: 65 20 28 31 35 29 0d 0a 20 20 20 20 20 20 44 42  e (15)..      DB
c730: 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 53  Null.Value, // S
c740: 74 72 69 6e 67 20 28 31 36 29 0d 0a 20 20 20 20  tring (16)..    
c750: 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20    DBNull.Value, 
c760: 2f 2f 20 54 69 6d 65 20 28 31 37 29 0d 0a 20 20  // Time (17)..  
c770: 20 20 20 20 30 2c 20 20 20 20 20 20 20 20 20 20      0,          
c780: 20 20 2f 2f 20 55 49 6e 74 31 36 20 28 31 38 29    // UInt16 (18)
c790: 0d 0a 20 20 20 20 20 20 30 2c 20 20 20 20 20 20  ..      0,      
c7a0: 20 20 20 20 20 20 2f 2f 20 55 49 6e 74 33 32 20        // UInt32 
c7b0: 28 31 39 29 0d 0a 20 20 20 20 20 20 30 2c 20 20  (19)..      0,  
c7c0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 55 49 6e            // UIn
c7d0: 74 36 34 20 28 32 30 29 0d 0a 20 20 20 20 20 20  t64 (20)..      
c7e0: 30 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  0,            //
c7f0: 20 56 61 72 4e 75 6d 65 72 69 63 20 28 32 31 29   VarNumeric (21)
c800: 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56  ..      DBNull.V
c810: 61 6c 75 65 2c 20 2f 2f 20 41 6e 73 69 53 74 72  alue, // AnsiStr
c820: 69 6e 67 46 69 78 65 64 4c 65 6e 67 74 68 20 28  ingFixedLength (
c830: 32 32 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c  22)..      DBNul
c840: 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 53 74 72 69  l.Value, // Stri
c850: 6e 67 46 69 78 65 64 4c 65 6e 67 74 68 20 28 32  ngFixedLength (2
c860: 33 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  3)..      DBNull
c870: 2e 56 61 6c 75 65 2c 20 2f 2f 20 3f 3f 20 28 32  .Value, // ?? (2
c880: 34 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  4)..      DBNull
c890: 2e 56 61 6c 75 65 20 20 2f 2f 20 58 6d 6c 20 28  .Value  // Xml (
c8a0: 32 35 29 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20  25)..    };.... 
c8b0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
c8c0: 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d  ..    /// Determ
c8d0: 69 6e 65 73 20 74 68 65 20 64 65 66 61 75 6c 74  ines the default
c8e0: 20 64 61 74 61 62 61 73 65 20 74 79 70 65 20 6e   database type n
c8f0: 61 6d 65 20 74 6f 20 62 65 20 75 73 65 64 20 77  ame to be used w
c900: 68 65 6e 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 70  hen a..    /// p
c910: 65 72 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20 76 61  er-connection va
c920: 6c 75 65 20 69 73 20 6e 6f 74 20 61 76 61 69 6c  lue is not avail
c930: 61 62 6c 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  able...    /// <
c940: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
c950: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
c960: 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e 0d 0a 20 20  connection">..  
c970: 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65 63    /// The connec
c980: 74 69 6f 6e 20 63 6f 6e 74 65 78 74 20 66 6f 72  tion context for
c990: 20 74 79 70 65 20 6d 61 70 70 69 6e 67 73 2c 20   type mappings, 
c9a0: 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 2f 2f 2f  if any...    ///
c9b0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
c9c0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
c9d0: 20 20 2f 2f 2f 20 54 68 65 20 64 65 66 61 75 6c    /// The defaul
c9e0: 74 20 64 61 74 61 62 61 73 65 20 74 79 70 65 20  t database type 
c9f0: 6e 61 6d 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20  name to use...  
ca00: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
ca10: 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74  ..    private st
ca20: 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 44  atic string GetD
ca30: 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 28 0d  efaultTypeName(.
ca40: 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43  .        SQLiteC
ca50: 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65 63  onnection connec
ca60: 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 29 0d  tion..        ).
ca70: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
ca80: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
ca90: 46 6c 61 67 73 20 66 6c 61 67 73 20 3d 20 28 63  Flags flags = (c
caa0: 6f 6e 6e 65 63 74 69 6f 6e 20 21 3d 20 6e 75 6c  onnection != nul
cab0: 6c 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20  l) ?..          
cac0: 20 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 46 6c 61    connection.Fla
cad0: 67 73 20 3a 20 53 51 4c 69 74 65 43 6f 6e 6e 65  gs : SQLiteConne
cae0: 63 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f 6e 65 3b  ctionFlags.None;
caf0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  ....        if (
cb00: 28 66 6c 61 67 73 20 26 20 53 51 4c 69 74 65 43  (flags & SQLiteC
cb10: 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e  onnectionFlags.N
cb20: 6f 43 6f 6e 76 65 72 74 53 65 74 74 69 6e 67 73  oConvertSettings
cb30: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
cb40: 20 20 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e     == SQLiteConn
cb50: 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f 43 6f  ectionFlags.NoCo
cb60: 6e 76 65 72 74 53 65 74 74 69 6e 67 73 29 0d 0a  nvertSettings)..
cb70: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
cb80: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 46 61         return Fa
cb90: 6c 6c 62 61 63 6b 44 65 66 61 75 6c 74 54 79 70  llbackDefaultTyp
cba0: 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20  eName;..        
cbb0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 73 74 72  }....        str
cbc0: 69 6e 67 20 6e 61 6d 65 20 3d 20 22 55 73 65 5f  ing name = "Use_
cbd0: 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 5f 44 65  SQLiteConvert_De
cbe0: 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 22 3b 0d  faultTypeName";.
cbf0: 0a 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20  .        object 
cc00: 76 61 6c 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20  value = null;.. 
cc10: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 40 64         string @d
cc20: 65 66 61 75 6c 74 20 3d 20 6e 75 6c 6c 3b 0d 0a  efault = null;..
cc30: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 28 63  ..        if ((c
cc40: 6f 6e 6e 65 63 74 69 6f 6e 20 3d 3d 20 6e 75 6c  onnection == nul
cc50: 6c 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20  l) ||..         
cc60: 20 20 20 21 63 6f 6e 6e 65 63 74 69 6f 6e 2e 54     !connection.T
cc70: 72 79 47 65 74 43 61 63 68 65 64 53 65 74 74 69  ryGetCachedSetti
cc80: 6e 67 28 6e 61 6d 65 2c 20 40 64 65 66 61 75 6c  ng(name, @defaul
cc90: 74 2c 20 6f 75 74 20 76 61 6c 75 65 29 29 0d 0a  t, out value))..
cca0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
ccb0: 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
ccc0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
ccd0: 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65             value
cce0: 20 3d 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d   = UnsafeNativeM
ccf0: 65 74 68 6f 64 73 2e 47 65 74 53 65 74 74 69 6e  ethods.GetSettin
cd00: 67 56 61 6c 75 65 28 6e 61 6d 65 2c 20 40 64 65  gValue(name, @de
cd10: 66 61 75 6c 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  fault);....     
cd20: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76             if (v
cd30: 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  alue == null).. 
cd40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cd50: 20 20 20 76 61 6c 75 65 20 3d 20 46 61 6c 6c 62     value = Fallb
cd60: 61 63 6b 44 65 66 61 75 6c 74 54 79 70 65 4e 61  ackDefaultTypeNa
cd70: 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me;..           
cd80: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
cd90: 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20  finally..       
cda0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
cdb0: 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 6e          if (conn
cdc0: 65 63 74 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29 0d  ection != null).
cdd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
cde0: 20 20 20 20 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e       connection.
cdf0: 53 65 74 43 61 63 68 65 64 53 65 74 74 69 6e 67  SetCachedSetting
ce00: 28 6e 61 6d 65 2c 20 76 61 6c 75 65 29 3b 0d 0a  (name, value);..
ce10: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
ce20: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
ce30: 20 20 20 20 72 65 74 75 72 6e 20 53 65 74 74 69      return Setti
ce40: 6e 67 56 61 6c 75 65 54 6f 53 74 72 69 6e 67 28  ngValueToString(
ce50: 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a  value);..    }..
ce60: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
ce70: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 57  CT_20 && TRACE_W
ce80: 41 52 4e 49 4e 47 0d 0a 20 20 20 20 2f 2f 2f 20  ARNING..    /// 
ce90: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
cea0: 2f 2f 20 49 66 20 61 70 70 6c 69 63 61 62 6c 65  // If applicable
ceb0: 2c 20 69 73 73 75 65 73 20 61 20 74 72 61 63 65  , issues a trace
cec0: 20 6c 6f 67 20 6d 65 73 73 61 67 65 20 77 61 72   log message war
ced0: 6e 69 6e 67 20 61 62 6f 75 74 20 66 61 6c 6c 69  ning about falli
cee0: 6e 67 20 62 61 63 6b 20 74 6f 0d 0a 20 20 20 20  ng back to..    
cef0: 2f 2f 2f 20 74 68 65 20 64 65 66 61 75 6c 74 20  /// the default 
cf00: 64 61 74 61 62 61 73 65 20 74 79 70 65 20 6e 61  database type na
cf10: 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  me...    /// </s
cf20: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
cf30: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 62   <param name="db
cf40: 54 79 70 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  Type">..    /// 
cf50: 54 68 65 20 64 61 74 61 62 61 73 65 20 76 61 6c  The database val
cf60: 75 65 20 74 79 70 65 2e 0d 0a 20 20 20 20 2f 2f  ue type...    //
cf70: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
cf80: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
cf90: 22 66 6c 61 67 73 22 3e 0d 0a 20 20 20 20 2f 2f  "flags">..    //
cfa0: 2f 20 54 68 65 20 66 6c 61 67 73 20 61 73 73 6f  / The flags asso
cfb0: 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20  ciated with the 
cfc0: 70 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f  parent connectio
cfd0: 6e 20 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20 2f  n object...    /
cfe0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
cff0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
d000: 3d 22 74 79 70 65 4e 61 6d 65 22 3e 0d 0a 20 20  ="typeName">..  
d010: 20 20 2f 2f 2f 20 54 68 65 20 74 65 78 74 75 61    /// The textua
d020: 6c 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 64 61  l name of the da
d030: 74 61 62 61 73 65 20 74 79 70 65 2e 0d 0a 20 20  tabase type...  
d040: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
d050: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
d060: 69 63 20 76 6f 69 64 20 44 65 66 61 75 6c 74 54  ic void DefaultT
d070: 79 70 65 4e 61 6d 65 57 61 72 6e 69 6e 67 28 0d  ypeNameWarning(.
d080: 0a 20 20 20 20 20 20 20 20 44 62 54 79 70 65 20  .        DbType 
d090: 64 62 54 79 70 65 2c 0d 0a 20 20 20 20 20 20 20  dbType,..       
d0a0: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
d0b0: 6e 46 6c 61 67 73 20 66 6c 61 67 73 2c 0d 0a 20  nFlags flags,.. 
d0c0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 74 79         string ty
d0d0: 70 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20  peName..        
d0e0: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
d0f0: 20 20 69 66 20 28 28 66 6c 61 67 73 20 26 20 53    if ((flags & S
d100: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
d110: 6c 61 67 73 2e 54 72 61 63 65 57 61 72 6e 69 6e  lags.TraceWarnin
d120: 67 29 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e  g) == SQLiteConn
d130: 65 63 74 69 6f 6e 46 6c 61 67 73 2e 54 72 61 63  ectionFlags.Trac
d140: 65 57 61 72 6e 69 6e 67 29 0d 0a 20 20 20 20 20  eWarning)..     
d150: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
d160: 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
d170: 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  e(String.Format(
d180: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d190: 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
d1a0: 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
d1b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
d1c0: 57 41 52 4e 49 4e 47 3a 20 54 79 70 65 20 6d 61  WARNING: Type ma
d1d0: 70 70 69 6e 67 20 66 61 69 6c 65 64 2c 20 72 65  pping failed, re
d1e0: 74 75 72 6e 69 6e 67 20 64 65 66 61 75 6c 74 20  turning default 
d1f0: 6e 61 6d 65 20 5c 22 7b 30 7d 5c 22 20 66 6f 72  name \"{0}\" for
d200: 20 74 79 70 65 20 7b 31 7d 2e 22 2c 0d 0a 20 20   type {1}.",..  
d210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 79                ty
d220: 70 65 4e 61 6d 65 2c 20 64 62 54 79 70 65 29 29  peName, dbType))
d230: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
d240: 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c    }....    /// <
d250: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
d260: 2f 20 49 66 20 61 70 70 6c 69 63 61 62 6c 65 2c  / If applicable,
d270: 20 69 73 73 75 65 73 20 61 20 74 72 61 63 65 20   issues a trace 
d280: 6c 6f 67 20 6d 65 73 73 61 67 65 20 77 61 72 6e  log message warn
d290: 69 6e 67 20 61 62 6f 75 74 20 66 61 6c 6c 69 6e  ing about fallin
d2a0: 67 20 62 61 63 6b 20 74 6f 0d 0a 20 20 20 20 2f  g back to..    /
d2b0: 2f 2f 20 74 68 65 20 64 65 66 61 75 6c 74 20 64  // the default d
d2c0: 61 74 61 62 61 73 65 20 76 61 6c 75 65 20 74 79  atabase value ty
d2d0: 70 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  pe...    /// </s
d2e0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
d2f0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79   <param name="ty
d300: 70 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 2f 2f  peName">..    //
d310: 2f 20 54 68 65 20 74 65 78 74 75 61 6c 20 6e 61  / The textual na
d320: 6d 65 20 6f 66 20 74 68 65 20 64 61 74 61 62 61  me of the databa
d330: 73 65 20 74 79 70 65 2e 0d 0a 20 20 20 20 2f 2f  se type...    //
d340: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
d350: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
d360: 22 66 6c 61 67 73 22 3e 0d 0a 20 20 20 20 2f 2f  "flags">..    //
d370: 2f 20 54 68 65 20 66 6c 61 67 73 20 61 73 73 6f  / The flags asso
d380: 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20  ciated with the 
d390: 70 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f  parent connectio
d3a0: 6e 20 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20 2f  n object...    /
d3b0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
d3c0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
d3d0: 3d 22 64 62 54 79 70 65 22 3e 0d 0a 20 20 20 20  ="dbType">..    
d3e0: 2f 2f 2f 20 54 68 65 20 64 61 74 61 62 61 73 65  /// The database
d3f0: 20 76 61 6c 75 65 20 74 79 70 65 2e 0d 0a 20 20   value type...  
d400: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
d410: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
d420: 69 63 20 76 6f 69 64 20 44 65 66 61 75 6c 74 44  ic void DefaultD
d430: 62 54 79 70 65 57 61 72 6e 69 6e 67 28 0d 0a 20  bTypeWarning(.. 
d440: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 74 79         string ty
d450: 70 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20  peName,..       
d460: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
d470: 6e 46 6c 61 67 73 20 66 6c 61 67 73 2c 0d 0a 20  nFlags flags,.. 
d480: 20 20 20 20 20 20 20 44 62 54 79 70 65 3f 20 64         DbType? d
d490: 62 54 79 70 65 0d 0a 20 20 20 20 20 20 20 20 29  bType..        )
d4a0: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
d4b0: 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e   if (!String.IsN
d4c0: 75 6c 6c 4f 72 45 6d 70 74 79 28 74 79 70 65 4e  ullOrEmpty(typeN
d4d0: 61 6d 65 29 20 26 26 0d 0a 20 20 20 20 20 20 20  ame) &&..       
d4e0: 20 20 20 20 20 28 28 66 6c 61 67 73 20 26 20 53       ((flags & S
d4f0: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
d500: 6c 61 67 73 2e 54 72 61 63 65 57 61 72 6e 69 6e  lags.TraceWarnin
d510: 67 29 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e  g) == SQLiteConn
d520: 65 63 74 69 6f 6e 46 6c 61 67 73 2e 54 72 61 63  ectionFlags.Trac
d530: 65 57 61 72 6e 69 6e 67 29 29 0d 0a 20 20 20 20  eWarning))..    
d540: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
d550: 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
d560: 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ne(String.Format
d570: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
d580: 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
d590: 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
d5a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d5b0: 22 57 41 52 4e 49 4e 47 3a 20 54 79 70 65 20 6d  "WARNING: Type m
d5c0: 61 70 70 69 6e 67 20 66 61 69 6c 65 64 2c 20 72  apping failed, r
d5d0: 65 74 75 72 6e 69 6e 67 20 64 65 66 61 75 6c 74  eturning default
d5e0: 20 74 79 70 65 20 7b 30 7d 20 66 6f 72 20 6e 61   type {0} for na
d5f0: 6d 65 20 5c 22 7b 31 7d 5c 22 2e 22 2c 0d 0a 20  me \"{1}\".",.. 
d600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
d610: 62 54 79 70 65 2c 20 74 79 70 65 4e 61 6d 65 29  bType, typeName)
d620: 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
d630: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
d640: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
d650: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 46 6f 72 20 61  >..    /// For a
d660: 20 67 69 76 65 6e 20 64 61 74 61 62 61 73 65 20   given database 
d670: 76 61 6c 75 65 20 74 79 70 65 2c 20 72 65 74 75  value type, retu
d680: 72 6e 20 74 68 65 20 22 63 6c 6f 73 65 73 74 2d  rn the "closest-
d690: 6d 61 74 63 68 22 20 74 65 78 74 75 61 6c 20 64  match" textual d
d6a0: 61 74 61 62 61 73 65 20 74 79 70 65 20 6e 61 6d  atabase type nam
d6b0: 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  e...    /// </su
d6c0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
d6d0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e  <param name="con
d6e0: 6e 65 63 74 69 6f 6e 22 3e 54 68 65 20 63 6f 6e  nection">The con
d6f0: 6e 65 63 74 69 6f 6e 20 63 6f 6e 74 65 78 74 20  nection context 
d700: 66 6f 72 20 63 75 73 74 6f 6d 20 74 79 70 65 20  for custom type 
d710: 6d 61 70 70 69 6e 67 73 2c 20 69 66 20 61 6e 79  mappings, if any
d720: 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  .</param>..    /
d730: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
d740: 64 62 54 79 70 65 22 3e 54 68 65 20 64 61 74 61  dbType">The data
d750: 62 61 73 65 20 76 61 6c 75 65 20 74 79 70 65 2e  base value type.
d760: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
d770: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66  / <param name="f
d780: 6c 61 67 73 22 3e 54 68 65 20 66 6c 61 67 73 20  lags">The flags 
d790: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
d7a0: 74 68 65 20 70 61 72 65 6e 74 20 63 6f 6e 6e 65  the parent conne
d7b0: 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 3c 2f 70  ction object.</p
d7c0: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
d7d0: 72 65 74 75 72 6e 73 3e 54 68 65 20 74 79 70 65  returns>The type
d7e0: 20 6e 61 6d 65 20 6f 72 20 61 6e 20 65 6d 70 74   name or an empt
d7f0: 79 20 73 74 72 69 6e 67 20 69 66 20 69 74 20 63  y string if it c
d800: 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69  annot be determi
d810: 6e 65 64 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  ned.</returns>..
d820: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
d830: 74 69 63 20 73 74 72 69 6e 67 20 44 62 54 79 70  tic string DbTyp
d840: 65 54 6f 54 79 70 65 4e 61 6d 65 28 0d 0a 20 20  eToTypeName(..  
d850: 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e        SQLiteConn
d860: 65 63 74 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f  ection connectio
d870: 6e 2c 0d 0a 20 20 20 20 20 20 20 20 44 62 54 79  n,..        DbTy
d880: 70 65 20 64 62 54 79 70 65 2c 0d 0a 20 20 20 20  pe dbType,..    
d890: 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63      SQLiteConnec
d8a0: 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 0d  tionFlags flags.
d8b0: 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20  .        )..    
d8c0: 7b 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e  {..        strin
d8d0: 67 20 64 65 66 61 75 6c 74 54 79 70 65 4e 61 6d  g defaultTypeNam
d8e0: 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  e = null;....   
d8f0: 20 20 20 20 20 69 66 20 28 63 6f 6e 6e 65 63 74       if (connect
d900: 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ion != null)..  
d910: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
d920: 20 20 20 20 20 66 6c 61 67 73 20 7c 3d 20 63 6f       flags |= co
d930: 6e 6e 65 63 74 69 6f 6e 2e 46 6c 61 67 73 3b 0d  nnection.Flags;.
d940: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
d950: 66 20 28 28 66 6c 61 67 73 20 26 20 53 51 4c 69  f ((flags & SQLi
d960: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67  teConnectionFlag
d970: 73 2e 55 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 54  s.UseConnectionT
d980: 79 70 65 73 29 20 3d 3d 20 53 51 4c 69 74 65 43  ypes) == SQLiteC
d990: 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 55  onnectionFlags.U
d9a0: 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65  seConnectionType
d9b0: 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s)..            
d9c0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
d9d0: 20 20 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d     SQLiteDbTypeM
d9e0: 61 70 20 63 6f 6e 6e 65 63 74 69 6f 6e 54 79 70  ap connectionTyp
d9f0: 65 4e 61 6d 65 73 20 3d 20 63 6f 6e 6e 65 63 74  eNames = connect
da00: 69 6f 6e 2e 5f 74 79 70 65 4e 61 6d 65 73 3b 0d  ion._typeNames;.
da10: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
da20: 20 20 20 69 66 20 28 63 6f 6e 6e 65 63 74 69 6f     if (connectio
da30: 6e 54 79 70 65 4e 61 6d 65 73 20 21 3d 20 6e 75  nTypeNames != nu
da40: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
da50: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
da60: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
da70: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 20  teDbTypeMapping 
da80: 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  value;....      
da90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
daa0: 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65   (connectionType
dab0: 4e 61 6d 65 73 2e 54 72 79 47 65 74 56 61 6c 75  Names.TryGetValu
dac0: 65 28 64 62 54 79 70 65 2c 20 6f 75 74 20 76 61  e(dbType, out va
dad0: 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  lue))..         
dae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
daf0: 65 74 75 72 6e 20 76 61 6c 75 65 2e 74 79 70 65  eturn value.type
db00: 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Name;..         
db10: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
db20: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
db30: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
db40: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
db50: 55 73 65 20 74 68 65 20 64 65 66 61 75 6c 74 20  Use the default 
db60: 64 61 74 61 62 61 73 65 20 74 79 70 65 20 6e 61  database type na
db70: 6d 65 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e 65  me for the conne
db80: 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ction...        
db90: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
dba0: 20 20 20 20 64 65 66 61 75 6c 74 54 79 70 65 4e      defaultTypeN
dbb0: 61 6d 65 20 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e  ame = connection
dbc0: 2e 44 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65  .DefaultTypeName
dbd0: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
dbe0: 20 20 20 20 20 20 20 20 69 66 20 28 28 66 6c 61          if ((fla
dbf0: 67 73 20 26 20 53 51 4c 69 74 65 43 6f 6e 6e 65  gs & SQLiteConne
dc00: 63 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f 47 6c 6f  ctionFlags.NoGlo
dc10: 62 61 6c 54 79 70 65 73 29 20 3d 3d 20 53 51 4c  balTypes) == SQL
dc20: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
dc30: 67 73 2e 4e 6f 47 6c 6f 62 61 6c 54 79 70 65 73  gs.NoGlobalTypes
dc40: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
dc50: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64 65            if (de
dc60: 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 20 21 3d  faultTypeName !=
dc70: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
dc80: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64          return d
dc90: 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 3b 0d  efaultTypeName;.
dca0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 64  ...            d
dcb0: 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 20 3d  efaultTypeName =
dcc0: 20 47 65 74 44 65 66 61 75 6c 74 54 79 70 65 4e   GetDefaultTypeN
dcd0: 61 6d 65 28 63 6f 6e 6e 65 63 74 69 6f 6e 29 3b  ame(connection);
dce0: 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d  ....#if !NET_COM
dcf0: 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
dd00: 5f 57 41 52 4e 49 4e 47 0d 0a 20 20 20 20 20 20  _WARNING..      
dd10: 20 20 20 20 20 20 44 65 66 61 75 6c 74 54 79 70        DefaultTyp
dd20: 65 4e 61 6d 65 57 61 72 6e 69 6e 67 28 64 62 54  eNameWarning(dbT
dd30: 79 70 65 2c 20 66 6c 61 67 73 2c 20 64 65 66 61  ype, flags, defa
dd40: 75 6c 74 54 79 70 65 4e 61 6d 65 29 3b 0d 0a 23  ultTypeName);..#
dd50: 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
dd60: 20 20 20 20 20 72 65 74 75 72 6e 20 64 65 66 61       return defa
dd70: 75 6c 74 54 79 70 65 4e 61 6d 65 3b 0d 0a 20 20  ultTypeName;..  
dd80: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
dd90: 20 20 20 6c 6f 63 6b 20 28 5f 73 79 6e 63 52 6f     lock (_syncRo
dda0: 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ot)..        {..
ddb0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
ddc0: 5f 74 79 70 65 4e 61 6d 65 73 20 3d 3d 20 6e 75  _typeNames == nu
ddd0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
dde0: 20 20 20 20 20 5f 74 79 70 65 4e 61 6d 65 73 20       _typeNames 
ddf0: 3d 20 47 65 74 53 51 4c 69 74 65 44 62 54 79 70  = GetSQLiteDbTyp
de00: 65 4d 61 70 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  eMap();....     
de10: 20 20 20 20 20 20 20 53 51 4c 69 74 65 44 62 54         SQLiteDbT
de20: 79 70 65 4d 61 70 70 69 6e 67 20 76 61 6c 75 65  ypeMapping value
de30: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
de40: 20 69 66 20 28 5f 74 79 70 65 4e 61 6d 65 73 2e   if (_typeNames.
de50: 54 72 79 47 65 74 56 61 6c 75 65 28 64 62 54 79  TryGetValue(dbTy
de60: 70 65 2c 20 6f 75 74 20 76 61 6c 75 65 29 29 0d  pe, out value)).
de70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
de80: 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e 74 79   return value.ty
de90: 70 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  peName;..       
dea0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66   }....        if
deb0: 20 28 64 65 66 61 75 6c 74 54 79 70 65 4e 61 6d   (defaultTypeNam
dec0: 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e != null)..    
ded0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64          return d
dee0: 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 3b 0d  efaultTypeName;.
def0: 0a 0d 0a 20 20 20 20 20 20 20 20 64 65 66 61 75  ...        defau
df00: 6c 74 54 79 70 65 4e 61 6d 65 20 3d 20 47 65 74  ltTypeName = Get
df10: 44 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 28  DefaultTypeName(
df20: 63 6f 6e 6e 65 63 74 69 6f 6e 29 3b 0d 0a 0d 0a  connection);....
df30: 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
df40: 5f 32 30 20 26 26 20 54 52 41 43 45 5f 57 41 52  _20 && TRACE_WAR
df50: 4e 49 4e 47 0d 0a 20 20 20 20 20 20 20 20 44 65  NING..        De
df60: 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 57 61 72  faultTypeNameWar
df70: 6e 69 6e 67 28 64 62 54 79 70 65 2c 20 66 6c 61  ning(dbType, fla
df80: 67 73 2c 20 64 65 66 61 75 6c 74 54 79 70 65 4e  gs, defaultTypeN
df90: 61 6d 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  ame);..#endif...
dfa0: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
dfb0: 64 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 3b  defaultTypeName;
dfc0: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
dfd0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
dfe0: 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 20 61 20    /// Convert a 
dff0: 44 62 54 79 70 65 20 74 6f 20 61 20 54 79 70 65  DbType to a Type
e000: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
e010: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
e020: 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70 22 3e  aram name="typ">
e030: 54 68 65 20 44 62 54 79 70 65 20 74 6f 20 63 6f  The DbType to co
e040: 6e 76 65 72 74 20 66 72 6f 6d 3c 2f 70 61 72 61  nvert from</para
e050: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
e060: 75 72 6e 73 3e 54 68 65 20 63 6c 6f 73 65 73 74  urns>The closest
e070: 2d 6d 61 74 63 68 20 2e 4e 45 54 20 74 79 70 65  -match .NET type
e080: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
e090: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
e0a0: 54 79 70 65 20 44 62 54 79 70 65 54 6f 54 79 70  Type DbTypeToTyp
e0b0: 65 28 44 62 54 79 70 65 20 74 79 70 29 0d 0a 20  e(DbType typ).. 
e0c0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 72 65 74 75     {..      retu
e0d0: 72 6e 20 5f 64 62 74 79 70 65 54 6f 54 79 70 65  rn _dbtypeToType
e0e0: 5b 28 69 6e 74 29 74 79 70 5d 3b 0d 0a 20 20 20  [(int)typ];..   
e0f0: 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61 74   }....    privat
e100: 65 20 73 74 61 74 69 63 20 54 79 70 65 5b 5d 20  e static Type[] 
e110: 5f 64 62 74 79 70 65 54 6f 54 79 70 65 20 3d 20  _dbtypeToType = 
e120: 7b 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28  {..      typeof(
e130: 73 74 72 69 6e 67 29 2c 20 20 20 2f 2f 20 41 6e  string),   // An
e140: 73 69 53 74 72 69 6e 67 20 28 30 29 0d 0a 20 20  siString (0)..  
e150: 20 20 20 20 74 79 70 65 6f 66 28 62 79 74 65 5b      typeof(byte[
e160: 5d 29 2c 20 20 20 2f 2f 20 42 69 6e 61 72 79 20  ]),   // Binary 
e170: 28 31 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f  (1)..      typeo
e180: 66 28 62 79 74 65 29 2c 20 20 20 20 20 2f 2f 20  f(byte),     // 
e190: 42 79 74 65 20 28 32 29 0d 0a 20 20 20 20 20 20  Byte (2)..      
e1a0: 74 79 70 65 6f 66 28 62 6f 6f 6c 29 2c 20 20 20  typeof(bool),   
e1b0: 20 20 2f 2f 20 42 6f 6f 6c 65 61 6e 20 28 33 29    // Boolean (3)
e1c0: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 64  ..      typeof(d
e1d0: 65 63 69 6d 61 6c 29 2c 20 20 2f 2f 20 43 75 72  ecimal),  // Cur
e1e0: 72 65 6e 63 79 20 28 34 29 0d 0a 20 20 20 20 20  rency (4)..     
e1f0: 20 74 79 70 65 6f 66 28 44 61 74 65 54 69 6d 65   typeof(DateTime
e200: 29 2c 20 2f 2f 20 44 61 74 65 20 28 35 29 0d 0a  ), // Date (5)..
e210: 20 20 20 20 20 20 74 79 70 65 6f 66 28 44 61 74        typeof(Dat
e220: 65 54 69 6d 65 29 2c 20 2f 2f 20 44 61 74 65 54  eTime), // DateT
e230: 69 6d 65 20 28 36 29 0d 0a 20 20 20 20 20 20 74  ime (6)..      t
e240: 79 70 65 6f 66 28 64 65 63 69 6d 61 6c 29 2c 20  ypeof(decimal), 
e250: 20 2f 2f 20 44 65 63 69 6d 61 6c 20 28 37 29 0d   // Decimal (7).
e260: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 64 6f  .      typeof(do
e270: 75 62 6c 65 29 2c 20 20 20 2f 2f 20 44 6f 75 62  uble),   // Doub
e280: 6c 65 20 28 38 29 0d 0a 20 20 20 20 20 20 74 79  le (8)..      ty
e290: 70 65 6f 66 28 47 75 69 64 29 2c 20 20 20 20 20  peof(Guid),     
e2a0: 2f 2f 20 47 75 69 64 20 28 39 29 0d 0a 20 20 20  // Guid (9)..   
e2b0: 20 20 20 74 79 70 65 6f 66 28 49 6e 74 31 36 29     typeof(Int16)
e2c0: 2c 20 20 20 20 2f 2f 20 49 6e 74 31 36 20 28 31  ,    // Int16 (1
e2d0: 30 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66  0)..      typeof
e2e0: 28 49 6e 74 33 32 29 2c 20 20 20 20 2f 2f 20 49  (Int32),    // I
e2f0: 6e 74 33 32 20 28 31 31 29 0d 0a 20 20 20 20 20  nt32 (11)..     
e300: 20 74 79 70 65 6f 66 28 49 6e 74 36 34 29 2c 20   typeof(Int64), 
e310: 20 20 20 2f 2f 20 49 6e 74 36 34 20 28 31 32 29     // Int64 (12)
e320: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 6f  ..      typeof(o
e330: 62 6a 65 63 74 29 2c 20 20 20 2f 2f 20 4f 62 6a  bject),   // Obj
e340: 65 63 74 20 28 31 33 29 0d 0a 20 20 20 20 20 20  ect (13)..      
e350: 74 79 70 65 6f 66 28 73 62 79 74 65 29 2c 20 20  typeof(sbyte),  
e360: 20 20 2f 2f 20 53 42 79 74 65 20 28 31 34 29 0d    // SByte (14).
e370: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 66 6c  .      typeof(fl
e380: 6f 61 74 29 2c 20 20 20 20 2f 2f 20 53 69 6e 67  oat),    // Sing
e390: 6c 65 20 28 31 35 29 0d 0a 20 20 20 20 20 20 74  le (15)..      t
e3a0: 79 70 65 6f 66 28 73 74 72 69 6e 67 29 2c 20 20  ypeof(string),  
e3b0: 20 2f 2f 20 53 74 72 69 6e 67 20 28 31 36 29 0d   // String (16).
e3c0: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 44 61  .      typeof(Da
e3d0: 74 65 54 69 6d 65 29 2c 20 2f 2f 20 54 69 6d 65  teTime), // Time
e3e0: 20 28 31 37 29 0d 0a 20 20 20 20 20 20 74 79 70   (17)..      typ
e3f0: 65 6f 66 28 55 49 6e 74 31 36 29 2c 20 20 20 2f  eof(UInt16),   /
e400: 2f 20 55 49 6e 74 31 36 20 28 31 38 29 0d 0a 20  / UInt16 (18).. 
e410: 20 20 20 20 20 74 79 70 65 6f 66 28 55 49 6e 74       typeof(UInt
e420: 33 32 29 2c 20 20 20 2f 2f 20 55 49 6e 74 33 32  32),   // UInt32
e430: 20 28 31 39 29 0d 0a 20 20 20 20 20 20 74 79 70   (19)..      typ
e440: 65 6f 66 28 55 49 6e 74 36 34 29 2c 20 20 20 2f  eof(UInt64),   /
e450: 2f 20 55 49 6e 74 36 34 20 28 32 30 29 0d 0a 20  / UInt64 (20).. 
e460: 20 20 20 20 20 74 79 70 65 6f 66 28 64 6f 75 62       typeof(doub
e470: 6c 65 29 2c 20 20 20 2f 2f 20 56 61 72 4e 75 6d  le),   // VarNum
e480: 65 72 69 63 20 28 32 31 29 0d 0a 20 20 20 20 20  eric (21)..     
e490: 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67 29 2c   typeof(string),
e4a0: 20 20 20 2f 2f 20 41 6e 73 69 53 74 72 69 6e 67     // AnsiString
e4b0: 46 69 78 65 64 4c 65 6e 67 74 68 20 28 32 32 29  FixedLength (22)
e4c0: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 73  ..      typeof(s
e4d0: 74 72 69 6e 67 29 2c 20 20 20 2f 2f 20 53 74 72  tring),   // Str
e4e0: 69 6e 67 46 69 78 65 64 4c 65 6e 67 74 68 20 28  ingFixedLength (
e4f0: 32 33 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f  23)..      typeo
e500: 66 28 73 74 72 69 6e 67 29 2c 20 20 20 2f 2f 20  f(string),   // 
e510: 3f 3f 20 28 32 34 29 0d 0a 20 20 20 20 20 20 74  ?? (24)..      t
e520: 79 70 65 6f 66 28 73 74 72 69 6e 67 29 2c 20 20  ypeof(string),  
e530: 20 2f 2f 20 58 6d 6c 20 28 32 35 29 0d 0a 20 20   // Xml (25)..  
e540: 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20    };....    /// 
e550: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
e560: 2f 2f 20 46 6f 72 20 61 20 67 69 76 65 6e 20 74  // For a given t
e570: 79 70 65 2c 20 72 65 74 75 72 6e 20 74 68 65 20  ype, return the 
e580: 63 6c 6f 73 65 73 74 2d 6d 61 74 63 68 20 53 51  closest-match SQ
e590: 4c 69 74 65 20 54 79 70 65 41 66 66 69 6e 69 74  Lite TypeAffinit
e5a0: 79 2c 20 77 68 69 63 68 20 6f 6e 6c 79 20 75 6e  y, which only un
e5b0: 64 65 72 73 74 61 6e 64 73 20 61 20 76 65 72 79  derstands a very
e5c0: 20 6c 69 6d 69 74 65 64 20 73 75 62 73 65 74 20   limited subset 
e5d0: 6f 66 20 74 79 70 65 73 2e 0d 0a 20 20 20 20 2f  of types...    /
e5e0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
e5f0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
e600: 6d 65 3d 22 74 79 70 22 3e 54 68 65 20 74 79 70  me="typ">The typ
e610: 65 20 74 6f 20 65 76 61 6c 75 61 74 65 3c 2f 70  e to evaluate</p
e620: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
e630: 72 65 74 75 72 6e 73 3e 54 68 65 20 53 51 4c 69  returns>The SQLi
e640: 74 65 20 74 79 70 65 20 61 66 66 69 6e 69 74 79  te type affinity
e650: 20 66 6f 72 20 74 68 61 74 20 74 79 70 65 2e 3c   for that type.<
e660: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69  /returns>..    i
e670: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 54  nternal static T
e680: 79 70 65 41 66 66 69 6e 69 74 79 20 54 79 70 65  ypeAffinity Type
e690: 54 6f 41 66 66 69 6e 69 74 79 28 54 79 70 65 20  ToAffinity(Type 
e6a0: 74 79 70 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  typ)..    {..   
e6b0: 20 20 20 54 79 70 65 43 6f 64 65 20 74 63 20 3d     TypeCode tc =
e6c0: 20 54 79 70 65 2e 47 65 74 54 79 70 65 43 6f 64   Type.GetTypeCod
e6d0: 65 28 74 79 70 29 3b 0d 0a 20 20 20 20 20 20 69  e(typ);..      i
e6e0: 66 20 28 74 63 20 3d 3d 20 54 79 70 65 43 6f 64  f (tc == TypeCod
e6f0: 65 2e 4f 62 6a 65 63 74 29 0d 0a 20 20 20 20 20  e.Object)..     
e700: 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28   {..        if (
e710: 74 79 70 20 3d 3d 20 74 79 70 65 6f 66 28 62 79  typ == typeof(by
e720: 74 65 5b 5d 29 20 7c 7c 20 74 79 70 20 3d 3d 20  te[]) || typ == 
e730: 74 79 70 65 6f 66 28 47 75 69 64 29 29 0d 0a 20  typeof(Guid)).. 
e740: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
e750: 54 79 70 65 41 66 66 69 6e 69 74 79 2e 42 6c 6f  TypeAffinity.Blo
e760: 62 3b 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 65  b;..        else
e770: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
e780: 72 6e 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e  rn TypeAffinity.
e790: 54 65 78 74 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  Text;..      }..
e7a0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 5f 74 79        return _ty
e7b0: 70 65 63 6f 64 65 41 66 66 69 6e 69 74 69 65 73  pecodeAffinities
e7c0: 5b 28 69 6e 74 29 74 63 5d 3b 0d 0a 20 20 20 20  [(int)tc];..    
e7d0: 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61 74 65  }....    private
e7e0: 20 73 74 61 74 69 63 20 54 79 70 65 41 66 66 69   static TypeAffi
e7f0: 6e 69 74 79 5b 5d 20 5f 74 79 70 65 63 6f 64 65  nity[] _typecode
e800: 41 66 66 69 6e 69 74 69 65 73 20 3d 20 7b 0d 0a  Affinities = {..
e810: 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e 69        TypeAffini
e820: 74 79 2e 4e 75 6c 6c 2c 20 20 20 20 20 2f 2f 20  ty.Null,     // 
e830: 45 6d 70 74 79 20 28 30 29 0d 0a 20 20 20 20 20  Empty (0)..     
e840: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 42 6c   TypeAffinity.Bl
e850: 6f 62 2c 20 20 20 20 20 2f 2f 20 4f 62 6a 65 63  ob,     // Objec
e860: 74 20 28 31 29 0d 0a 20 20 20 20 20 20 54 79 70  t (1)..      Typ
e870: 65 41 66 66 69 6e 69 74 79 2e 4e 75 6c 6c 2c 20  eAffinity.Null, 
e880: 20 20 20 20 2f 2f 20 44 42 4e 75 6c 6c 20 28 32      // DBNull (2
e890: 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66  )..      TypeAff
e8a0: 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20 20 20  inity.Int64,    
e8b0: 2f 2f 20 42 6f 6f 6c 65 61 6e 20 28 33 29 0d 0a  // Boolean (3)..
e8c0: 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e 69        TypeAffini
e8d0: 74 79 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20  ty.Int64,    // 
e8e0: 43 68 61 72 20 28 34 29 0d 0a 20 20 20 20 20 20  Char (4)..      
e8f0: 54 79 70 65 41 66 66 69 6e 69 74 79 2e 49 6e 74  TypeAffinity.Int
e900: 36 34 2c 20 20 20 20 2f 2f 20 53 42 79 74 65 20  64,    // SByte 
e910: 28 35 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41  (5)..      TypeA
e920: 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20  ffinity.Int64,  
e930: 20 20 2f 2f 20 42 79 74 65 20 28 36 29 0d 0a 20    // Byte (6).. 
e940: 20 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74       TypeAffinit
e950: 79 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 49  y.Int64,    // I
e960: 6e 74 31 36 20 28 37 29 0d 0a 20 20 20 20 20 20  nt16 (7)..      
e970: 54 79 70 65 41 66 66 69 6e 69 74 79 2e 49 6e 74  TypeAffinity.Int
e980: 36 34 2c 20 20 20 20 2f 2f 20 55 49 6e 74 31 36  64,    // UInt16
e990: 20 28 38 29 0d 0a 20 20 20 20 20 20 54 79 70 65   (8)..      Type
e9a0: 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20  Affinity.Int64, 
e9b0: 20 20 20 2f 2f 20 49 6e 74 33 32 20 28 39 29 0d     // Int32 (9).
e9c0: 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e  .      TypeAffin
e9d0: 69 74 79 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f  ity.Int64,    //
e9e0: 20 55 49 6e 74 33 32 20 28 31 30 29 0d 0a 20 20   UInt32 (10)..  
e9f0: 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79      TypeAffinity
ea00: 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 49 6e  .Int64,    // In
ea10: 74 36 34 20 28 31 31 29 0d 0a 20 20 20 20 20 20  t64 (11)..      
ea20: 54 79 70 65 41 66 66 69 6e 69 74 79 2e 49 6e 74  TypeAffinity.Int
ea30: 36 34 2c 20 20 20 20 2f 2f 20 55 49 6e 74 36 34  64,    // UInt64
ea40: 20 28 31 32 29 0d 0a 20 20 20 20 20 20 54 79 70   (12)..      Typ
ea50: 65 41 66 66 69 6e 69 74 79 2e 44 6f 75 62 6c 65  eAffinity.Double
ea60: 2c 20 20 20 2f 2f 20 53 69 6e 67 6c 65 20 28 31  ,   // Single (1
ea70: 33 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66  3)..      TypeAf
ea80: 66 69 6e 69 74 79 2e 44 6f 75 62 6c 65 2c 20 20  finity.Double,  
ea90: 20 2f 2f 20 44 6f 75 62 6c 65 20 28 31 34 29 0d   // Double (14).
eaa0: 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e  .      TypeAffin
eab0: 69 74 79 2e 44 6f 75 62 6c 65 2c 20 20 20 2f 2f  ity.Double,   //
eac0: 20 44 65 63 69 6d 61 6c 20 28 31 35 29 0d 0a 20   Decimal (15).. 
ead0: 20 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74       TypeAffinit
eae0: 79 2e 44 61 74 65 54 69 6d 65 2c 20 2f 2f 20 44  y.DateTime, // D
eaf0: 61 74 65 54 69 6d 65 20 28 31 36 29 0d 0a 20 20  ateTime (16)..  
eb00: 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79      TypeAffinity
eb10: 2e 4e 75 6c 6c 2c 20 20 20 20 20 2f 2f 20 3f 3f  .Null,     // ??
eb20: 20 28 31 37 29 0d 0a 20 20 20 20 20 20 54 79 70   (17)..      Typ
eb30: 65 41 66 66 69 6e 69 74 79 2e 54 65 78 74 20 20  eAffinity.Text  
eb40: 20 20 20 20 2f 2f 20 53 74 72 69 6e 67 20 28 31      // String (1
eb50: 38 29 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20  8)..    };....  
eb60: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
eb70: 0a 20 20 20 20 2f 2f 2f 20 42 75 69 6c 64 73 20  .    /// Builds 
eb80: 61 6e 64 20 72 65 74 75 72 6e 73 20 61 20 6d 61  and returns a ma
eb90: 70 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65  p containing the
eba0: 20 64 61 74 61 62 61 73 65 20 63 6f 6c 75 6d 6e   database column
ebb0: 20 74 79 70 65 73 0d 0a 20 20 20 20 2f 2f 2f 20   types..    /// 
ebc0: 72 65 63 6f 67 6e 69 7a 65 64 20 62 79 20 74 68  recognized by th
ebd0: 69 73 20 70 72 6f 76 69 64 65 72 2e 0d 0a 20 20  is provider...  
ebe0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
ebf0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
ec00: 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 20 6d  ns>..    /// A m
ec10: 61 70 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68  ap containing th
ec20: 65 20 64 61 74 61 62 61 73 65 20 63 6f 6c 75 6d  e database colum
ec30: 6e 20 74 79 70 65 73 20 72 65 63 6f 67 6e 69 7a  n types recogniz
ec40: 65 64 20 62 79 20 74 68 69 73 0d 0a 20 20 20 20  ed by this..    
ec50: 2f 2f 2f 20 70 72 6f 76 69 64 65 72 2e 0d 0a 20  /// provider... 
ec60: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
ec70: 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73  >..    private s
ec80: 74 61 74 69 63 20 53 51 4c 69 74 65 44 62 54 79  tatic SQLiteDbTy
ec90: 70 65 4d 61 70 20 47 65 74 53 51 4c 69 74 65 44  peMap GetSQLiteD
eca0: 62 54 79 70 65 4d 61 70 28 29 0d 0a 20 20 20 20  bTypeMap()..    
ecb0: 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  {..        retur
ecc0: 6e 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79  n new SQLiteDbTy
ecd0: 70 65 4d 61 70 28 6e 65 77 20 53 51 4c 69 74 65  peMap(new SQLite
ece0: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 5b 5d 20  DbTypeMapping[] 
ecf0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  {..            n
ed00: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
ed10: 61 70 70 69 6e 67 28 22 42 49 47 49 4e 54 22 2c  apping("BIGINT",
ed20: 20 44 62 54 79 70 65 2e 49 6e 74 36 34 2c 20 66   DbType.Int64, f
ed30: 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
ed40: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
ed50: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 42 49 47  TypeMapping("BIG
ed60: 55 49 4e 54 22 2c 20 44 62 54 79 70 65 2e 55 49  UINT", DbType.UI
ed70: 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  nt64, false),.. 
ed80: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
ed90: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
eda0: 6e 67 28 22 42 49 4e 41 52 59 22 2c 20 44 62 54  ng("BINARY", DbT
edb0: 79 70 65 2e 42 69 6e 61 72 79 2c 20 66 61 6c 73  ype.Binary, fals
edc0: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
edd0: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
ede0: 65 4d 61 70 70 69 6e 67 28 22 42 49 54 22 2c 20  eMapping("BIT", 
edf0: 44 62 54 79 70 65 2e 42 6f 6f 6c 65 61 6e 2c 20  DbType.Boolean, 
ee00: 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  true),..        
ee10: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
ee20: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 42 4c 4f  TypeMapping("BLO
ee30: 42 22 2c 20 44 62 54 79 70 65 2e 42 69 6e 61 72  B", DbType.Binar
ee40: 79 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20  y, true),..     
ee50: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
ee60: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
ee70: 42 4f 4f 4c 22 2c 20 44 62 54 79 70 65 2e 42 6f  BOOL", DbType.Bo
ee80: 6f 6c 65 61 6e 2c 20 66 61 6c 73 65 29 2c 0d 0a  olean, false),..
ee90: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
eea0: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
eeb0: 69 6e 67 28 22 42 4f 4f 4c 45 41 4e 22 2c 20 44  ing("BOOLEAN", D
eec0: 62 54 79 70 65 2e 42 6f 6f 6c 65 61 6e 2c 20 66  bType.Boolean, f
eed0: 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
eee0: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
eef0: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 43 48 41  TypeMapping("CHA
ef00: 52 22 2c 20 44 62 54 79 70 65 2e 41 6e 73 69 53  R", DbType.AnsiS
ef10: 74 72 69 6e 67 46 69 78 65 64 4c 65 6e 67 74 68  tringFixedLength
ef20: 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20  , true),..      
ef30: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
ef40: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 43  DbTypeMapping("C
ef50: 4c 4f 42 22 2c 20 44 62 54 79 70 65 2e 53 74 72  LOB", DbType.Str
ef60: 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20  ing, false),..  
ef70: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
ef80: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
ef90: 67 28 22 43 4f 55 4e 54 45 52 22 2c 20 44 62 54  g("COUNTER", DbT
efa0: 79 70 65 2e 49 6e 74 36 34 2c 20 66 61 6c 73 65  ype.Int64, false
efb0: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
efc0: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
efd0: 4d 61 70 70 69 6e 67 28 22 43 55 52 52 45 4e 43  Mapping("CURRENC
efe0: 59 22 2c 20 44 62 54 79 70 65 2e 44 65 63 69 6d  Y", DbType.Decim
eff0: 61 6c 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  al, false),..   
f000: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
f010: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
f020: 28 22 44 41 54 45 22 2c 20 44 62 54 79 70 65 2e  ("DATE", DbType.
f030: 44 61 74 65 54 69 6d 65 2c 20 66 61 6c 73 65 29  DateTime, false)
f040: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
f050: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
f060: 61 70 70 69 6e 67 28 22 44 41 54 45 54 49 4d 45  apping("DATETIME
f070: 22 2c 20 44 62 54 79 70 65 2e 44 61 74 65 54 69  ", DbType.DateTi
f080: 6d 65 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20  me, true),..    
f090: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
f0a0: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
f0b0: 22 44 45 43 49 4d 41 4c 22 2c 20 44 62 54 79 70  "DECIMAL", DbTyp
f0c0: 65 2e 44 65 63 69 6d 61 6c 2c 20 74 72 75 65 29  e.Decimal, true)
f0d0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
f0e0: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
f0f0: 61 70 70 69 6e 67 28 22 44 4f 55 42 4c 45 22 2c  apping("DOUBLE",
f100: 20 44 62 54 79 70 65 2e 44 6f 75 62 6c 65 2c 20   DbType.Double, 
f110: 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
f120: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
f130: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 46 4c  bTypeMapping("FL
f140: 4f 41 54 22 2c 20 44 62 54 79 70 65 2e 44 6f 75  OAT", DbType.Dou
f150: 62 6c 65 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20  ble, false),..  
f160: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
f170: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
f180: 67 28 22 47 45 4e 45 52 41 4c 22 2c 20 44 62 54  g("GENERAL", DbT
f190: 79 70 65 2e 42 69 6e 61 72 79 2c 20 66 61 6c 73  ype.Binary, fals
f1a0: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
f1b0: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
f1c0: 65 4d 61 70 70 69 6e 67 28 22 47 55 49 44 22 2c  eMapping("GUID",
f1d0: 20 44 62 54 79 70 65 2e 47 75 69 64 2c 20 66 61   DbType.Guid, fa
f1e0: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
f1f0: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
f200: 79 70 65 4d 61 70 70 69 6e 67 28 22 49 44 45 4e  ypeMapping("IDEN
f210: 54 49 54 59 22 2c 20 44 62 54 79 70 65 2e 49 6e  TITY", DbType.In
f220: 74 36 34 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20  t64, false),..  
f230: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
f240: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
f250: 67 28 22 49 4d 41 47 45 22 2c 20 44 62 54 79 70  g("IMAGE", DbTyp
f260: 65 2e 42 69 6e 61 72 79 2c 20 66 61 6c 73 65 29  e.Binary, false)
f270: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
f280: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
f290: 61 70 70 69 6e 67 28 22 49 4e 54 22 2c 20 44 62  apping("INT", Db
f2a0: 54 79 70 65 2e 49 6e 74 33 32 2c 20 74 72 75 65  Type.Int32, true
f2b0: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
f2c0: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
f2d0: 4d 61 70 70 69 6e 67 28 22 49 4e 54 38 22 2c 20  Mapping("INT8", 
f2e0: 44 62 54 79 70 65 2e 53 42 79 74 65 2c 20 66 61  DbType.SByte, fa
f2f0: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
f300: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
f310: 79 70 65 4d 61 70 70 69 6e 67 28 22 49 4e 54 31  ypeMapping("INT1
f320: 36 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 31 36  6", DbType.Int16
f330: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
f340: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
f350: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
f360: 49 4e 54 33 32 22 2c 20 44 62 54 79 70 65 2e 49  INT32", DbType.I
f370: 6e 74 33 32 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  nt32, false),.. 
f380: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
f390: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
f3a0: 6e 67 28 22 49 4e 54 36 34 22 2c 20 44 62 54 79  ng("INT64", DbTy
f3b0: 70 65 2e 49 6e 74 36 34 2c 20 66 61 6c 73 65 29  pe.Int64, false)
f3c0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
f3d0: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
f3e0: 61 70 70 69 6e 67 28 22 49 4e 54 45 47 45 52 22  apping("INTEGER"
f3f0: 2c 20 44 62 54 79 70 65 2e 49 6e 74 36 34 2c 20  , DbType.Int64, 
f400: 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  true),..        
f410: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
f420: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 49 4e 54  TypeMapping("INT
f430: 45 47 45 52 38 22 2c 20 44 62 54 79 70 65 2e 53  EGER8", DbType.S
f440: 42 79 74 65 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  Byte, false),.. 
f450: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
f460: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
f470: 6e 67 28 22 49 4e 54 45 47 45 52 31 36 22 2c 20  ng("INTEGER16", 
f480: 44 62 54 79 70 65 2e 49 6e 74 31 36 2c 20 66 61  DbType.Int16, fa
f490: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
f4a0: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
f4b0: 79 70 65 4d 61 70 70 69 6e 67 28 22 49 4e 54 45  ypeMapping("INTE
f4c0: 47 45 52 33 32 22 2c 20 44 62 54 79 70 65 2e 49  GER32", DbType.I
f4d0: 6e 74 33 32 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  nt32, false),.. 
f4e0: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
f4f0: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
f500: 6e 67 28 22 49 4e 54 45 47 45 52 36 34 22 2c 20  ng("INTEGER64", 
f510: 44 62 54 79 70 65 2e 49 6e 74 36 34 2c 20 66 61  DbType.Int64, fa
f520: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
f530: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
f540: 79 70 65 4d 61 70 70 69 6e 67 28 22 4c 4f 47 49  ypeMapping("LOGI
f550: 43 41 4c 22 2c 20 44 62 54 79 70 65 2e 42 6f 6f  CAL", DbType.Boo
f560: 6c 65 61 6e 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  lean, false),.. 
f570: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
f580: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
f590: 6e 67 28 22 4c 4f 4e 47 22 2c 20 44 62 54 79 70  ng("LONG", DbTyp
f5a0: 65 2e 49 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c  e.Int64, false),
f5b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
f5c0: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
f5d0: 70 70 69 6e 67 28 22 4c 4f 4e 47 43 48 41 52 22  pping("LONGCHAR"
f5e0: 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 2c  , DbType.String,
f5f0: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
f600: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
f610: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4c  DbTypeMapping("L
f620: 4f 4e 47 54 45 58 54 22 2c 20 44 62 54 79 70 65  ONGTEXT", DbType
f630: 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c  .String, false),
f640: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
f650: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
f660: 70 70 69 6e 67 28 22 4c 4f 4e 47 56 41 52 43 48  pping("LONGVARCH
f670: 41 52 22 2c 20 44 62 54 79 70 65 2e 53 74 72 69  AR", DbType.Stri
f680: 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  ng, false),..   
f690: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
f6a0: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
f6b0: 28 22 4d 45 4d 4f 22 2c 20 44 62 54 79 70 65 2e  ("MEMO", DbType.
f6c0: 53 74 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d  String, false),.
f6d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
f6e0: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
f6f0: 70 69 6e 67 28 22 4d 4f 4e 45 59 22 2c 20 44 62  ping("MONEY", Db
f700: 54 79 70 65 2e 44 65 63 69 6d 61 6c 2c 20 66 61  Type.Decimal, fa
f710: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
f720: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
f730: 79 70 65 4d 61 70 70 69 6e 67 28 22 4e 43 48 41  ypeMapping("NCHA
f740: 52 22 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e  R", DbType.Strin
f750: 67 46 69 78 65 64 4c 65 6e 67 74 68 2c 20 74 72  gFixedLength, tr
f760: 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ue),..          
f770: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
f780: 70 65 4d 61 70 70 69 6e 67 28 22 4e 4f 54 45 22  peMapping("NOTE"
f790: 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 2c  , DbType.String,
f7a0: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
f7b0: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
f7c0: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4e  DbTypeMapping("N
f7d0: 54 45 58 54 22 2c 20 44 62 54 79 70 65 2e 53 74  TEXT", DbType.St
f7e0: 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  ring, false),.. 
f7f0: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
f800: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
f810: 6e 67 28 22 4e 55 4d 42 45 52 22 2c 20 44 62 54  ng("NUMBER", DbT
f820: 79 70 65 2e 44 65 63 69 6d 61 6c 2c 20 66 61 6c  ype.Decimal, fal
f830: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
f840: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
f850: 70 65 4d 61 70 70 69 6e 67 28 22 4e 55 4d 45 52  peMapping("NUMER
f860: 49 43 22 2c 20 44 62 54 79 70 65 2e 44 65 63 69  IC", DbType.Deci
f870: 6d 61 6c 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20  mal, false),..  
f880: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
f890: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
f8a0: 67 28 22 4e 56 41 52 43 48 41 52 22 2c 20 44 62  g("NVARCHAR", Db
f8b0: 54 79 70 65 2e 53 74 72 69 6e 67 2c 20 74 72 75  Type.String, tru
f8c0: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
f8d0: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
f8e0: 65 4d 61 70 70 69 6e 67 28 22 4f 4c 45 4f 42 4a  eMapping("OLEOBJ
f8f0: 45 43 54 22 2c 20 44 62 54 79 70 65 2e 42 69 6e  ECT", DbType.Bin
f900: 61 72 79 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20  ary, false),..  
f910: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
f920: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
f930: 67 28 22 52 41 57 22 2c 20 44 62 54 79 70 65 2e  g("RAW", DbType.
f940: 42 69 6e 61 72 79 2c 20 66 61 6c 73 65 29 2c 0d  Binary, false),.
f950: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
f960: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
f970: 70 69 6e 67 28 22 52 45 41 4c 22 2c 20 44 62 54  ping("REAL", DbT
f980: 79 70 65 2e 44 6f 75 62 6c 65 2c 20 74 72 75 65  ype.Double, true
f990: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
f9a0: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
f9b0: 4d 61 70 70 69 6e 67 28 22 53 49 4e 47 4c 45 22  Mapping("SINGLE"
f9c0: 2c 20 44 62 54 79 70 65 2e 53 69 6e 67 6c 65 2c  , DbType.Single,
f9d0: 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20   true),..       
f9e0: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
f9f0: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 53 4d  bTypeMapping("SM
fa00: 41 4c 4c 44 41 54 45 22 2c 20 44 62 54 79 70 65  ALLDATE", DbType
fa10: 2e 44 61 74 65 54 69 6d 65 2c 20 66 61 6c 73 65  .DateTime, false
fa20: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
fa30: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
fa40: 4d 61 70 70 69 6e 67 28 22 53 4d 41 4c 4c 49 4e  Mapping("SMALLIN
fa50: 54 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 31 36  T", DbType.Int16
fa60: 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20  , true),..      
fa70: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
fa80: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 53  DbTypeMapping("S
fa90: 4d 41 4c 4c 55 49 4e 54 22 2c 20 44 62 54 79 70  MALLUINT", DbTyp
faa0: 65 2e 55 49 6e 74 31 36 2c 20 74 72 75 65 29 2c  e.UInt16, true),
fab0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
fac0: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
fad0: 70 70 69 6e 67 28 22 53 54 52 49 4e 47 22 2c 20  pping("STRING", 
fae0: 44 62 54 79 70 65 2e 53 74 72 69 6e 67 2c 20 66  DbType.String, f
faf0: 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
fb00: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
fb10: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 54 45 58  TypeMapping("TEX
fb20: 54 22 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e  T", DbType.Strin
fb30: 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  g, false),..    
fb40: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
fb50: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
fb60: 22 54 49 4d 45 22 2c 20 44 62 54 79 70 65 2e 44  "TIME", DbType.D
fb70: 61 74 65 54 69 6d 65 2c 20 66 61 6c 73 65 29 2c  ateTime, false),
fb80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
fb90: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
fba0: 70 70 69 6e 67 28 22 54 49 4d 45 53 54 41 4d 50  pping("TIMESTAMP
fbb0: 22 2c 20 44 62 54 79 70 65 2e 44 61 74 65 54 69  ", DbType.DateTi
fbc0: 6d 65 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  me, false),..   
fbd0: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
fbe0: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
fbf0: 28 22 54 49 4e 59 49 4e 54 22 2c 20 44 62 54 79  ("TINYINT", DbTy
fc00: 70 65 2e 42 79 74 65 2c 20 74 72 75 65 29 2c 0d  pe.Byte, true),.
fc10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
fc20: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
fc30: 70 69 6e 67 28 22 54 49 4e 59 53 49 4e 54 22 2c  ping("TINYSINT",
fc40: 20 44 62 54 79 70 65 2e 53 42 79 74 65 2c 20 74   DbType.SByte, t
fc50: 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  rue),..         
fc60: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
fc70: 79 70 65 4d 61 70 70 69 6e 67 28 22 55 49 4e 54  ypeMapping("UINT
fc80: 22 2c 20 44 62 54 79 70 65 2e 55 49 6e 74 33 32  ", DbType.UInt32
fc90: 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20  , true),..      
fca0: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
fcb0: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 55  DbTypeMapping("U
fcc0: 49 4e 54 38 22 2c 20 44 62 54 79 70 65 2e 42 79  INT8", DbType.By
fcd0: 74 65 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  te, false),..   
fce0: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
fcf0: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
fd00: 28 22 55 49 4e 54 31 36 22 2c 20 44 62 54 79 70  ("UINT16", DbTyp
fd10: 65 2e 55 49 6e 74 31 36 2c 20 66 61 6c 73 65 29  e.UInt16, false)
fd20: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
fd30: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
fd40: 61 70 70 69 6e 67 28 22 55 49 4e 54 33 32 22 2c  apping("UINT32",
fd50: 20 44 62 54 79 70 65 2e 55 49 6e 74 33 32 2c 20   DbType.UInt32, 
fd60: 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
fd70: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
fd80: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 55 49  bTypeMapping("UI
fd90: 4e 54 36 34 22 2c 20 44 62 54 79 70 65 2e 55 49  NT64", DbType.UI
fda0: 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  nt64, false),.. 
fdb0: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
fdc0: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
fdd0: 6e 67 28 22 55 4c 4f 4e 47 22 2c 20 44 62 54 79  ng("ULONG", DbTy
fde0: 70 65 2e 55 49 6e 74 36 34 2c 20 66 61 6c 73 65  pe.UInt64, false
fdf0: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
fe00: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
fe10: 4d 61 70 70 69 6e 67 28 22 55 4e 49 51 55 45 49  Mapping("UNIQUEI
fe20: 44 45 4e 54 49 46 49 45 52 22 2c 20 44 62 54 79  DENTIFIER", DbTy
fe30: 70 65 2e 47 75 69 64 2c 20 74 72 75 65 29 2c 0d  pe.Guid, true),.
fe40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
fe50: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
fe60: 70 69 6e 67 28 22 55 4e 53 49 47 4e 45 44 49 4e  ping("UNSIGNEDIN
fe70: 54 45 47 45 52 22 2c 20 44 62 54 79 70 65 2e 55  TEGER", DbType.U
fe80: 49 6e 74 36 34 2c 20 74 72 75 65 29 2c 0d 0a 20  Int64, true),.. 
fe90: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
fea0: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
feb0: 6e 67 28 22 55 4e 53 49 47 4e 45 44 49 4e 54 45  ng("UNSIGNEDINTE
fec0: 47 45 52 38 22 2c 20 44 62 54 79 70 65 2e 42 79  GER8", DbType.By
fed0: 74 65 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  te, false),..   
fee0: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
fef0: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
ff00: 28 22 55 4e 53 49 47 4e 45 44 49 4e 54 45 47 45  ("UNSIGNEDINTEGE
ff10: 52 31 36 22 2c 20 44 62 54 79 70 65 2e 55 49 6e  R16", DbType.UIn
ff20: 74 31 36 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20  t16, false),..  
ff30: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
ff40: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
ff50: 67 28 22 55 4e 53 49 47 4e 45 44 49 4e 54 45 47  g("UNSIGNEDINTEG
ff60: 45 52 33 32 22 2c 20 44 62 54 79 70 65 2e 55 49  ER32", DbType.UI
ff70: 6e 74 33 32 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  nt32, false),.. 
ff80: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
ff90: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
ffa0: 6e 67 28 22 55 4e 53 49 47 4e 45 44 49 4e 54 45  ng("UNSIGNEDINTE
ffb0: 47 45 52 36 34 22 2c 20 44 62 54 79 70 65 2e 55  GER64", DbType.U
ffc0: 49 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c 0d 0a  Int64, false),..
ffd0: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
ffe0: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
fff0: 69 6e 67 28 22 56 41 52 42 49 4e 41 52 59 22 2c  ing("VARBINARY",
10000 20 44 62 54 79 70 65 2e 42 69 6e 61 72 79 2c 20   DbType.Binary, 
10010 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
10020 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
10030 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 56 41  bTypeMapping("VA
10040 52 43 48 41 52 22 2c 20 44 62 54 79 70 65 2e 41  RCHAR", DbType.A
10050 6e 73 69 53 74 72 69 6e 67 2c 20 74 72 75 65 29  nsiString, true)
10060 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
10070 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
10080 61 70 70 69 6e 67 28 22 56 41 52 43 48 41 52 32  apping("VARCHAR2
10090 22 2c 20 44 62 54 79 70 65 2e 41 6e 73 69 53 74  ", DbType.AnsiSt
100a0 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  ring, false),.. 
100b0 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
100c0 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
100d0 6e 67 28 22 59 45 53 4e 4f 22 2c 20 44 62 54 79  ng("YESNO", DbTy
100e0 70 65 2e 42 6f 6f 6c 65 61 6e 2c 20 66 61 6c 73  pe.Boolean, fals
100f0 65 29 0d 0a 20 20 20 20 20 20 20 20 7d 29 3b 0d  e)..        });.
10100 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
10110 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
10120 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20   /// Determines 
10130 69 66 20 61 20 64 61 74 61 62 61 73 65 20 74 79  if a database ty
10140 70 65 20 69 73 20 63 6f 6e 73 69 64 65 72 65 64  pe is considered
10150 20 74 6f 20 62 65 20 61 20 73 74 72 69 6e 67 2e   to be a string.
10160 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
10170 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
10180 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70 65 22  aram name="type"
10190 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 64  >..    /// The d
101a0 61 74 61 62 61 73 65 20 74 79 70 65 20 74 6f 20  atabase type to 
101b0 63 68 65 63 6b 2e 0d 0a 20 20 20 20 2f 2f 2f 20  check...    /// 
101c0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
101d0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
101e0 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
101f0 20 74 68 65 20 64 61 74 61 62 61 73 65 20 74 79   the database ty
10200 70 65 20 69 73 20 63 6f 6e 73 69 64 65 72 65 64  pe is considered
10210 20 74 6f 20 62 65 20 61 20 73 74 72 69 6e 67 2c   to be a string,
10220 20 7a 65 72 6f 0d 0a 20 20 20 20 2f 2f 2f 20 6f   zero..    /// o
10230 74 68 65 72 77 69 73 65 2e 0d 0a 20 20 20 20 2f  therwise...    /
10240 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
10250 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
10260 69 63 20 62 6f 6f 6c 20 49 73 53 74 72 69 6e 67  ic bool IsString
10270 44 62 54 79 70 65 28 0d 0a 20 20 20 20 20 20 20  DbType(..       
10280 20 44 62 54 79 70 65 20 74 79 70 65 0d 0a 20 20   DbType type..  
10290 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a        )..    {..
102a0 20 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28          switch (
102b0 74 79 70 65 29 0d 0a 20 20 20 20 20 20 20 20 7b  type)..        {
102c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
102d0 73 65 20 44 62 54 79 70 65 2e 41 6e 73 69 53 74  se DbType.AnsiSt
102e0 72 69 6e 67 3a 0d 0a 20 20 20 20 20 20 20 20 20  ring:..         
102f0 20 20 20 63 61 73 65 20 44 62 54 79 70 65 2e 53     case DbType.S
10300 74 72 69 6e 67 3a 0d 0a 20 20 20 20 20 20 20 20  tring:..        
10310 20 20 20 20 63 61 73 65 20 44 62 54 79 70 65 2e      case DbType.
10320 41 6e 73 69 53 74 72 69 6e 67 46 69 78 65 64 4c  AnsiStringFixedL
10330 65 6e 67 74 68 3a 0d 0a 20 20 20 20 20 20 20 20  ength:..        
10340 20 20 20 20 63 61 73 65 20 44 62 54 79 70 65 2e      case DbType.
10350 53 74 72 69 6e 67 46 69 78 65 64 4c 65 6e 67 74  StringFixedLengt
10360 68 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  h:..            
10370 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
10380 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65  ..            de
10390 66 61 75 6c 74 3a 0d 0a 20 20 20 20 20 20 20 20  fault:..        
103a0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
103b0 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d  alse;..        }
103c0 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
103d0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
103e0 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73    /// Determines
103f0 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65   and returns the
10400 20 72 75 6e 74 69 6d 65 20 63 6f 6e 66 69 67 75   runtime configu
10410 72 61 74 69 6f 6e 20 73 65 74 74 69 6e 67 20 73  ration setting s
10420 74 72 69 6e 67 20 74 68 61 74 0d 0a 20 20 20 20  tring that..    
10430 2f 2f 2f 20 73 68 6f 75 6c 64 20 62 65 20 75 73  /// should be us
10440 65 64 20 69 6e 20 70 6c 61 63 65 20 6f 66 20 74  ed in place of t
10450 68 65 20 73 70 65 63 69 66 69 65 64 20 6f 62 6a  he specified obj
10460 65 63 74 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  ect value...    
10470 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
10480 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
10490 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20  ame="value">..  
104a0 20 20 2f 2f 2f 20 54 68 65 20 6f 62 6a 65 63 74    /// The object
104b0 20 76 61 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72   value to conver
104c0 74 20 74 6f 20 61 20 73 74 72 69 6e 67 2e 0d 0a  t to a string...
104d0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
104e0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
104f0 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 45 69 74  ns>..    /// Eit
10500 68 65 72 20 74 68 65 20 73 74 72 69 6e 67 20 74  her the string t
10510 6f 20 75 73 65 20 69 6e 20 70 6c 61 63 65 20 6f  o use in place o
10520 66 20 74 68 65 20 6f 62 6a 65 63 74 20 76 61 6c  f the object val
10530 75 65 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20  ue -OR- null if 
10540 69 74 0d 0a 20 20 20 20 2f 2f 2f 20 63 61 6e 6e  it..    /// cann
10550 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64  ot be determined
10560 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  ...    /// </ret
10570 75 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69 76 61  urns>..    priva
10580 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
10590 20 53 65 74 74 69 6e 67 56 61 6c 75 65 54 6f 53   SettingValueToS
105a0 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20  tring(..        
105b0 6f 62 6a 65 63 74 20 76 61 6c 75 65 0d 0a 20 20  object value..  
105c0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a        )..    {..
105d0 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75          if (valu
105e0 65 20 69 73 20 73 74 72 69 6e 67 29 0d 0a 20 20  e is string)..  
105f0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
10600 20 28 73 74 72 69 6e 67 29 76 61 6c 75 65 3b 0d   (string)value;.
10610 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 76  ...        if (v
10620 61 6c 75 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  alue != null).. 
10630 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
10640 6e 20 76 61 6c 75 65 2e 54 6f 53 74 72 69 6e 67  n value.ToString
10650 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72  ();....        r
10660 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20  eturn null;..   
10670 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   }....    /// <s
10680 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
10690 20 44 65 74 65 72 6d 69 6e 65 73 20 74 68 65 20   Determines the 
106a0 64 65 66 61 75 6c 74 20 3c 73 65 65 20 63 72 65  default <see cre
106b0 66 3d 22 44 62 54 79 70 65 22 20 2f 3e 20 76 61  f="DbType" /> va
106c0 6c 75 65 20 74 6f 20 62 65 20 75 73 65 64 20 77  lue to be used w
106d0 68 65 6e 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 70  hen a..    /// p
106e0 65 72 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20 76 61  er-connection va
106f0 6c 75 65 20 69 73 20 6e 6f 74 20 61 76 61 69 6c  lue is not avail
10700 61 62 6c 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  able...    /// <
10710 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
10720 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
10730 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e 0d 0a 20 20  connection">..  
10740 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65 63    /// The connec
10750 74 69 6f 6e 20 63 6f 6e 74 65 78 74 20 66 6f 72  tion context for
10760 20 74 79 70 65 20 6d 61 70 70 69 6e 67 73 2c 20   type mappings, 
10770 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 2f 2f 2f  if any...    ///
10780 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
10790 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
107a0 20 20 2f 2f 2f 20 54 68 65 20 64 65 66 61 75 6c    /// The defaul
107b0 74 20 3c 73 65 65 20 63 72 65 66 3d 22 44 62 54  t <see cref="DbT
107c0 79 70 65 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f  ype" /> value to
107d0 20 75 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c   use...    /// <
107e0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70  /returns>..    p
107f0 72 69 76 61 74 65 20 73 74 61 74 69 63 20 44 62  rivate static Db
10800 54 79 70 65 20 47 65 74 44 65 66 61 75 6c 74 44  Type GetDefaultD
10810 62 54 79 70 65 28 0d 0a 20 20 20 20 20 20 20 20  bType(..        
10820 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
10830 20 63 6f 6e 6e 65 63 74 69 6f 6e 0d 0a 20 20 20   connection..   
10840 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20       )..    {.. 
10850 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e         SQLiteCon
10860 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61  nectionFlags fla
10870 67 73 20 3d 20 28 63 6f 6e 6e 65 63 74 69 6f 6e  gs = (connection
10880 20 21 3d 20 6e 75 6c 6c 29 20 3f 0d 0a 20 20 20   != null) ?..   
10890 20 20 20 20 20 20 20 20 20 63 6f 6e 6e 65 63 74           connect
108a0 69 6f 6e 2e 46 6c 61 67 73 20 3a 20 53 51 4c 69  ion.Flags : SQLi
108b0 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67  teConnectionFlag
108c0 73 2e 4e 6f 6e 65 3b 0d 0a 0d 0a 20 20 20 20 20  s.None;....     
108d0 20 20 20 69 66 20 28 28 66 6c 61 67 73 20 26 20     if ((flags & 
108e0 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
108f0 46 6c 61 67 73 2e 4e 6f 43 6f 6e 76 65 72 74 53  Flags.NoConvertS
10900 65 74 74 69 6e 67 73 29 0d 0a 20 20 20 20 20 20  ettings)..      
10910 20 20 20 20 20 20 20 20 20 20 3d 3d 20 53 51 4c            == SQL
10920 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
10930 67 73 2e 4e 6f 43 6f 6e 76 65 72 74 53 65 74 74  gs.NoConvertSett
10940 69 6e 67 73 29 0d 0a 20 20 20 20 20 20 20 20 7b  ings)..        {
10950 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
10960 74 75 72 6e 20 46 61 6c 6c 62 61 63 6b 44 65 66  turn FallbackDef
10970 61 75 6c 74 44 62 54 79 70 65 3b 0d 0a 20 20 20  aultDbType;..   
10980 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
10990 20 20 62 6f 6f 6c 20 66 6f 75 6e 64 20 3d 20 66    bool found = f
109a0 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 73  alse;..        s
109b0 74 72 69 6e 67 20 6e 61 6d 65 20 3d 20 22 55 73  tring name = "Us
109c0 65 5f 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 5f  e_SQLiteConvert_
109d0 44 65 66 61 75 6c 74 44 62 54 79 70 65 22 3b 0d  DefaultDbType";.
109e0 0a 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20  .        object 
109f0 76 61 6c 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20  value = null;.. 
10a00 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 40 64         string @d
10a10 65 66 61 75 6c 74 20 3d 20 6e 75 6c 6c 3b 0d 0a  efault = null;..
10a20 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 28 63  ..        if ((c
10a30 6f 6e 6e 65 63 74 69 6f 6e 20 3d 3d 20 6e 75 6c  onnection == nul
10a40 6c 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20  l) ||..         
10a50 20 20 20 21 63 6f 6e 6e 65 63 74 69 6f 6e 2e 54     !connection.T
10a60 72 79 47 65 74 43 61 63 68 65 64 53 65 74 74 69  ryGetCachedSetti
10a70 6e 67 28 6e 61 6d 65 2c 20 40 64 65 66 61 75 6c  ng(name, @defaul
10a80 74 2c 20 6f 75 74 20 76 61 6c 75 65 29 29 0d 0a  t, out value))..
10a90 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
10aa0 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 55         value = U
10ab0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
10ac0 64 73 2e 47 65 74 53 65 74 74 69 6e 67 56 61 6c  ds.GetSettingVal
10ad0 75 65 28 6e 61 6d 65 2c 20 40 64 65 66 61 75 6c  ue(name, @defaul
10ae0 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
10af0 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20     if (value == 
10b00 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
10b10 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 46         value = F
10b20 61 6c 6c 62 61 63 6b 44 65 66 61 75 6c 74 44 62  allbackDefaultDb
10b30 54 79 70 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d  Type;..        }
10b40 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a  ..        else..
10b50 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
10b60 20 20 20 20 20 20 20 66 6f 75 6e 64 20 3d 20 74         found = t
10b70 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  rue;..        }.
10b80 0a 0d 0a 20 20 20 20 20 20 20 20 74 72 79 0d 0a  ...        try..
10b90 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
10ba0 20 20 20 20 20 20 20 69 66 20 28 21 28 76 61 6c         if (!(val
10bb0 75 65 20 69 73 20 44 62 54 79 70 65 29 29 0d 0a  ue is DbType))..
10bc0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
10bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
10be0 61 6c 75 65 20 3d 20 53 51 4c 69 74 65 43 6f 6e  alue = SQLiteCon
10bf0 6e 65 63 74 69 6f 6e 2e 54 72 79 50 61 72 73 65  nection.TryParse
10c00 45 6e 75 6d 28 0d 0a 20 20 20 20 20 20 20 20 20  Enum(..         
10c10 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f             typeo
10c20 66 28 44 62 54 79 70 65 29 2c 20 53 65 74 74 69  f(DbType), Setti
10c30 6e 67 56 61 6c 75 65 54 6f 53 74 72 69 6e 67 28  ngValueToString(
10c40 76 61 6c 75 65 29 2c 20 74 72 75 65 29 3b 0d 0a  value), true);..
10c50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10c60 20 20 69 66 20 28 21 28 76 61 6c 75 65 20 69 73    if (!(value is
10c70 20 44 62 54 79 70 65 29 29 0d 0a 20 20 20 20 20   DbType))..     
10c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
10c90 61 6c 75 65 20 3d 20 46 61 6c 6c 62 61 63 6b 44  alue = FallbackD
10ca0 65 66 61 75 6c 74 44 62 54 79 70 65 3b 0d 0a 20  efaultDbType;.. 
10cb0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
10cc0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
10cd0 72 6e 20 28 44 62 54 79 70 65 29 76 61 6c 75 65  rn (DbType)value
10ce0 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
10cf0 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20        finally.. 
10d00 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
10d10 20 20 20 20 20 20 69 66 20 28 21 66 6f 75 6e 64        if (!found
10d20 20 26 26 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 20   && (connection 
10d30 21 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20  != null))..     
10d40 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 6e 65             conne
10d50 63 74 69 6f 6e 2e 53 65 74 43 61 63 68 65 64 53  ction.SetCachedS
10d60 65 74 74 69 6e 67 28 6e 61 6d 65 2c 20 76 61 6c  etting(name, val
10d70 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ue);..        }.
10d80 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
10d90 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
10da0 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20   /// Determines 
10db0 69 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  if the specified
10dc0 20 74 65 78 74 75 61 6c 20 76 61 6c 75 65 20 61   textual value a
10dd0 70 70 65 61 72 73 20 74 6f 20 62 65 20 61 0d 0a  ppears to be a..
10de0 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
10df0 66 3d 22 44 42 4e 75 6c 6c 22 20 2f 3e 20 76 61  f="DBNull" /> va
10e00 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  lue...    /// </
10e10 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
10e20 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74  / <param name="t
10e30 65 78 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  ext">..    /// T
10e40 68 65 20 74 65 78 74 75 61 6c 20 76 61 6c 75 65  he textual value
10e50 20 74 6f 20 69 6e 73 70 65 63 74 2e 0d 0a 20 20   to inspect...  
10e60 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
10e70 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
10e80 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a  >..    /// Non-z
10e90 65 72 6f 20 69 66 20 74 68 65 20 74 65 78 74 20  ero if the text 
10ea0 6c 6f 6f 6b 73 20 6c 69 6b 65 20 61 20 3c 73 65  looks like a <se
10eb0 65 20 63 72 65 66 3d 22 44 42 4e 75 6c 6c 22 20  e cref="DBNull" 
10ec0 2f 3e 20 76 61 6c 75 65 2c 0d 0a 20 20 20 20 2f  /> value,..    /
10ed0 2f 2f 20 7a 65 72 6f 20 6f 74 68 65 72 77 69 73  // zero otherwis
10ee0 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  e...    /// </re
10ef0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65  turns>..    inte
10f00 72 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c  rnal static bool
10f10 20 4c 6f 6f 6b 73 4c 69 6b 65 4e 75 6c 6c 28 0d   LooksLikeNull(.
10f20 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20  .        string 
10f30 74 65 78 74 0d 0a 20 20 20 20 20 20 20 20 29 0d  text..        ).
10f40 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
10f50 72 65 74 75 72 6e 20 28 74 65 78 74 20 3d 3d 20  return (text == 
10f60 6e 75 6c 6c 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  null);..    }...
10f70 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
10f80 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65  y>..    /// Dete
10f90 72 6d 69 6e 65 73 20 69 66 20 74 68 65 20 73 70  rmines if the sp
10fa0 65 63 69 66 69 65 64 20 74 65 78 74 75 61 6c 20  ecified textual 
10fb0 76 61 6c 75 65 20 61 70 70 65 61 72 73 20 74 6f  value appears to
10fc0 20 62 65 20 61 6e 0d 0a 20 20 20 20 2f 2f 2f 20   be an..    /// 
10fd0 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34  <see cref="Int64
10fe0 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20  " /> value...   
10ff0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
11000 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
11010 6e 61 6d 65 3d 22 74 65 78 74 22 3e 0d 0a 20 20  name="text">..  
11020 20 20 2f 2f 2f 20 54 68 65 20 74 65 78 74 75 61    /// The textua
11030 6c 20 76 61 6c 75 65 20 74 6f 20 69 6e 73 70 65  l value to inspe
11040 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70  ct...    /// </p
11050 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
11060 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f  returns>..    //
11070 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68  / Non-zero if th
11080 65 20 74 65 78 74 20 6c 6f 6f 6b 73 20 6c 69 6b  e text looks lik
11090 65 20 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22  e an <see cref="
110a0 49 6e 74 36 34 22 20 2f 3e 20 76 61 6c 75 65 2c  Int64" /> value,
110b0 0d 0a 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 20 6f  ..    /// zero o
110c0 74 68 65 72 77 69 73 65 2e 0d 0a 20 20 20 20 2f  therwise...    /
110d0 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
110e0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
110f0 69 63 20 62 6f 6f 6c 20 4c 6f 6f 6b 73 4c 69 6b  ic bool LooksLik
11100 65 49 6e 74 36 34 28 0d 0a 20 20 20 20 20 20 20  eInt64(..       
11110 20 73 74 72 69 6e 67 20 74 65 78 74 0d 0a 20 20   string text..  
11120 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a        )..    {..
11130 20 20 20 20 20 20 20 20 6c 6f 6e 67 20 6c 6f 6e          long lon
11140 67 56 61 6c 75 65 3b 0d 0a 0d 0a 23 69 66 20 21  gValue;....#if !
11150 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
11160 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
11170 20 20 20 69 66 20 28 21 6c 6f 6e 67 2e 54 72 79     if (!long.Try
11180 50 61 72 73 65 28 0d 0a 20 20 20 20 20 20 20 20  Parse(..        
11190 20 20 20 20 20 20 20 20 74 65 78 74 2c 20 4e 75          text, Nu
111a0 6d 62 65 72 53 74 79 6c 65 73 2e 49 6e 74 65 67  mberStyles.Integ
111b0 65 72 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e  er, CultureInfo.
111c0 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65  InvariantCulture
111d0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
111e0 20 20 20 6f 75 74 20 6c 6f 6e 67 56 61 6c 75 65     out longValue
111f0 29 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ))..        {.. 
11200 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
11210 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  n false;..      
11220 20 20 7d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20    }..#else..    
11230 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
11240 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
11250 6c 6f 6e 67 56 61 6c 75 65 20 3d 20 6c 6f 6e 67  longValue = long
11260 2e 50 61 72 73 65 28 0d 0a 20 20 20 20 20 20 20  .Parse(..       
11270 20 20 20 20 20 20 20 20 20 74 65 78 74 2c 20 4e           text, N
11280 75 6d 62 65 72 53 74 79 6c 65 73 2e 49 6e 74 65  umberStyles.Inte
11290 67 65 72 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f  ger, CultureInfo
112a0 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72  .InvariantCultur
112b0 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  e);..        }..
112c0 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
112d0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
112e0 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
112f0 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  se;..        }..
11300 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
11310 20 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67 2e    return String.
11320 45 71 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 20  Equals(..       
11330 20 20 20 20 20 6c 6f 6e 67 56 61 6c 75 65 2e 54       longValue.T
11340 6f 53 74 72 69 6e 67 28 43 75 6c 74 75 72 65 49  oString(CultureI
11350 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c  nfo.InvariantCul
11360 74 75 72 65 29 2c 20 74 65 78 74 2c 0d 0a 20 20  ture), text,..  
11370 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67            String
11380 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e  Comparison.Ordin
11390 61 6c 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  al);..    }.... 
113a0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
113b0 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d  ..    /// Determ
113c0 69 6e 65 73 20 69 66 20 74 68 65 20 73 70 65 63  ines if the spec
113d0 69 66 69 65 64 20 74 65 78 74 75 61 6c 20 76 61  ified textual va
113e0 6c 75 65 20 61 70 70 65 61 72 73 20 74 6f 20 62  lue appears to b
113f0 65 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65  e a..    /// <se
11400 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22 20  e cref="Double" 
11410 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f  /> value...    /
11420 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
11430 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
11440 6d 65 3d 22 74 65 78 74 22 3e 0d 0a 20 20 20 20  me="text">..    
11450 2f 2f 2f 20 54 68 65 20 74 65 78 74 75 61 6c 20  /// The textual 
11460 76 61 6c 75 65 20 74 6f 20 69 6e 73 70 65 63 74  value to inspect
11470 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
11480 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
11490 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20  turns>..    /// 
114a0 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20  Non-zero if the 
114b0 74 65 78 74 20 6c 6f 6f 6b 73 20 6c 69 6b 65 20  text looks like 
114c0 61 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75  a <see cref="Dou
114d0 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65 2c 0d 0a  ble" /> value,..
114e0 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 20 6f 74 68      /// zero oth
114f0 65 72 77 69 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f  erwise...    ///
11500 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
11510 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
11520 20 62 6f 6f 6c 20 4c 6f 6f 6b 73 4c 69 6b 65 44   bool LooksLikeD
11530 6f 75 62 6c 65 28 0d 0a 20 20 20 20 20 20 20 20  ouble(..        
11540 73 74 72 69 6e 67 20 74 65 78 74 0d 0a 20 20 20  string text..   
11550 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20       )..    {.. 
11560 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 64 6f         double do
11570 75 62 6c 65 56 61 6c 75 65 3b 0d 0a 0d 0a 23 69  ubleValue;....#i
11580 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
11590 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
115a0 20 20 20 20 20 20 69 66 20 28 21 64 6f 75 62 6c        if (!doubl
115b0 65 2e 54 72 79 50 61 72 73 65 28 0d 0a 20 20 20  e.TryParse(..   
115c0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78               tex
115d0 74 2c 20 4e 75 6d 62 65 72 53 74 79 6c 65 73 2e  t, NumberStyles.
115e0 46 6c 6f 61 74 20 7c 20 4e 75 6d 62 65 72 53 74  Float | NumberSt
115f0 79 6c 65 73 2e 41 6c 6c 6f 77 54 68 6f 75 73 61  yles.AllowThousa
11600 6e 64 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  nds,..          
11610 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
11620 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75  o.InvariantCultu
11630 72 65 2c 20 6f 75 74 20 64 6f 75 62 6c 65 56 61  re, out doubleVa
11640 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 7b  lue))..        {
11650 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
11660 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20  turn false;..   
11670 20 20 20 20 20 7d 0d 0a 23 65 6c 73 65 0d 0a 20       }..#else.. 
11680 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
11690 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
116a0 20 20 20 64 6f 75 62 6c 65 56 61 6c 75 65 20 3d     doubleValue =
116b0 20 64 6f 75 62 6c 65 2e 50 61 72 73 65 28 74 65   double.Parse(te
116c0 78 74 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e  xt, CultureInfo.
116d0 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65  InvariantCulture
116e0 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
116f0 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
11700 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
11710 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
11720 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23  e;..        }..#
11730 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
11740 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67 2e 45   return String.E
11750 71 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20  quals(..        
11760 20 20 20 20 64 6f 75 62 6c 65 56 61 6c 75 65 2e      doubleValue.
11770 54 6f 53 74 72 69 6e 67 28 43 75 6c 74 75 72 65  ToString(Culture
11780 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75  Info.InvariantCu
11790 6c 74 75 72 65 29 2c 20 74 65 78 74 2c 0d 0a 20  lture), text,.. 
117a0 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e             Strin
117b0 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69  gComparison.Ordi
117c0 6e 61 6c 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  nal);..    }....
117d0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
117e0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65 72  >..    /// Deter
117f0 6d 69 6e 65 73 20 69 66 20 74 68 65 20 73 70 65  mines if the spe
11800 63 69 66 69 65 64 20 74 65 78 74 75 61 6c 20 76  cified textual v
11810 61 6c 75 65 20 61 70 70 65 61 72 73 20 74 6f 20  alue appears to 
11820 62 65 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  be a..    /// <s
11830 65 65 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d  ee cref="DateTim
11840 65 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20  e" /> value...  
11850 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
11860 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
11870 20 6e 61 6d 65 3d 22 63 6f 6e 76 65 72 74 22 3e   name="convert">
11880 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73  ..    /// The <s
11890 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43  ee cref="SQLiteC
118a0 6f 6e 76 65 72 74 22 20 2f 3e 20 6f 62 6a 65 63  onvert" /> objec
118b0 74 20 69 6e 73 74 61 6e 63 65 20 63 6f 6e 66 69  t instance confi
118c0 67 75 72 65 64 20 77 69 74 68 0d 0a 20 20 20 20  gured with..    
118d0 2f 2f 2f 20 74 68 65 20 63 68 6f 73 65 6e 20 3c  /// the chosen <
118e0 73 65 65 20 63 72 65 66 3d 22 44 61 74 65 54 69  see cref="DateTi
118f0 6d 65 22 20 2f 3e 20 66 6f 72 6d 61 74 2e 0d 0a  me" /> format...
11900 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
11910 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
11920 20 6e 61 6d 65 3d 22 74 65 78 74 22 3e 0d 0a 20   name="text">.. 
11930 20 20 20 2f 2f 2f 20 54 68 65 20 74 65 78 74 75     /// The textu
11940 61 6c 20 76 61 6c 75 65 20 74 6f 20 69 6e 73 70  al value to insp
11950 65 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ect...    /// </
11960 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
11970 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f  <returns>..    /
11980 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74  // Non-zero if t
11990 68 65 20 74 65 78 74 20 6c 6f 6f 6b 73 20 6c 69  he text looks li
119a0 6b 65 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22  ke a <see cref="
119b0 44 61 74 65 54 69 6d 65 22 20 2f 3e 20 69 6e 20  DateTime" /> in 
119c0 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 63 6f 6e  the..    /// con
119d0 66 69 67 75 72 65 64 20 66 6f 72 6d 61 74 2c 20  figured format, 
119e0 7a 65 72 6f 20 6f 74 68 65 72 77 69 73 65 2e 0d  zero otherwise..
119f0 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72  .    /// </retur
11a00 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ns>..    interna
11a10 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 4c 6f  l static bool Lo
11a20 6f 6b 73 4c 69 6b 65 44 61 74 65 54 69 6d 65 28  oksLikeDateTime(
11a30 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
11a40 43 6f 6e 76 65 72 74 20 63 6f 6e 76 65 72 74 2c  Convert convert,
11a50 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e 67  ..        string
11a60 20 74 65 78 74 0d 0a 20 20 20 20 20 20 20 20 29   text..        )
11a70 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
11a80 20 69 66 20 28 63 6f 6e 76 65 72 74 20 3d 3d 20   if (convert == 
11a90 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
11aa0 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
11ab0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 74 72 79 0d  ....        try.
11ac0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
11ad0 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65          DateTime
11ae0 20 64 61 74 65 54 69 6d 65 56 61 6c 75 65 20 3d   dateTimeValue =
11af0 20 63 6f 6e 76 65 72 74 2e 54 6f 44 61 74 65 54   convert.ToDateT
11b00 69 6d 65 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20  ime(text);....  
11b10 20 20 20 20 20 20 20 20 20 20 69 66 20 28 53 74            if (St
11b20 72 69 6e 67 2e 45 71 75 61 6c 73 28 0d 0a 20 20  ring.Equals(..  
11b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11b40 20 20 63 6f 6e 76 65 72 74 2e 54 6f 53 74 72 69    convert.ToStri
11b50 6e 67 28 64 61 74 65 54 69 6d 65 56 61 6c 75 65  ng(dateTimeValue
11b60 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
11b70 20 20 20 20 20 20 20 20 74 65 78 74 2c 20 53 74          text, St
11b80 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f  ringComparison.O
11b90 72 64 69 6e 61 6c 29 29 0d 0a 20 20 20 20 20 20  rdinal))..      
11ba0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
11bb0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
11bc0 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
11bd0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
11be0 0a 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a  .        catch..
11bf0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
11c00 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
11c10 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 7d  hing...        }
11c20 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75  ....        retu
11c30 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 7d  rn false;..    }
11c40 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
11c50 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 46  mary>..    /// F
11c60 6f 72 20 61 20 67 69 76 65 6e 20 74 65 78 74 75  or a given textu
11c70 61 6c 20 64 61 74 61 62 61 73 65 20 74 79 70 65  al database type
11c80 20 6e 61 6d 65 2c 20 72 65 74 75 72 6e 20 74 68   name, return th
11c90 65 20 22 63 6c 6f 73 65 73 74 2d 6d 61 74 63 68  e "closest-match
11ca0 22 20 64 61 74 61 62 61 73 65 20 74 79 70 65 2e  " database type.
11cb0 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d  ..    /// This m
11cc0 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20  ethod is called 
11cd0 64 75 72 69 6e 67 20 71 75 65 72 79 20 72 65 73  during query res
11ce0 75 6c 74 20 70 72 6f 63 65 73 73 69 6e 67 3b 20  ult processing; 
11cf0 74 68 65 72 65 66 6f 72 65 2c 20 69 74 73 20 70  therefore, its p
11d00 65 72 66 6f 72 6d 61 6e 63 65 0d 0a 20 20 20 20  erformance..    
11d10 2f 2f 2f 20 69 73 20 63 72 69 74 69 63 61 6c 2e  /// is critical.
11d20 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
11d30 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
11d40 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65  aram name="conne
11d50 63 74 69 6f 6e 22 3e 54 68 65 20 63 6f 6e 6e 65  ction">The conne
11d60 63 74 69 6f 6e 20 63 6f 6e 74 65 78 74 20 66 6f  ction context fo
11d70 72 20 63 75 73 74 6f 6d 20 74 79 70 65 20 6d 61  r custom type ma
11d80 70 70 69 6e 67 73 2c 20 69 66 20 61 6e 79 2e 3c  ppings, if any.<
11d90 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
11da0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79   <param name="ty
11db0 70 65 4e 61 6d 65 22 3e 54 68 65 20 74 65 78 74  peName">The text
11dc0 75 61 6c 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  ual name of the 
11dd0 64 61 74 61 62 61 73 65 20 74 79 70 65 20 74 6f  database type to
11de0 20 6d 61 74 63 68 2e 3c 2f 70 61 72 61 6d 3e 0d   match.</param>.
11df0 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
11e00 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e 54 68 65  name="flags">The
11e10 20 66 6c 61 67 73 20 61 73 73 6f 63 69 61 74 65   flags associate
11e20 64 20 77 69 74 68 20 74 68 65 20 70 61 72 65 6e  d with the paren
11e30 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a  t connection obj
11e40 65 63 74 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  ect.</param>..  
11e50 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54    /// <returns>T
11e60 68 65 20 2e 4e 45 54 20 44 42 54 79 70 65 20 74  he .NET DBType t
11e70 68 65 20 74 65 78 74 20 65 76 61 6c 75 61 74 65  he text evaluate
11e80 73 20 74 6f 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d  s to.</returns>.
11e90 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
11ea0 61 74 69 63 20 44 62 54 79 70 65 20 54 79 70 65  atic DbType Type
11eb0 4e 61 6d 65 54 6f 44 62 54 79 70 65 28 0d 0a 20  NameToDbType(.. 
11ec0 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e         SQLiteCon
11ed0 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65 63 74 69  nection connecti
11ee0 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20 73 74 72  on,..        str
11ef0 69 6e 67 20 74 79 70 65 4e 61 6d 65 2c 0d 0a 20  ing typeName,.. 
11f00 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e         SQLiteCon
11f10 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61  nectionFlags fla
11f20 67 73 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20  gs..        ).. 
11f30 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 44 62     {..        Db
11f40 54 79 70 65 3f 20 64 65 66 61 75 6c 74 44 62 54  Type? defaultDbT
11f50 79 70 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  ype = null;.... 
11f60 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 6e 65         if (conne
11f70 63 74 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29 0d 0a  ction != null)..
11f80 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
11f90 20 20 20 20 20 20 20 66 6c 61 67 73 20 7c 3d 20         flags |= 
11fa0 63 6f 6e 6e 65 63 74 69 6f 6e 2e 46 6c 61 67 73  connection.Flags
11fb0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
11fc0 20 69 66 20 28 28 66 6c 61 67 73 20 26 20 53 51   if ((flags & SQ
11fd0 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
11fe0 61 67 73 2e 55 73 65 43 6f 6e 6e 65 63 74 69 6f  ags.UseConnectio
11ff0 6e 54 79 70 65 73 29 20 3d 3d 20 53 51 4c 69 74  nTypes) == SQLit
12000 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
12010 2e 55 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 54 79  .UseConnectionTy
12020 70 65 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20  pes)..          
12030 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
12040 20 20 20 20 20 53 51 4c 69 74 65 44 62 54 79 70       SQLiteDbTyp
12050 65 4d 61 70 20 63 6f 6e 6e 65 63 74 69 6f 6e 54  eMap connectionT
12060 79 70 65 4e 61 6d 65 73 20 3d 20 63 6f 6e 6e 65  ypeNames = conne
12070 63 74 69 6f 6e 2e 5f 74 79 70 65 4e 61 6d 65 73  ction._typeNames
12080 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
12090 20 20 20 20 20 69 66 20 28 63 6f 6e 6e 65 63 74       if (connect
120a0 69 6f 6e 54 79 70 65 4e 61 6d 65 73 20 21 3d 20  ionTypeNames != 
120b0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
120c0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
120d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
120e0 20 28 74 79 70 65 4e 61 6d 65 20 21 3d 20 6e 75   (typeName != nu
120f0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
12100 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
12110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12120 20 20 20 20 53 51 4c 69 74 65 44 62 54 79 70 65      SQLiteDbType
12130 4d 61 70 70 69 6e 67 20 76 61 6c 75 65 3b 0d 0a  Mapping value;..
12140 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12150 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f            if (co
12160 6e 6e 65 63 74 69 6f 6e 54 79 70 65 4e 61 6d 65  nnectionTypeName
12170 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28 74 79  s.TryGetValue(ty
12180 70 65 4e 61 6d 65 2c 20 6f 75 74 20 76 61 6c 75  peName, out valu
12190 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
121a0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
121b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
121c0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
121d0 72 6e 20 76 61 6c 75 65 2e 64 61 74 61 54 79 70  rn value.dataTyp
121e0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
121f0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
12200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12210 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20         else..   
12220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12230 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
12240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12250 20 20 20 20 69 6e 74 20 69 6e 64 65 78 20 3d 20      int index = 
12260 74 79 70 65 4e 61 6d 65 2e 49 6e 64 65 78 4f 66  typeName.IndexOf
12270 28 27 28 27 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ('(');....      
12280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12290 20 20 20 20 20 20 69 66 20 28 28 69 6e 64 65 78        if ((index
122a0 20 3e 20 30 29 20 26 26 0d 0a 20 20 20 20 20 20   > 0) &&..      
122b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
122c0 20 20 20 20 20 20 20 20 20 20 63 6f 6e 6e 65 63            connec
122d0 74 69 6f 6e 54 79 70 65 4e 61 6d 65 73 2e 54 72  tionTypeNames.Tr
122e0 79 47 65 74 56 61 6c 75 65 28 74 79 70 65 4e 61  yGetValue(typeNa
122f0 6d 65 2e 53 75 62 73 74 72 69 6e 67 28 30 2c 20  me.Substring(0, 
12300 69 6e 64 65 78 29 2e 54 72 69 6d 45 6e 64 28 29  index).TrimEnd()
12310 2c 20 6f 75 74 20 76 61 6c 75 65 29 29 0d 0a 20  , out value)).. 
12320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12330 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
12340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
12360 74 75 72 6e 20 76 61 6c 75 65 2e 64 61 74 61 54  turn value.dataT
12370 79 70 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ype;..          
12380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12390 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
123a0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
123b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
123c0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
123d0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
123e0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
123f0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
12400 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
12410 55 73 65 20 74 68 65 20 64 65 66 61 75 6c 74 20  Use the default 
12420 64 61 74 61 62 61 73 65 20 74 79 70 65 20 66 6f  database type fo
12430 72 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  r the connection
12440 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
12450 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 64  /..            d
12460 65 66 61 75 6c 74 44 62 54 79 70 65 20 3d 20 63  efaultDbType = c
12470 6f 6e 6e 65 63 74 69 6f 6e 2e 44 65 66 61 75 6c  onnection.Defaul
12480 74 44 62 54 79 70 65 3b 0d 0a 20 20 20 20 20 20  tDbType;..      
12490 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69    }....        i
124a0 66 20 28 28 66 6c 61 67 73 20 26 20 53 51 4c 69  f ((flags & SQLi
124b0 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67  teConnectionFlag
124c0 73 2e 4e 6f 47 6c 6f 62 61 6c 54 79 70 65 73 29  s.NoGlobalTypes)
124d0 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63   == SQLiteConnec
124e0 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f 47 6c 6f 62  tionFlags.NoGlob
124f0 61 6c 54 79 70 65 73 29 0d 0a 20 20 20 20 20 20  alTypes)..      
12500 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
12510 20 69 66 20 28 64 65 66 61 75 6c 74 44 62 54 79   if (defaultDbTy
12520 70 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  pe != null)..   
12530 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
12540 75 72 6e 20 28 44 62 54 79 70 65 29 64 65 66 61  urn (DbType)defa
12550 75 6c 74 44 62 54 79 70 65 3b 0d 0a 0d 0a 20 20  ultDbType;....  
12560 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c            defaul
12570 74 44 62 54 79 70 65 20 3d 20 47 65 74 44 65 66  tDbType = GetDef
12580 61 75 6c 74 44 62 54 79 70 65 28 63 6f 6e 6e 65  aultDbType(conne
12590 63 74 69 6f 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21  ction);....#if !
125a0 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
125b0 26 20 54 52 41 43 45 5f 57 41 52 4e 49 4e 47 0d  & TRACE_WARNING.
125c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 65 66  .            Def
125d0 61 75 6c 74 44 62 54 79 70 65 57 61 72 6e 69 6e  aultDbTypeWarnin
125e0 67 28 74 79 70 65 4e 61 6d 65 2c 20 66 6c 61 67  g(typeName, flag
125f0 73 2c 20 64 65 66 61 75 6c 74 44 62 54 79 70 65  s, defaultDbType
12600 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  );..#endif....  
12610 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
12620 20 28 44 62 54 79 70 65 29 64 65 66 61 75 6c 74   (DbType)default
12630 44 62 54 79 70 65 3b 0d 0a 20 20 20 20 20 20 20  DbType;..       
12640 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 6c 6f   }....        lo
12650 63 6b 20 28 5f 73 79 6e 63 52 6f 6f 74 29 0d 0a  ck (_syncRoot)..
12660 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
12670 20 20 20 20 20 20 20 69 66 20 28 5f 74 79 70 65         if (_type
12680 4e 61 6d 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  Names == null)..
12690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
126a0 5f 74 79 70 65 4e 61 6d 65 73 20 3d 20 47 65 74  _typeNames = Get
126b0 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 28  SQLiteDbTypeMap(
126c0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
126d0 20 20 69 66 20 28 74 79 70 65 4e 61 6d 65 20 21    if (typeName !
126e0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
126f0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
12700 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 44 62          SQLiteDb
12710 54 79 70 65 4d 61 70 70 69 6e 67 20 76 61 6c 75  TypeMapping valu
12720 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
12730 20 20 20 20 20 20 69 66 20 28 5f 74 79 70 65 4e        if (_typeN
12740 61 6d 65 73 2e 54 72 79 47 65 74 56 61 6c 75 65  ames.TryGetValue
12750 28 74 79 70 65 4e 61 6d 65 2c 20 6f 75 74 20 76  (typeName, out v
12760 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20  alue))..        
12770 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
12780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
12790 65 74 75 72 6e 20 76 61 6c 75 65 2e 64 61 74 61  eturn value.data
127a0 54 79 70 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Type;..         
127b0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
127c0 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a            else..
127d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
127e0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
127f0 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78         int index
12800 20 3d 20 74 79 70 65 4e 61 6d 65 2e 49 6e 64 65   = typeName.Inde
12810 78 4f 66 28 27 28 27 29 3b 0d 0a 0d 0a 20 20 20  xOf('(');....   
12820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12830 20 69 66 20 28 28 69 6e 64 65 78 20 3e 20 30 29   if ((index > 0)
12840 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20   &&..           
12850 20 20 20 20 20 20 20 20 20 20 20 20 20 5f 74 79               _ty
12860 70 65 4e 61 6d 65 73 2e 54 72 79 47 65 74 56 61  peNames.TryGetVa
12870 6c 75 65 28 74 79 70 65 4e 61 6d 65 2e 53 75 62  lue(typeName.Sub
12880 73 74 72 69 6e 67 28 30 2c 20 69 6e 64 65 78 29  string(0, index)
12890 2e 54 72 69 6d 45 6e 64 28 29 2c 20 6f 75 74 20  .TrimEnd(), out 
128a0 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20  value))..       
128b0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
128c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
128d0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76          return v
128e0 61 6c 75 65 2e 64 61 74 61 54 79 70 65 3b 0d 0a  alue.dataType;..
128f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12900 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
12910 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
12920 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
12930 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66   }....        if
12940 20 28 64 65 66 61 75 6c 74 44 62 54 79 70 65 20   (defaultDbType 
12950 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
12960 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 44 62        return (Db
12970 54 79 70 65 29 64 65 66 61 75 6c 74 44 62 54 79  Type)defaultDbTy
12980 70 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 64  pe;....        d
12990 65 66 61 75 6c 74 44 62 54 79 70 65 20 3d 20 47  efaultDbType = G
129a0 65 74 44 65 66 61 75 6c 74 44 62 54 79 70 65 28  etDefaultDbType(
129b0 63 6f 6e 6e 65 63 74 69 6f 6e 29 3b 0d 0a 0d 0a  connection);....
129c0 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
129d0 5f 32 30 20 26 26 20 54 52 41 43 45 5f 57 41 52  _20 && TRACE_WAR
129e0 4e 49 4e 47 0d 0a 20 20 20 20 20 20 20 20 44 65  NING..        De
129f0 66 61 75 6c 74 44 62 54 79 70 65 57 61 72 6e 69  faultDbTypeWarni
12a00 6e 67 28 74 79 70 65 4e 61 6d 65 2c 20 66 6c 61  ng(typeName, fla
12a10 67 73 2c 20 64 65 66 61 75 6c 74 44 62 54 79 70  gs, defaultDbTyp
12a20 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20  e);..#endif.... 
12a30 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 44         return (D
12a40 62 54 79 70 65 29 64 65 66 61 75 6c 74 44 62 54  bType)defaultDbT
12a50 79 70 65 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20  ype;..    }..   
12a60 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
12a70 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
12a80 63 20 6f 62 6a 65 63 74 20 5f 73 79 6e 63 52 6f  c object _syncRo
12a90 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28  ot = new object(
12aa0 29 3b 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20  );..    private 
12ab0 73 74 61 74 69 63 20 53 51 4c 69 74 65 44 62 54  static SQLiteDbT
12ac0 79 70 65 4d 61 70 20 5f 74 79 70 65 4e 61 6d 65  ypeMap _typeName
12ad0 73 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 7d 0d 0a  s = null;..  }..
12ae0 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79  ..  /// <summary
12af0 3e 0d 0a 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20  >..  /// SQLite 
12b00 68 61 73 20 76 65 72 79 20 6c 69 6d 69 74 65 64  has very limited
12b10 20 74 79 70 65 73 2c 20 61 6e 64 20 69 73 20 69   types, and is i
12b20 6e 68 65 72 65 6e 74 6c 79 20 74 65 78 74 2d 62  nherently text-b
12b30 61 73 65 64 2e 20 20 54 68 65 20 66 69 72 73 74  ased.  The first
12b40 20 35 20 74 79 70 65 73 20 62 65 6c 6f 77 20 72   5 types below r
12b50 65 70 72 65 73 65 6e 74 20 74 68 65 20 73 75 6d  epresent the sum
12b60 20 6f 66 20 61 6c 6c 20 74 79 70 65 73 20 53 51   of all types SQ
12b70 4c 69 74 65 0d 0a 20 20 2f 2f 2f 20 75 6e 64 65  Lite..  /// unde
12b80 72 73 74 61 6e 64 73 2e 20 20 54 68 65 20 44 61  rstands.  The Da
12b90 74 65 54 69 6d 65 20 65 78 74 65 6e 73 69 6f 6e  teTime extension
12ba0 20 74 6f 20 74 68 65 20 73 70 65 63 20 69 73 20   to the spec is 
12bb0 66 6f 72 20 69 6e 74 65 72 6e 61 6c 20 75 73 65  for internal use
12bc0 20 6f 6e 6c 79 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f   only...  /// </
12bd0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 70 75 62 6c  summary>..  publ
12be0 69 63 20 65 6e 75 6d 20 54 79 70 65 41 66 66 69  ic enum TypeAffi
12bf0 6e 69 74 79 0d 0a 20 20 7b 0d 0a 20 20 20 20 2f  nity..  {..    /
12c00 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
12c10 20 20 2f 2f 2f 20 4e 6f 74 20 75 73 65 64 0d 0a    /// Not used..
12c20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
12c30 79 3e 0d 0a 20 20 20 20 55 6e 69 6e 69 74 69 61  y>..    Uninitia
12c40 6c 69 7a 65 64 20 3d 20 30 2c 0d 0a 20 20 20 20  lized = 0,..    
12c50 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
12c60 20 20 20 2f 2f 2f 20 41 6c 6c 20 69 6e 74 65 67     /// All integ
12c70 65 72 73 20 69 6e 20 53 51 4c 69 74 65 20 64 65  ers in SQLite de
12c80 66 61 75 6c 74 20 74 6f 20 49 6e 74 36 34 0d 0a  fault to Int64..
12c90 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
12ca0 79 3e 0d 0a 20 20 20 20 49 6e 74 36 34 20 3d 20  y>..    Int64 = 
12cb0 31 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  1,..    /// <sum
12cc0 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41  mary>..    /// A
12cd0 6c 6c 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e  ll floating poin
12ce0 74 20 6e 75 6d 62 65 72 73 20 69 6e 20 53 51 4c  t numbers in SQL
12cf0 69 74 65 20 64 65 66 61 75 6c 74 20 74 6f 20 64  ite default to d
12d00 6f 75 62 6c 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ouble..    /// <
12d10 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 44  /summary>..    D
12d20 6f 75 62 6c 65 20 3d 20 32 2c 0d 0a 20 20 20 20  ouble = 2,..    
12d30 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
12d40 20 20 20 2f 2f 2f 20 54 68 65 20 64 65 66 61 75     /// The defau
12d50 6c 74 20 64 61 74 61 20 74 79 70 65 20 6f 66 20  lt data type of 
12d60 53 51 4c 69 74 65 20 69 73 20 74 65 78 74 0d 0a  SQLite is text..
12d70 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
12d80 79 3e 0d 0a 20 20 20 20 54 65 78 74 20 3d 20 33  y>..    Text = 3
12d90 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ,..    /// <summ
12da0 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 79  ary>..    /// Ty
12db0 70 69 63 61 6c 6c 79 20 62 6c 6f 62 20 74 79 70  pically blob typ
12dc0 65 73 20 61 72 65 20 6f 6e 6c 79 20 73 65 65 6e  es are only seen
12dd0 20 77 68 65 6e 20 72 65 74 75 72 6e 65 64 20 66   when returned f
12de0 72 6f 6d 20 61 20 66 75 6e 63 74 69 6f 6e 0d 0a  rom a function..
12df0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
12e00 79 3e 0d 0a 20 20 20 20 42 6c 6f 62 20 3d 20 34  y>..    Blob = 4
12e10 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ,..    /// <summ
12e20 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 75  ary>..    /// Nu
12e30 6c 6c 20 74 79 70 65 73 20 63 61 6e 20 62 65 20  ll types can be 
12e40 72 65 74 75 72 6e 65 64 20 66 72 6f 6d 20 66 75  returned from fu
12e50 6e 63 74 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f 2f  nctions..    ///
12e60 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
12e70 20 4e 75 6c 6c 20 3d 20 35 2c 0d 0a 20 20 20 20   Null = 5,..    
12e80 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
12e90 20 20 20 2f 2f 2f 20 55 73 65 64 20 69 6e 74 65     /// Used inte
12ea0 72 6e 61 6c 6c 79 20 62 79 20 74 68 69 73 20 70  rnally by this p
12eb0 72 6f 76 69 64 65 72 0d 0a 20 20 20 20 2f 2f 2f  rovider..    ///
12ec0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
12ed0 20 44 61 74 65 54 69 6d 65 20 3d 20 31 30 2c 0d   DateTime = 10,.
12ee0 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
12ef0 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 55 73 65 64  y>..    /// Used
12f00 20 69 6e 74 65 72 6e 61 6c 6c 79 20 62 79 20 74   internally by t
12f10 68 69 73 20 70 72 6f 76 69 64 65 72 0d 0a 20 20  his provider..  
12f20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
12f30 0d 0a 20 20 20 20 4e 6f 6e 65 20 3d 20 31 31 2c  ..    None = 11,
12f40 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c  ..  }....  /// <
12f50 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20  summary>..  /// 
12f60 54 68 65 73 65 20 61 72 65 20 74 68 65 20 65 76  These are the ev
12f70 65 6e 74 20 74 79 70 65 73 20 61 73 73 6f 63 69  ent types associ
12f80 61 74 65 64 20 77 69 74 68 20 74 68 65 0d 0a 20  ated with the.. 
12f90 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
12fa0 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
12fb0 45 76 65 6e 74 48 61 6e 64 6c 65 72 22 20 2f 3e  EventHandler" />
12fc0 0d 0a 20 20 2f 2f 2f 20 64 65 6c 65 67 61 74 65  ..  /// delegate
12fd0 20 28 61 6e 64 20 69 74 73 20 63 6f 72 72 65 73   (and its corres
12fe0 70 6f 6e 64 69 6e 67 20 65 76 65 6e 74 29 20 61  ponding event) a
12ff0 6e 64 20 74 68 65 0d 0a 20 20 2f 2f 2f 20 3c 73  nd the..  /// <s
13000 65 65 20 63 72 65 66 3d 22 43 6f 6e 6e 65 63 74  ee cref="Connect
13010 69 6f 6e 45 76 65 6e 74 41 72 67 73 22 20 2f 3e  ionEventArgs" />
13020 20 63 6c 61 73 73 2e 0d 0a 20 20 2f 2f 2f 20 3c   class...  /// <
13030 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 70 75 62  /summary>..  pub
13040 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69 74 65 43  lic enum SQLiteC
13050 6f 6e 6e 65 63 74 69 6f 6e 45 76 65 6e 74 54 79  onnectionEventTy
13060 70 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 2f  pe..  {..      /
13070 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
13080 20 20 20 20 2f 2f 2f 20 4e 6f 74 20 75 73 65 64      /// Not used
13090 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
130a0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 49  ummary>..      I
130b0 6e 76 61 6c 69 64 20 3d 20 2d 31 2c 0d 0a 0d 0a  nvalid = -1,....
130c0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
130d0 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e  ry>..      /// N
130e0 6f 74 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20  ot used...      
130f0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
13100 20 20 20 20 20 20 55 6e 6b 6e 6f 77 6e 20 3d 20        Unknown = 
13110 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  0,....      /// 
13120 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
13130 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65 63 74   /// The connect
13140 69 6f 6e 20 69 73 20 62 65 69 6e 67 20 6f 70 65  ion is being ope
13150 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ned...      /// 
13160 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
13170 20 20 4f 70 65 6e 69 6e 67 20 3d 20 31 2c 0d 0a    Opening = 1,..
13180 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
13190 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
131a0 20 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20   The connection 
131b0 73 74 72 69 6e 67 20 68 61 73 20 62 65 65 6e 20  string has been 
131c0 70 61 72 73 65 64 2e 0d 0a 20 20 20 20 20 20 2f  parsed...      /
131d0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
131e0 20 20 20 20 20 43 6f 6e 6e 65 63 74 69 6f 6e 53       ConnectionS
131f0 74 72 69 6e 67 20 3d 20 32 2c 0d 0a 0d 0a 20 20  tring = 2,....  
13200 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
13210 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
13220 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 61 73 20   connection was 
13230 6f 70 65 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f  opened...      /
13240 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
13250 20 20 20 20 20 4f 70 65 6e 65 64 20 3d 20 33 2c       Opened = 3,
13260 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
13270 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
13280 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
13290 3d 22 43 68 61 6e 67 65 44 61 74 61 62 61 73 65  ="ChangeDatabase
132a0 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 61 73 20  " /> method was 
132b0 63 61 6c 6c 65 64 20 6f 6e 20 74 68 65 0d 0a 20  called on the.. 
132c0 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 6e 65 63 74       /// connect
132d0 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ion...      /// 
132e0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
132f0 20 20 43 68 61 6e 67 65 44 61 74 61 62 61 73 65    ChangeDatabase
13300 20 3d 20 34 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f   = 4,....      /
13310 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
13320 20 20 20 20 2f 2f 2f 20 41 20 74 72 61 6e 73 61      /// A transa
13330 63 74 69 6f 6e 20 77 61 73 20 63 72 65 61 74 65  ction was create
13340 64 20 75 73 69 6e 67 20 74 68 65 20 63 6f 6e 6e  d using the conn
13350 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f  ection...      /
13360 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
13370 20 20 20 20 20 4e 65 77 54 72 61 6e 73 61 63 74       NewTransact
13380 69 6f 6e 20 3d 20 35 2c 0d 0a 0d 0a 20 20 20 20  ion = 5,....    
13390 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
133a0 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63  .      /// The c
133b0 6f 6e 6e 65 63 74 69 6f 6e 20 77 61 73 20 65 6e  onnection was en
133c0 6c 69 73 74 65 64 20 69 6e 74 6f 20 61 20 74 72  listed into a tr
133d0 61 6e 73 61 63 74 69 6f 6e 2e 0d 0a 20 20 20 20  ansaction...    
133e0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
133f0 0d 0a 20 20 20 20 20 20 45 6e 6c 69 73 74 54 72  ..      EnlistTr
13400 61 6e 73 61 63 74 69 6f 6e 20 3d 20 36 2c 0d 0a  ansaction = 6,..
13410 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
13420 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
13430 20 41 20 63 6f 6d 6d 61 6e 64 20 77 61 73 20 63   A command was c
13440 72 65 61 74 65 64 20 75 73 69 6e 67 20 74 68 65  reated using the
13450 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20   connection...  
13460 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
13470 79 3e 0d 0a 20 20 20 20 20 20 4e 65 77 43 6f 6d  y>..      NewCom
13480 6d 61 6e 64 20 3d 20 37 2c 0d 0a 0d 0a 20 20 20  mand = 7,....   
13490 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
134a0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 64 61  ..      /// A da
134b0 74 61 20 72 65 61 64 65 72 20 77 61 73 20 63 72  ta reader was cr
134c0 65 61 74 65 64 20 75 73 69 6e 67 20 74 68 65 20  eated using the 
134d0 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20  connection...   
134e0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
134f0 3e 0d 0a 20 20 20 20 20 20 4e 65 77 44 61 74 61  >..      NewData
13500 52 65 61 64 65 72 20 3d 20 38 2c 0d 0a 0d 0a 20  Reader = 8,.... 
13510 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
13520 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 6e  y>..      /// An
13530 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 61 20 3c   instance of a <
13540 73 65 65 20 63 72 65 66 3d 22 43 72 69 74 69 63  see cref="Critic
13550 61 6c 48 61 6e 64 6c 65 22 20 2f 3e 20 64 65 72  alHandle" /> der
13560 69 76 65 64 20 63 6c 61 73 73 20 68 61 73 0d 0a  ived class has..
13570 20 20 20 20 20 20 2f 2f 2f 20 62 65 65 6e 20 63        /// been c
13580 72 65 61 74 65 64 20 74 6f 20 77 72 61 70 20 61  reated to wrap a
13590 20 6e 61 74 69 76 65 20 72 65 73 6f 75 72 63 65   native resource
135a0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
135b0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e  ummary>..      N
135c0 65 77 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65  ewCriticalHandle
135d0 20 3d 20 39 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f   = 9,....      /
135e0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
135f0 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e      /// The conn
13600 65 63 74 69 6f 6e 20 69 73 20 62 65 69 6e 67 20  ection is being 
13610 63 6c 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 2f  closed...      /
13620 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
13630 20 20 20 20 20 43 6c 6f 73 69 6e 67 20 3d 20 31       Closing = 1
13640 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  0,....      /// 
13650 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
13660 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65 63 74   /// The connect
13670 69 6f 6e 20 77 61 73 20 63 6c 6f 73 65 64 2e 0d  ion was closed..
13680 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
13690 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 6c 6f  mary>..      Clo
136a0 73 65 64 20 3d 20 31 31 2c 0d 0a 0d 0a 20 20 20  sed = 11,....   
136b0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
136c0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 63 6f  ..      /// A co
136d0 6d 6d 61 6e 64 20 69 73 20 62 65 69 6e 67 20 64  mmand is being d
136e0 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20  isposed...      
136f0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
13700 20 20 20 20 20 20 44 69 73 70 6f 73 69 6e 67 43        DisposingC
13710 6f 6d 6d 61 6e 64 20 3d 20 31 32 2c 0d 0a 0d 0a  ommand = 12,....
13720 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
13730 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
13740 20 64 61 74 61 20 72 65 61 64 65 72 20 69 73 20   data reader is 
13750 62 65 69 6e 67 20 64 69 73 70 6f 73 65 64 2e 0d  being disposed..
13760 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
13770 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 69 73  mary>..      Dis
13780 70 6f 73 69 6e 67 44 61 74 61 52 65 61 64 65 72  posingDataReader
13790 20 3d 20 31 33 2c 0d 0a 0d 0a 20 20 20 20 20 20   = 13,....      
137a0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
137b0 20 20 20 20 20 2f 2f 2f 20 41 20 64 61 74 61 20       /// A data 
137c0 72 65 61 64 65 72 20 69 73 20 62 65 69 6e 67 20  reader is being 
137d0 63 6c 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 2f  closed...      /
137e0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
137f0 20 20 20 20 20 43 6c 6f 73 69 6e 67 44 61 74 61       ClosingData
13800 52 65 61 64 65 72 20 3d 20 31 34 0d 0a 20 20 7d  Reader = 14..  }
13810 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ....  /// <summa
13820 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20  ry>..  /// This 
13830 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f  implementation o
13840 66 20 53 51 4c 69 74 65 20 66 6f 72 20 41 44 4f  f SQLite for ADO
13850 2e 4e 45 54 20 63 61 6e 20 70 72 6f 63 65 73 73  .NET can process
13860 20 64 61 74 65 2f 74 69 6d 65 20 66 69 65 6c 64   date/time field
13870 73 20 69 6e 0d 0a 20 20 2f 2f 2f 20 64 61 74 61  s in..  /// data
13880 62 61 73 65 73 20 69 6e 20 6f 6e 65 20 6f 66 20  bases in one of 
13890 73 69 78 20 66 6f 72 6d 61 74 73 2e 0d 0a 20 20  six formats...  
138a0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
138b0 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d    /// <remarks>.
138c0 0a 20 20 2f 2f 2f 20 49 53 4f 38 36 30 31 20 66  .  /// ISO8601 f
138d0 6f 72 6d 61 74 20 69 73 20 6d 6f 72 65 20 63 6f  ormat is more co
138e0 6d 70 61 74 69 62 6c 65 2c 20 72 65 61 64 61 62  mpatible, readab
138f0 6c 65 2c 20 66 75 6c 6c 79 2d 70 72 6f 63 65 73  le, fully-proces
13900 73 61 62 6c 65 2c 20 62 75 74 20 6c 65 73 73 0d  sable, but less.
13910 0a 20 20 2f 2f 2f 20 61 63 63 75 72 61 74 65 20  .  /// accurate 
13920 61 73 20 69 74 20 64 6f 65 73 20 6e 6f 74 20 70  as it does not p
13930 72 6f 76 69 64 65 20 74 69 6d 65 20 64 6f 77 6e  rovide time down
13940 20 74 6f 20 66 72 61 63 74 69 6f 6e 73 20 6f 66   to fractions of
13950 20 61 20 73 65 63 6f 6e 64 2e 0d 0a 20 20 2f 2f   a second...  //
13960 2f 20 4a 75 6c 69 61 6e 44 61 79 20 69 73 20 74  / JulianDay is t
13970 68 65 20 6e 75 6d 65 72 69 63 20 66 6f 72 6d 61  he numeric forma
13980 74 20 74 68 65 20 53 51 4c 69 74 65 20 75 73 65  t the SQLite use
13990 73 20 69 6e 74 65 72 6e 61 6c 6c 79 20 61 6e 64  s internally and
139a0 20 69 73 20 61 72 67 75 61 62 6c 79 0d 0a 20 20   is arguably..  
139b0 2f 2f 2f 20 74 68 65 20 6d 6f 73 74 20 63 6f 6d  /// the most com
139c0 70 61 74 69 62 6c 65 20 77 69 74 68 20 33 72 64  patible with 3rd
139d0 20 70 61 72 74 79 20 74 6f 6f 6c 73 2e 20 20 49   party tools.  I
139e0 74 20 69 73 20 6e 6f 74 20 72 65 61 64 61 62 6c  t is not readabl
139f0 65 20 61 73 20 74 65 78 74 0d 0a 20 20 2f 2f 2f  e as text..  ///
13a00 20 77 69 74 68 6f 75 74 20 70 6f 73 74 2d 70 72   without post-pr
13a10 6f 63 65 73 73 69 6e 67 2e 20 20 54 69 63 6b 73  ocessing.  Ticks
13a20 20 6c 65 73 73 20 63 6f 6d 70 61 74 69 62 6c 65   less compatible
13a30 20 77 69 74 68 20 33 72 64 20 70 61 72 74 79 20   with 3rd party 
13a40 74 6f 6f 6c 73 20 74 68 61 74 0d 0a 20 20 2f 2f  tools that..  //
13a50 2f 20 71 75 65 72 79 20 74 68 65 20 64 61 74 61  / query the data
13a60 62 61 73 65 2c 20 61 6e 64 20 72 65 6e 64 65 72  base, and render
13a70 73 20 74 68 65 20 44 61 74 65 54 69 6d 65 20 66  s the DateTime f
13a80 69 65 6c 64 20 75 6e 72 65 61 64 61 62 6c 65 20  ield unreadable 
13a90 61 73 20 74 65 78 74 0d 0a 20 20 2f 2f 2f 20 77  as text..  /// w
13aa0 69 74 68 6f 75 74 20 70 6f 73 74 2d 70 72 6f 63  ithout post-proc
13ab0 65 73 73 69 6e 67 2e 20 20 55 6e 69 78 45 70 6f  essing.  UnixEpo
13ac0 63 68 20 69 73 20 6d 6f 72 65 20 63 6f 6d 70 61  ch is more compa
13ad0 74 69 62 6c 65 20 77 69 74 68 20 55 6e 69 78 20  tible with Unix 
13ae0 73 79 73 74 65 6d 73 2e 0d 0a 20 20 2f 2f 2f 20  systems...  /// 
13af0 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65  InvariantCulture
13b00 20 61 6c 6c 6f 77 73 20 74 68 65 20 63 6f 6e 66   allows the conf
13b10 69 67 75 72 65 64 20 66 6f 72 6d 61 74 20 66 6f  igured format fo
13b20 72 20 74 68 65 20 69 6e 76 61 72 69 61 6e 74 20  r the invariant 
13b30 63 75 6c 74 75 72 65 0d 0a 20 20 2f 2f 2f 20 66  culture..  /// f
13b40 6f 72 6d 61 74 20 74 6f 20 62 65 20 75 73 65 64  ormat to be used
13b50 20 61 6e 64 20 69 73 20 68 75 6d 61 6e 20 72 65   and is human re
13b60 61 64 61 62 6c 65 2e 20 20 43 75 72 72 65 6e 74  adable.  Current
13b70 43 75 6c 74 75 72 65 20 61 6c 6c 6f 77 73 20 74  Culture allows t
13b80 68 65 0d 0a 20 20 2f 2f 2f 20 63 6f 6e 66 69 67  he..  /// config
13b90 75 72 65 64 20 66 6f 72 6d 61 74 20 66 6f 72 20  ured format for 
13ba0 74 68 65 20 63 75 72 72 65 6e 74 20 63 75 6c 74  the current cult
13bb0 75 72 65 20 74 6f 20 62 65 20 75 73 65 64 20 61  ure to be used a
13bc0 6e 64 20 69 73 20 61 6c 73 6f 20 68 75 6d 61 6e  nd is also human
13bd0 0d 0a 20 20 2f 2f 2f 20 72 65 61 64 61 62 6c 65  ..  /// readable
13be0 2e 0d 0a 20 20 2f 2f 2f 0d 0a 20 20 2f 2f 2f 20  ...  ///..  /// 
13bf0 54 68 65 20 70 72 65 66 65 72 72 65 64 20 6f 72  The preferred or
13c00 64 65 72 20 6f 66 20 63 68 6f 6f 73 69 6e 67 20  der of choosing 
13c10 61 20 44 61 74 65 54 69 6d 65 20 66 6f 72 6d 61  a DateTime forma
13c20 74 20 69 73 20 4a 75 6c 69 61 6e 44 61 79 2c 20  t is JulianDay, 
13c30 49 53 4f 38 36 30 31 2c 0d 0a 20 20 2f 2f 2f 20  ISO8601,..  /// 
13c40 61 6e 64 20 74 68 65 6e 20 54 69 63 6b 73 2e 20  and then Ticks. 
13c50 20 54 69 63 6b 73 20 69 73 20 6d 61 69 6e 6c 79   Ticks is mainly
13c60 20 70 72 65 73 65 6e 74 20 66 6f 72 20 6c 65 67   present for leg
13c70 61 63 79 20 63 6f 64 65 20 73 75 70 70 6f 72 74  acy code support
13c80 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72  ...  /// </remar
13c90 6b 73 3e 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e  ks>..  public en
13ca0 75 6d 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72  um SQLiteDateFor
13cb0 6d 61 74 73 0d 0a 20 20 7b 0d 0a 20 20 20 20 2f  mats..  {..    /
13cc0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
13cd0 20 20 2f 2f 2f 20 55 73 65 20 74 68 65 20 76 61    /// Use the va
13ce0 6c 75 65 20 6f 66 20 44 61 74 65 54 69 6d 65 2e  lue of DateTime.
13cf0 54 69 63 6b 73 2e 20 20 54 68 69 73 20 76 61 6c  Ticks.  This val
13d00 75 65 20 69 73 20 6e 6f 74 20 72 65 63 6f 6d 6d  ue is not recomm
13d10 65 6e 64 65 64 20 61 6e 64 20 69 73 20 6e 6f 74  ended and is not
13d20 20 77 65 6c 6c 20 73 75 70 70 6f 72 74 65 64 20   well supported 
13d30 77 69 74 68 20 4c 49 4e 51 2e 0d 0a 20 20 20 20  with LINQ...    
13d40 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
13d50 20 20 20 20 54 69 63 6b 73 20 3d 20 30 2c 0d 0a      Ticks = 0,..
13d60 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
13d70 3e 0d 0a 20 20 20 20 2f 2f 2f 20 55 73 65 20 74  >..    /// Use t
13d80 68 65 20 49 53 4f 2d 38 36 30 31 20 66 6f 72 6d  he ISO-8601 form
13d90 61 74 2e 20 20 55 73 65 73 20 74 68 65 20 22 79  at.  Uses the "y
13da0 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a  yyy-MM-dd HH:mm:
13db0 73 73 2e 46 46 46 46 46 46 46 4b 22 20 66 6f 72  ss.FFFFFFFK" for
13dc0 6d 61 74 20 66 6f 72 20 55 54 43 20 44 61 74 65  mat for UTC Date
13dd0 54 69 6d 65 20 76 61 6c 75 65 73 20 61 6e 64 0d  Time values and.
13de0 0a 20 20 20 20 2f 2f 2f 20 22 79 79 79 79 2d 4d  .    /// "yyyy-M
13df0 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 2e 46 46  M-dd HH:mm:ss.FF
13e00 46 46 46 46 46 22 20 66 6f 72 6d 61 74 20 66 6f  FFFFF" format fo
13e10 72 20 6c 6f 63 61 6c 20 44 61 74 65 54 69 6d 65  r local DateTime
13e20 20 76 61 6c 75 65 73 29 2e 0d 0a 20 20 20 20 2f   values)...    /
13e30 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
13e40 20 20 20 49 53 4f 38 36 30 31 20 3d 20 31 2c 0d     ISO8601 = 1,.
13e50 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
13e60 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  y>..    /// The 
13e70 69 6e 74 65 72 76 61 6c 20 6f 66 20 74 69 6d 65  interval of time
13e80 20 69 6e 20 64 61 79 73 20 61 6e 64 20 66 72 61   in days and fra
13e90 63 74 69 6f 6e 73 20 6f 66 20 61 20 64 61 79 20  ctions of a day 
13ea0 73 69 6e 63 65 20 4a 61 6e 75 61 72 79 20 31 2c  since January 1,
13eb0 20 34 37 31 33 20 42 43 2e 0d 0a 20 20 20 20 2f   4713 BC...    /
13ec0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
13ed0 20 20 20 4a 75 6c 69 61 6e 44 61 79 20 3d 20 32     JulianDay = 2
13ee0 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ,..    /// <summ
13ef0 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
13f00 65 20 77 68 6f 6c 65 20 6e 75 6d 62 65 72 20 6f  e whole number o
13f10 66 20 73 65 63 6f 6e 64 73 20 73 69 6e 63 65 20  f seconds since 
13f20 74 68 65 20 55 6e 69 78 20 65 70 6f 63 68 20 28  the Unix epoch (
13f30 4a 61 6e 75 61 72 79 20 31 2c 20 31 39 37 30 29  January 1, 1970)
13f40 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
13f50 6d 61 72 79 3e 0d 0a 20 20 20 20 55 6e 69 78 45  mary>..    UnixE
13f60 70 6f 63 68 20 3d 20 33 2c 0d 0a 20 20 20 20 2f  poch = 3,..    /
13f70 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
13f80 20 20 2f 2f 2f 20 41 6e 79 20 63 75 6c 74 75 72    /// Any cultur
13f90 65 2d 69 6e 64 65 70 65 6e 64 65 6e 74 20 73 74  e-independent st
13fa0 72 69 6e 67 20 76 61 6c 75 65 20 74 68 61 74 20  ring value that 
13fb0 74 68 65 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f  the .NET Framewo
13fc0 72 6b 20 63 61 6e 20 69 6e 74 65 72 70 72 65 74  rk can interpret
13fd0 20 61 73 20 61 20 76 61 6c 69 64 20 44 61 74 65   as a valid Date
13fe0 54 69 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  Time...    /// <
13ff0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 49  /summary>..    I
14000 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 20  nvariantCulture 
14010 3d 20 34 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  = 4,..    /// <s
14020 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
14030 20 41 6e 79 20 73 74 72 69 6e 67 20 76 61 6c 75   Any string valu
14040 65 20 74 68 61 74 20 74 68 65 20 2e 4e 45 54 20  e that the .NET 
14050 46 72 61 6d 65 77 6f 72 6b 20 63 61 6e 20 69 6e  Framework can in
14060 74 65 72 70 72 65 74 20 61 73 20 61 20 76 61 6c  terpret as a val
14070 69 64 20 44 61 74 65 54 69 6d 65 20 75 73 69 6e  id DateTime usin
14080 67 20 74 68 65 20 63 75 72 72 65 6e 74 20 63 75  g the current cu
14090 6c 74 75 72 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  lture...    /// 
140a0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
140b0 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 20 3d  CurrentCulture =
140c0 20 35 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75   5,..    /// <su
140d0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
140e0 54 68 65 20 64 65 66 61 75 6c 74 20 66 6f 72 6d  The default form
140f0 61 74 20 66 6f 72 20 74 68 69 73 20 70 72 6f 76  at for this prov
14100 69 64 65 72 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ider...    /// <
14110 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 44  /summary>..    D
14120 65 66 61 75 6c 74 20 3d 20 49 53 4f 38 36 30 31  efault = ISO8601
14130 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c  ..  }....  /// <
14140 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20  summary>..  /// 
14150 54 68 69 73 20 65 6e 75 6d 20 64 65 74 65 72 6d  This enum determ
14160 69 6e 65 73 20 68 6f 77 20 53 51 4c 69 74 65 20  ines how SQLite 
14170 74 72 65 61 74 73 20 69 74 73 20 6a 6f 75 72 6e  treats its journ
14180 61 6c 20 66 69 6c 65 2e 0d 0a 20 20 2f 2f 2f 20  al file...  /// 
14190 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f  </summary>..  //
141a0 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 2f  / <remarks>..  /
141b0 2f 2f 20 42 79 20 64 65 66 61 75 6c 74 20 53 51  // By default SQ
141c0 4c 69 74 65 20 77 69 6c 6c 20 63 72 65 61 74 65  Lite will create
141d0 20 61 6e 64 20 64 65 6c 65 74 65 20 74 68 65 20   and delete the 
141e0 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20 77 68 65  journal file whe
141f0 6e 20 6e 65 65 64 65 64 20 64 75 72 69 6e 67 20  n needed during 
14200 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 0d 0a  a transaction...
14210 20 20 2f 2f 2f 20 48 6f 77 65 76 65 72 2c 20 66    /// However, f
14220 6f 72 20 73 6f 6d 65 20 63 6f 6d 70 75 74 65 72  or some computer
14230 73 20 72 75 6e 6e 69 6e 67 20 63 65 72 74 61 69  s running certai
14240 6e 20 66 69 6c 65 73 79 73 74 65 6d 20 6d 6f 6e  n filesystem mon
14250 69 74 6f 72 69 6e 67 20 74 6f 6f 6c 73 2c 20 74  itoring tools, t
14260 68 65 20 72 61 70 69 64 0d 0a 20 20 2f 2f 2f 20  he rapid..  /// 
14270 63 72 65 61 74 69 6f 6e 20 61 6e 64 20 64 65 6c  creation and del
14280 65 74 69 6f 6e 20 6f 66 20 74 68 65 20 6a 6f 75  etion of the jou
14290 72 6e 61 6c 20 66 69 6c 65 20 63 61 6e 20 63 61  rnal file can ca
142a0 75 73 65 20 74 68 6f 73 65 20 70 72 6f 67 72 61  use those progra
142b0 6d 73 20 74 6f 20 66 61 69 6c 2c 20 6f 72 20 74  ms to fail, or t
142c0 6f 20 69 6e 74 65 72 66 65 72 65 20 77 69 74 68  o interfere with
142d0 20 53 51 4c 69 74 65 2e 0d 0a 20 20 2f 2f 2f 0d   SQLite...  ///.
142e0 0a 20 20 2f 2f 2f 20 49 66 20 61 20 70 72 6f 67  .  /// If a prog
142f0 72 61 6d 20 6f 72 20 76 69 72 75 73 20 73 63 61  ram or virus sca
14300 6e 6e 65 72 20 69 73 20 69 6e 74 65 72 66 65 72  nner is interfer
14310 69 6e 67 20 77 69 74 68 20 53 51 4c 69 74 65 27  ing with SQLite'
14320 73 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 2c 20  s journal file, 
14330 79 6f 75 20 6d 61 79 20 72 65 63 65 69 76 65 20  you may receive 
14340 65 72 72 6f 72 73 20 6c 69 6b 65 20 22 75 6e 61  errors like "una
14350 62 6c 65 20 74 6f 20 6f 70 65 6e 20 64 61 74 61  ble to open data
14360 62 61 73 65 20 66 69 6c 65 22 0d 0a 20 20 2f 2f  base file"..  //
14370 2f 20 77 68 65 6e 20 73 74 61 72 74 69 6e 67 20  / when starting 
14380 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 20 20  a transaction.  
14390 49 66 20 74 68 69 73 20 69 73 20 68 61 70 70 65  If this is happe
143a0 6e 69 6e 67 2c 20 79 6f 75 20 6d 61 79 20 77 61  ning, you may wa
143b0 6e 74 20 74 6f 20 63 68 61 6e 67 65 20 74 68 65  nt to change the
143c0 20 64 65 66 61 75 6c 74 20 6a 6f 75 72 6e 61 6c   default journal
143d0 20 6d 6f 64 65 20 74 6f 20 50 65 72 73 69 73 74   mode to Persist
143e0 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72  ...  /// </remar
143f0 6b 73 3e 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e  ks>..  public en
14400 75 6d 20 53 51 4c 69 74 65 4a 6f 75 72 6e 61 6c  um SQLiteJournal
14410 4d 6f 64 65 45 6e 75 6d 0d 0a 20 20 7b 0d 0a 20  ModeEnum..  {.. 
14420 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
14430 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 65  ..    /// The de
14440 66 61 75 6c 74 20 6d 6f 64 65 2c 20 74 68 69 73  fault mode, this
14450 20 63 61 75 73 65 73 20 53 51 4c 69 74 65 20 74   causes SQLite t
14460 6f 20 75 73 65 20 74 68 65 20 65 78 69 73 74 69  o use the existi
14470 6e 67 20 6a 6f 75 72 6e 61 6c 69 6e 67 20 6d 6f  ng journaling mo
14480 64 65 20 66 6f 72 20 74 68 65 20 64 61 74 61 62  de for the datab
14490 61 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ase...    /// </
144a0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 44 65  summary>..    De
144b0 66 61 75 6c 74 20 3d 20 2d 31 2c 0d 0a 20 20 20  fault = -1,..   
144c0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
144d0 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 77      /// SQLite w
144e0 69 6c 6c 20 63 72 65 61 74 65 20 61 6e 64 20 64  ill create and d
144f0 65 73 74 72 6f 79 20 74 68 65 20 6a 6f 75 72 6e  estroy the journ
14500 61 6c 20 66 69 6c 65 20 61 73 2d 6e 65 65 64 65  al file as-neede
14510 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  d...    /// </su
14520 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 44 65 6c 65  mmary>..    Dele
14530 74 65 20 3d 20 30 2c 0d 0a 20 20 20 20 2f 2f 2f  te = 0,..    ///
14540 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
14550 2f 2f 2f 20 57 68 65 6e 20 74 68 69 73 20 69 73  /// When this is
14560 20 73 65 74 2c 20 53 51 4c 69 74 65 20 77 69 6c   set, SQLite wil
14570 6c 20 6b 65 65 70 20 74 68 65 20 6a 6f 75 72 6e  l keep the journ
14580 61 6c 20 66 69 6c 65 20 65 76 65 6e 20 61 66 74  al file even aft
14590 65 72 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e  er a transaction
145a0 20 68 61 73 20 63 6f 6d 70 6c 65 74 65 64 2e 20   has completed. 
145b0 20 49 74 27 73 20 63 6f 6e 74 65 6e 74 73 20 77   It's contents w
145c0 69 6c 6c 20 62 65 20 65 72 61 73 65 64 2c 0d 0a  ill be erased,..
145d0 20 20 20 20 2f 2f 2f 20 61 6e 64 20 74 68 65 20      /// and the 
145e0 6a 6f 75 72 6e 61 6c 20 72 65 2d 75 73 65 64 20  journal re-used 
145f0 61 73 20 6f 66 74 65 6e 20 61 73 20 6e 65 65 64  as often as need
14600 65 64 2e 20 20 49 66 20 69 74 20 69 73 20 64 65  ed.  If it is de
14610 6c 65 74 65 64 2c 20 69 74 20 77 69 6c 6c 20 62  leted, it will b
14620 65 20 72 65 63 72 65 61 74 65 64 20 74 68 65 20  e recreated the 
14630 6e 65 78 74 20 74 69 6d 65 20 69 74 20 69 73 20  next time it is 
14640 6e 65 65 64 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f  needed...    ///
14650 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
14660 20 50 65 72 73 69 73 74 20 3d 20 31 2c 0d 0a 20   Persist = 1,.. 
14670 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
14680 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6f  ..    /// This o
14690 70 74 69 6f 6e 20 64 69 73 61 62 6c 65 73 20 74  ption disables t
146a0 68 65 20 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72  he rollback jour
146b0 6e 61 6c 20 65 6e 74 69 72 65 6c 79 2e 20 20 49  nal entirely.  I
146c0 6e 74 65 72 72 75 70 74 65 64 20 74 72 61 6e 73  nterrupted trans
146d0 61 63 74 69 6f 6e 73 20 6f 72 20 61 20 70 72 6f  actions or a pro
146e0 67 72 61 6d 20 63 72 61 73 68 20 63 61 6e 20 63  gram crash can c
146f0 61 75 73 65 20 64 61 74 61 62 61 73 65 0d 0a 20  ause database.. 
14700 20 20 20 2f 2f 2f 20 63 6f 72 72 75 70 74 69 6f     /// corruptio
14710 6e 20 69 6e 20 74 68 69 73 20 6d 6f 64 65 21 0d  n in this mode!.
14720 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
14730 72 79 3e 0d 0a 20 20 20 20 4f 66 66 20 3d 20 32  ry>..    Off = 2
14740 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ,..    /// <summ
14750 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 51  ary>..    /// SQ
14760 4c 69 74 65 20 77 69 6c 6c 20 74 72 75 6e 63 61  Lite will trunca
14770 74 65 20 74 68 65 20 6a 6f 75 72 6e 61 6c 20 66  te the journal f
14780 69 6c 65 20 74 6f 20 7a 65 72 6f 2d 6c 65 6e 67  ile to zero-leng
14790 74 68 20 69 6e 73 74 65 61 64 20 6f 66 20 64 65  th instead of de
147a0 6c 65 74 69 6e 67 20 69 74 2e 0d 0a 20 20 20 20  leting it...    
147b0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
147c0 20 20 20 20 54 72 75 6e 63 61 74 65 20 3d 20 33      Truncate = 3
147d0 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ,..    /// <summ
147e0 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 51  ary>..    /// SQ
147f0 4c 69 74 65 20 77 69 6c 6c 20 73 74 6f 72 65 20  Lite will store 
14800 74 68 65 20 6a 6f 75 72 6e 61 6c 20 69 6e 20 76  the journal in v
14810 6f 6c 61 74 69 6c 65 20 52 41 4d 2e 20 20 54 68  olatile RAM.  Th
14820 69 73 20 73 61 76 65 73 20 64 69 73 6b 20 49 2f  is saves disk I/
14830 4f 20 62 75 74 20 61 74 20 74 68 65 20 65 78 70  O but at the exp
14840 65 6e 73 65 20 6f 66 20 64 61 74 61 62 61 73 65  ense of database
14850 20 73 61 66 65 74 79 20 61 6e 64 20 69 6e 74 65   safety and inte
14860 67 72 69 74 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20  grity...    /// 
14870 49 66 20 74 68 65 20 61 70 70 6c 69 63 61 74 69  If the applicati
14880 6f 6e 20 75 73 69 6e 67 20 53 51 4c 69 74 65 20  on using SQLite 
14890 63 72 61 73 68 65 73 20 69 6e 20 74 68 65 20 6d  crashes in the m
148a0 69 64 64 6c 65 20 6f 66 20 61 20 74 72 61 6e 73  iddle of a trans
148b0 61 63 74 69 6f 6e 20 77 68 65 6e 20 74 68 65 20  action when the 
148c0 4d 45 4d 4f 52 59 20 6a 6f 75 72 6e 61 6c 69 6e  MEMORY journalin
148d0 67 20 6d 6f 64 65 20 69 73 20 73 65 74 2c 20 74  g mode is set, t
148e0 68 65 6e 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f  hen the..    ///
148f0 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 77   database file w
14900 69 6c 6c 20 76 65 72 79 20 6c 69 6b 65 6c 79 20  ill very likely 
14910 67 6f 20 63 6f 72 72 75 70 74 2e 0d 0a 20 20 20  go corrupt...   
14920 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
14930 0a 20 20 20 20 4d 65 6d 6f 72 79 20 3d 20 34 2c  .    Memory = 4,
14940 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
14950 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 51 4c  ry>..    /// SQL
14960 69 74 65 20 75 73 65 73 20 61 20 77 72 69 74 65  ite uses a write
14970 2d 61 68 65 61 64 20 6c 6f 67 20 69 6e 73 74 65  -ahead log inste
14980 61 64 20 6f 66 20 61 20 72 6f 6c 6c 62 61 63 6b  ad of a rollback
14990 20 6a 6f 75 72 6e 61 6c 20 74 6f 20 69 6d 70 6c   journal to impl
149a0 65 6d 65 6e 74 20 74 72 61 6e 73 61 63 74 69 6f  ement transactio
149b0 6e 73 2e 20 20 54 68 65 20 57 41 4c 20 6a 6f 75  ns.  The WAL jou
149c0 72 6e 61 6c 69 6e 67 20 6d 6f 64 65 20 69 73 20  rnaling mode is 
149d0 70 65 72 73 69 73 74 65 6e 74 3b 0d 0a 20 20 20  persistent;..   
149e0 20 2f 2f 2f 20 61 66 74 65 72 20 62 65 69 6e 67   /// after being
149f0 20 73 65 74 20 69 74 20 73 74 61 79 73 20 69 6e   set it stays in
14a00 20 65 66 66 65 63 74 20 61 63 72 6f 73 73 20 6d   effect across m
14a10 75 6c 74 69 70 6c 65 20 64 61 74 61 62 61 73 65  ultiple database
14a20 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 61 6e 64   connections and
14a30 20 61 66 74 65 72 20 63 6c 6f 73 69 6e 67 20 61   after closing a
14a40 6e 64 20 72 65 6f 70 65 6e 69 6e 67 20 74 68 65  nd reopening the
14a50 20 64 61 74 61 62 61 73 65 2e 20 41 20 64 61 74   database. A dat
14a60 61 62 61 73 65 0d 0a 20 20 20 20 2f 2f 2f 20 69  abase..    /// i
14a70 6e 20 57 41 4c 20 6a 6f 75 72 6e 61 6c 69 6e 67  n WAL journaling
14a80 20 6d 6f 64 65 20 63 61 6e 20 6f 6e 6c 79 20 62   mode can only b
14a90 65 20 61 63 63 65 73 73 65 64 20 62 79 20 53 51  e accessed by SQ
14aa0 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e 37  Lite version 3.7
14ab0 2e 30 20 6f 72 20 6c 61 74 65 72 2e 0d 0a 20 20  .0 or later...  
14ac0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
14ad0 0d 0a 20 20 20 20 57 61 6c 20 3d 20 35 0d 0a 20  ..    Wal = 5.. 
14ae0 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d   }....  /// <sum
14af0 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 50 6f 73  mary>..  /// Pos
14b00 73 69 62 6c 65 20 76 61 6c 75 65 73 20 66 6f 72  sible values for
14b10 20 74 68 65 20 22 73 79 6e 63 68 72 6f 6e 6f 75   the "synchronou
14b20 73 22 20 64 61 74 61 62 61 73 65 20 73 65 74 74  s" database sett
14b30 69 6e 67 2e 20 20 54 68 69 73 20 73 65 74 74 69  ing.  This setti
14b40 6e 67 20 64 65 74 65 72 6d 69 6e 65 73 0d 0a 20  ng determines.. 
14b50 20 2f 2f 2f 20 68 6f 77 20 6f 66 74 65 6e 20 74   /// how often t
14b60 68 65 20 64 61 74 61 62 61 73 65 20 65 6e 67 69  he database engi
14b70 6e 65 20 63 61 6c 6c 73 20 74 68 65 20 78 53 79  ne calls the xSy
14b80 6e 63 20 6d 65 74 68 6f 64 20 6f 66 20 74 68 65  nc method of the
14b90 20 56 46 53 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73   VFS...  /// </s
14ba0 75 6d 6d 61 72 79 3e 0d 0a 20 20 69 6e 74 65 72  ummary>..  inter
14bb0 6e 61 6c 20 65 6e 75 6d 20 53 51 4c 69 74 65 53  nal enum SQLiteS
14bc0 79 6e 63 68 72 6f 6e 6f 75 73 45 6e 75 6d 0d 0a  ynchronousEnum..
14bd0 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c    {..      /// <
14be0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
14bf0 2f 2f 2f 20 55 73 65 20 74 68 65 20 64 65 66 61  /// Use the defa
14c00 75 6c 74 20 22 73 79 6e 63 68 72 6f 6e 6f 75 73  ult "synchronous
14c10 22 20 64 61 74 61 62 61 73 65 20 73 65 74 74 69  " database setti
14c20 6e 67 2e 20 20 43 75 72 72 65 6e 74 6c 79 2c 20  ng.  Currently, 
14c30 74 68 69 73 20 73 68 6f 75 6c 64 20 62 65 0d 0a  this should be..
14c40 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 73 61        /// the sa
14c50 6d 65 20 61 73 20 75 73 69 6e 67 20 74 68 65 20  me as using the 
14c60 46 55 4c 4c 20 6d 6f 64 65 2e 0d 0a 20 20 20 20  FULL mode...    
14c70 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
14c80 0d 0a 20 20 20 20 20 20 44 65 66 61 75 6c 74 20  ..      Default 
14c90 3d 20 2d 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  = -1,....      /
14ca0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
14cb0 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 61 74 61      /// The data
14cc0 62 61 73 65 20 65 6e 67 69 6e 65 20 63 6f 6e 74  base engine cont
14cd0 69 6e 75 65 73 20 77 69 74 68 6f 75 74 20 73 79  inues without sy
14ce0 6e 63 69 6e 67 20 61 73 20 73 6f 6f 6e 20 61 73  ncing as soon as
14cf0 20 69 74 20 68 61 73 20 68 61 6e 64 65 64 0d 0a   it has handed..
14d00 20 20 20 20 20 20 2f 2f 2f 20 64 61 74 61 20 6f        /// data o
14d10 66 66 20 74 6f 20 74 68 65 20 6f 70 65 72 61 74  ff to the operat
14d20 69 6e 67 20 73 79 73 74 65 6d 2e 20 20 49 66 20  ing system.  If 
14d30 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20  the application 
14d40 72 75 6e 6e 69 6e 67 20 53 51 4c 69 74 65 0d 0a  running SQLite..
14d50 20 20 20 20 20 20 2f 2f 2f 20 63 72 61 73 68 65        /// crashe
14d60 73 2c 20 74 68 65 20 64 61 74 61 20 77 69 6c 6c  s, the data will
14d70 20 62 65 20 73 61 66 65 2c 20 62 75 74 20 74 68   be safe, but th
14d80 65 20 64 61 74 61 62 61 73 65 20 6d 69 67 68 74  e database might
14d90 20 62 65 63 6f 6d 65 20 63 6f 72 72 75 70 74 65   become corrupte
14da0 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 66 20  d..      /// if 
14db0 74 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73 79  the operating sy
14dc0 73 74 65 6d 20 63 72 61 73 68 65 73 20 6f 72 20  stem crashes or 
14dd0 74 68 65 20 63 6f 6d 70 75 74 65 72 20 6c 6f 73  the computer los
14de0 65 73 20 70 6f 77 65 72 20 62 65 66 6f 72 65 20  es power before 
14df0 74 68 61 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  that..      /// 
14e00 64 61 74 61 20 68 61 73 20 62 65 65 6e 20 77 72  data has been wr
14e10 69 74 74 65 6e 20 74 6f 20 74 68 65 20 64 69 73  itten to the dis
14e20 6b 20 73 75 72 66 61 63 65 2e 0d 0a 20 20 20 20  k surface...    
14e30 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
14e40 0d 0a 20 20 20 20 20 20 4f 66 66 20 3d 20 30 2c  ..      Off = 0,
14e50 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
14e60 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
14e70 2f 2f 20 54 68 65 20 64 61 74 61 62 61 73 65 20  // The database 
14e80 65 6e 67 69 6e 65 20 77 69 6c 6c 20 73 74 69 6c  engine will stil
14e90 6c 20 73 79 6e 63 20 61 74 20 74 68 65 20 6d 6f  l sync at the mo
14ea0 73 74 20 63 72 69 74 69 63 61 6c 20 6d 6f 6d 65  st critical mome
14eb0 6e 74 73 2c 20 62 75 74 0d 0a 20 20 20 20 20 20  nts, but..      
14ec0 2f 2f 2f 20 6c 65 73 73 20 6f 66 74 65 6e 20 74  /// less often t
14ed0 68 61 6e 20 69 6e 20 46 55 4c 4c 20 6d 6f 64 65  han in FULL mode
14ee0 2e 20 20 54 68 65 72 65 20 69 73 20 61 20 76 65  .  There is a ve
14ef0 72 79 20 73 6d 61 6c 6c 20 28 74 68 6f 75 67 68  ry small (though
14f00 20 6e 6f 6e 2d 7a 65 72 6f 29 0d 0a 20 20 20 20   non-zero)..    
14f10 20 20 2f 2f 2f 20 63 68 61 6e 63 65 20 74 68 61    /// chance tha
14f20 74 20 61 20 70 6f 77 65 72 20 66 61 69 6c 75 72  t a power failur
14f30 65 20 61 74 20 6a 75 73 74 20 74 68 65 20 77 72  e at just the wr
14f40 6f 6e 67 20 74 69 6d 65 20 63 6f 75 6c 64 20 63  ong time could c
14f50 6f 72 72 75 70 74 20 74 68 65 0d 0a 20 20 20 20  orrupt the..    
14f60 20 20 2f 2f 2f 20 64 61 74 61 62 61 73 65 20 69    /// database i
14f70 6e 20 4e 4f 52 4d 41 4c 20 6d 6f 64 65 2e 0d 0a  n NORMAL mode...
14f80 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
14f90 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 72 6d  ary>..      Norm
14fa0 61 6c 20 3d 20 31 2c 0d 0a 0d 0a 20 20 20 20 20  al = 1,....     
14fb0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
14fc0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 61        /// The da
14fd0 74 61 62 61 73 65 20 65 6e 67 69 6e 65 20 77 69  tabase engine wi
14fe0 6c 6c 20 75 73 65 20 74 68 65 20 78 53 79 6e 63  ll use the xSync
14ff0 20 6d 65 74 68 6f 64 20 6f 66 20 74 68 65 20 56   method of the V
15000 46 53 20 74 6f 20 65 6e 73 75 72 65 20 74 68 61  FS to ensure tha
15010 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6c 6c  t..      /// all
15020 20 63 6f 6e 74 65 6e 74 20 69 73 20 73 61 66 65   content is safe
15030 6c 79 20 77 72 69 74 74 65 6e 20 74 6f 20 74 68  ly written to th
15040 65 20 64 69 73 6b 20 73 75 72 66 61 63 65 20 70  e disk surface p
15050 72 69 6f 72 20 74 6f 20 63 6f 6e 74 69 6e 75 69  rior to continui
15060 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ng...      /// T
15070 68 69 73 20 65 6e 73 75 72 65 73 20 74 68 61 74  his ensures that
15080 20 61 6e 20 6f 70 65 72 61 74 69 6e 67 20 73 79   an operating sy
15090 73 74 65 6d 20 63 72 61 73 68 20 6f 72 20 70 6f  stem crash or po
150a0 77 65 72 20 66 61 69 6c 75 72 65 20 77 69 6c 6c  wer failure will
150b0 20 6e 6f 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   not..      /// 
150c0 63 6f 72 72 75 70 74 20 74 68 65 20 64 61 74 61  corrupt the data
150d0 62 61 73 65 2e 20 20 46 55 4c 4c 20 73 79 6e 63  base.  FULL sync
150e0 68 72 6f 6e 6f 75 73 20 69 73 20 76 65 72 79 20  hronous is very 
150f0 73 61 66 65 2c 20 62 75 74 20 69 74 20 69 73 20  safe, but it is 
15100 61 6c 73 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  also..      /// 
15110 73 6c 6f 77 65 72 2e 0d 0a 20 20 20 20 20 20 2f  slower...      /
15120 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
15130 20 20 20 20 20 46 75 6c 6c 20 3d 20 32 0d 0a 20       Full = 2.. 
15140 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d   }....  /// <sum
15150 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65  mary>..  /// The
15160 20 72 65 71 75 65 73 74 65 64 20 63 6f 6d 6d 61   requested comma
15170 6e 64 20 65 78 65 63 75 74 69 6f 6e 20 74 79 70  nd execution typ
15180 65 2e 20 20 54 68 69 73 20 63 6f 6e 74 72 6f 6c  e.  This control
15190 73 20 77 68 69 63 68 20 6d 65 74 68 6f 64 20 6f  s which method o
151a0 66 20 74 68 65 0d 0a 20 20 2f 2f 2f 20 3c 73 65  f the..  /// <se
151b0 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f  e cref="SQLiteCo
151c0 6d 6d 61 6e 64 22 20 2f 3e 20 6f 62 6a 65 63 74  mmand" /> object
151d0 20 77 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64 2e   will be called.
151e0 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72  ..  /// </summar
151f0 79 3e 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e 75  y>..  public enu
15200 6d 20 53 51 4c 69 74 65 45 78 65 63 75 74 65 54  m SQLiteExecuteT
15210 79 70 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20  ype..  {..      
15220 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
15230 20 20 20 20 20 2f 2f 2f 20 44 6f 20 6e 6f 74 68       /// Do noth
15240 69 6e 67 2e 20 20 4e 6f 20 6d 65 74 68 6f 64 20  ing.  No method 
15250 77 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64 2e 0d  will be called..
15260 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
15270 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 6e  mary>..      Non
15280 65 20 3d 20 30 2c 0d 0a 0d 0a 20 20 20 20 20 20  e = 0,....      
15290 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
152a0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6d       /// The com
152b0 6d 61 6e 64 20 69 73 20 6e 6f 74 20 65 78 70 65  mand is not expe
152c0 63 74 65 64 20 74 6f 20 72 65 74 75 72 6e 20 61  cted to return a
152d0 20 72 65 73 75 6c 74 20 2d 4f 52 2d 20 74 68 65   result -OR- the
152e0 20 72 65 73 75 6c 74 20 69 73 20 6e 6f 74 0d 0a   result is not..
152f0 20 20 20 20 20 20 2f 2f 2f 20 6e 65 65 64 65 64        /// needed
15300 2e 20 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  .  The <see cref
15310 3d 22 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 2e  ="SQLiteCommand.
15320 45 78 65 63 75 74 65 4e 6f 6e 51 75 65 72 79 28  ExecuteNonQuery(
15330 29 22 20 2f 3e 20 6f 72 0d 0a 20 20 20 20 20 20  )" /> or..      
15340 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53  /// <see cref="S
15350 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 2e 45 78 65  QLiteCommand.Exe
15360 63 75 74 65 4e 6f 6e 51 75 65 72 79 28 43 6f 6d  cuteNonQuery(Com
15370 6d 61 6e 64 42 65 68 61 76 69 6f 72 29 22 20 2f  mandBehavior)" /
15380 3e 20 20 6d 65 74 68 6f 64 0d 0a 20 20 20 20 20  >  method..     
15390 20 2f 2f 2f 20 77 69 6c 6c 20 62 65 20 63 61 6c   /// will be cal
153a0 6c 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  led...      /// 
153b0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
153c0 20 20 4e 6f 6e 51 75 65 72 79 20 3d 20 31 2c 0d    NonQuery = 1,.
153d0 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
153e0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
153f0 2f 20 54 68 65 20 63 6f 6d 6d 61 6e 64 20 69 73  / The command is
15400 20 65 78 70 65 63 74 65 64 20 74 6f 20 72 65 74   expected to ret
15410 75 72 6e 20 61 20 73 63 61 6c 61 72 20 72 65 73  urn a scalar res
15420 75 6c 74 20 2d 4f 52 2d 20 74 68 65 20 72 65 73  ult -OR- the res
15430 75 6c 74 20 73 68 6f 75 6c 64 0d 0a 20 20 20 20  ult should..    
15440 20 20 2f 2f 2f 20 62 65 20 6c 69 6d 69 74 65 64    /// be limited
15450 20 74 6f 20 61 20 73 63 61 6c 61 72 20 72 65 73   to a scalar res
15460 75 6c 74 2e 20 20 54 68 65 20 3c 73 65 65 20 63  ult.  The <see c
15470 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6d 6d 61  ref="SQLiteComma
15480 6e 64 2e 45 78 65 63 75 74 65 53 63 61 6c 61 72  nd.ExecuteScalar
15490 28 29 22 20 2f 3e 0d 0a 20 20 20 20 20 20 2f 2f  ()" />..      //
154a0 2f 20 6f 72 20 3c 73 65 65 20 63 72 65 66 3d 22  / or <see cref="
154b0 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 2e 45 78  SQLiteCommand.Ex
154c0 65 63 75 74 65 53 63 61 6c 61 72 28 43 6f 6d 6d  ecuteScalar(Comm
154d0 61 6e 64 42 65 68 61 76 69 6f 72 29 22 20 2f 3e  andBehavior)" />
154e0 20 6d 65 74 68 6f 64 20 77 69 6c 6c 0d 0a 20 20   method will..  
154f0 20 20 20 20 2f 2f 2f 20 62 65 20 63 61 6c 6c 65      /// be calle
15500 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
15510 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
15520 53 63 61 6c 61 72 20 3d 20 32 2c 0d 0a 0d 0a 20  Scalar = 2,.... 
15530 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
15540 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
15550 65 20 63 6f 6d 6d 61 6e 64 20 69 73 20 65 78 70  e command is exp
15560 65 63 74 65 64 20 74 6f 20 72 65 74 75 72 6e 20  ected to return 
15570 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
15580 65 44 61 74 61 52 65 61 64 65 72 22 20 2f 3e 20  eDataReader" /> 
15590 72 65 73 75 6c 74 2e 0d 0a 20 20 20 20 20 20 2f  result...      /
155a0 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
155b0 3d 22 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 2e  ="SQLiteCommand.
155c0 45 78 65 63 75 74 65 52 65 61 64 65 72 28 29 22  ExecuteReader()"
155d0 20 2f 3e 20 6f 72 0d 0a 20 20 20 20 20 20 2f 2f   /> or..      //
155e0 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  / <see cref="SQL
155f0 69 74 65 43 6f 6d 6d 61 6e 64 2e 45 78 65 63 75  iteCommand.Execu
15600 74 65 52 65 61 64 65 72 28 43 6f 6d 6d 61 6e 64  teReader(Command
15610 42 65 68 61 76 69 6f 72 29 22 20 2f 3e 20 6d 65  Behavior)" /> me
15620 74 68 6f 64 20 77 69 6c 6c 0d 0a 20 20 20 20 20  thod will..     
15630 20 2f 2f 2f 20 62 65 20 63 61 6c 6c 65 64 2e 0d   /// be called..
15640 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
15650 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 52 65 61  mary>..      Rea
15660 64 65 72 20 3d 20 33 2c 0d 0a 0d 0a 20 20 20 20  der = 3,....    
15670 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
15680 0a 20 20 20 20 20 20 2f 2f 2f 20 55 73 65 20 74  .      /// Use t
15690 68 65 20 64 65 66 61 75 6c 74 20 63 6f 6d 6d 61  he default comma
156a0 6e 64 20 65 78 65 63 75 74 69 6f 6e 20 74 79 70  nd execution typ
156b0 65 2e 20 20 55 73 69 6e 67 20 74 68 69 73 20 76  e.  Using this v
156c0 61 6c 75 65 20 69 73 20 74 68 65 20 73 61 6d 65  alue is the same
156d0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 73 20 75  ..      /// as u
156e0 73 69 6e 67 20 74 68 65 20 3c 73 65 65 20 63 72  sing the <see cr
156f0 65 66 3d 22 53 51 4c 69 74 65 45 78 65 63 75 74  ef="SQLiteExecut
15700 65 54 79 70 65 2e 4e 6f 6e 51 75 65 72 79 22 20  eType.NonQuery" 
15710 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  /> value...     
15720 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
15730 0a 20 20 20 20 20 20 44 65 66 61 75 6c 74 20 3d  .      Default =
15740 20 4e 6f 6e 51 75 65 72 79 20 2f 2a 20 54 4f 44   NonQuery /* TOD
15750 4f 3a 20 47 6f 6f 64 20 64 65 66 61 75 6c 74 3f  O: Good default?
15760 20 2a 2f 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f   */..  }....  //
15770 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f  / <summary>..  /
15780 2f 2f 20 54 68 65 20 61 63 74 69 6f 6e 20 63 6f  // The action co
15790 64 65 20 72 65 73 70 6f 6e 73 69 62 6c 65 20 66  de responsible f
157a0 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 63  or the current c
157b0 61 6c 6c 20 69 6e 74 6f 20 74 68 65 20 61 75 74  all into the aut
157c0 68 6f 72 69 7a 65 72 2e 0d 0a 20 20 2f 2f 2f 20  horizer...  /// 
157d0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 70 75  </summary>..  pu
157e0 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69 74 65  blic enum SQLite
157f0 41 75 74 68 6f 72 69 7a 65 72 41 63 74 69 6f 6e  AuthorizerAction
15800 43 6f 64 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 20  Code..  {..     
15810 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
15820 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 20 61 63 74        /// No act
15830 69 6f 6e 20 69 73 20 62 65 69 6e 67 20 70 65 72  ion is being per
15840 66 6f 72 6d 65 64 2e 20 20 54 68 69 73 20 76 61  formed.  This va
15850 6c 75 65 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62  lue should not b
15860 65 20 75 73 65 64 20 66 72 6f 6d 0d 0a 20 20 20  e used from..   
15870 20 20 20 2f 2f 2f 20 65 78 74 65 72 6e 61 6c 20     /// external 
15880 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  code...      ///
15890 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
158a0 20 20 20 4e 6f 6e 65 20 3d 20 2d 31 2c 0d 0a 0d     None = -1,...
158b0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
158c0 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
158d0 4e 6f 20 6c 6f 6e 67 65 72 20 75 73 65 64 2e 0d  No longer used..
158e0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
158f0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 6f 70  mary>..      Cop
15900 79 20 3d 20 30 2c 0d 0a 0d 0a 20 20 20 20 20 20  y = 0,....      
15910 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
15920 20 20 20 20 20 2f 2f 2f 20 41 6e 20 69 6e 64 65       /// An inde
15930 78 20 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65  x will be create
15940 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73  d.  The action-s
15950 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74  pecific argument
15960 73 20 61 72 65 20 74 68 65 0d 0a 20 20 20 20 20  s are the..     
15970 20 2f 2f 2f 20 69 6e 64 65 78 20 6e 61 6d 65 20   /// index name 
15980 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20 6e 61  and the table na
15990 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 0d 0a  me...      ///..
159a0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
159b0 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 72 65 61  ary>..      Crea
159c0 74 65 49 6e 64 65 78 20 3d 20 31 2c 0d 0a 0d 0a  teIndex = 1,....
159d0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
159e0 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
159f0 20 74 61 62 6c 65 20 77 69 6c 6c 20 62 65 20 63   table will be c
15a00 72 65 61 74 65 64 2e 20 20 54 68 65 20 61 63 74  reated.  The act
15a10 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67  ion-specific arg
15a20 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65 0d 0a  uments are the..
15a30 20 20 20 20 20 20 2f 2f 2f 20 74 61 62 6c 65 20        /// table 
15a40 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20  name and a null 
15a50 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  value...      //
15a60 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
15a70 20 20 20 20 43 72 65 61 74 65 54 61 62 6c 65 20      CreateTable 
15a80 3d 20 32 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  = 2,....      //
15a90 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
15aa0 20 20 20 2f 2f 2f 20 41 20 74 65 6d 70 6f 72 61     /// A tempora
15ab0 72 79 20 69 6e 64 65 78 20 77 69 6c 6c 20 62 65  ry index will be
15ac0 20 63 72 65 61 74 65 64 2e 20 20 54 68 65 20 61   created.  The a
15ad0 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61  ction-specific a
15ae0 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20  rguments..      
15af0 2f 2f 2f 20 61 72 65 20 74 68 65 20 69 6e 64 65  /// are the inde
15b00 78 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 74  x name and the t
15b10 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  able name...    
15b20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
15b30 0d 0a 20 20 20 20 20 20 43 72 65 61 74 65 54 65  ..      CreateTe
15b40 6d 70 49 6e 64 65 78 20 3d 20 33 2c 0d 0a 0d 0a  mpIndex = 3,....
15b50 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
15b60 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
15b70 20 74 65 6d 70 6f 72 61 72 79 20 74 61 62 6c 65   temporary table
15b80 20 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65 64   will be created
15b90 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70  .  The action-sp
15ba0 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73  ecific arguments
15bb0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20  ..      /// are 
15bc0 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 20 61  the table name a
15bd0 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e  nd a null value.
15be0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
15bf0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 72  mmary>..      Cr
15c00 65 61 74 65 54 65 6d 70 54 61 62 6c 65 20 3d 20  eateTempTable = 
15c10 34 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  4,....      /// 
15c20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
15c30 20 2f 2f 2f 20 41 20 74 65 6d 70 6f 72 61 72 79   /// A temporary
15c40 20 74 72 69 67 67 65 72 20 77 69 6c 6c 20 62 65   trigger will be
15c50 20 63 72 65 61 74 65 64 2e 20 20 54 68 65 20 61   created.  The a
15c60 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61  ction-specific a
15c70 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20  rguments..      
15c80 2f 2f 2f 20 61 72 65 20 74 68 65 20 74 72 69 67  /// are the trig
15c90 67 65 72 20 6e 61 6d 65 20 61 6e 64 20 74 68 65  ger name and the
15ca0 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20   table name...  
15cb0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
15cc0 79 3e 0d 0a 20 20 20 20 20 20 43 72 65 61 74 65  y>..      Create
15cd0 54 65 6d 70 54 72 69 67 67 65 72 20 3d 20 35 2c  TempTrigger = 5,
15ce0 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
15cf0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
15d00 2f 2f 20 41 20 74 65 6d 70 6f 72 61 72 79 20 76  // A temporary v
15d10 69 65 77 20 77 69 6c 6c 20 62 65 20 63 72 65 61  iew will be crea
15d20 74 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e  ted.  The action
15d30 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65  -specific argume
15d40 6e 74 73 20 61 72 65 0d 0a 20 20 20 20 20 20 2f  nts are..      /
15d50 2f 2f 20 74 68 65 20 76 69 65 77 20 6e 61 6d 65  // the view name
15d60 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75   and a null valu
15d70 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
15d80 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
15d90 43 72 65 61 74 65 54 65 6d 70 56 69 65 77 20 3d  CreateTempView =
15da0 20 36 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f   6,....      ///
15db0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
15dc0 20 20 2f 2f 2f 20 41 20 74 72 69 67 67 65 72 20    /// A trigger 
15dd0 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65 64 2e  will be created.
15de0 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65    The action-spe
15df0 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20  cific arguments 
15e00 61 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 2f  are the..      /
15e10 2f 2f 20 74 72 69 67 67 65 72 20 6e 61 6d 65 20  // trigger name 
15e20 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20 6e 61  and the table na
15e30 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  me...      /// <
15e40 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
15e50 20 43 72 65 61 74 65 54 72 69 67 67 65 72 20 3d   CreateTrigger =
15e60 20 37 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f   7,....      ///
15e70 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
15e80 20 20 2f 2f 2f 20 41 20 76 69 65 77 20 77 69 6c    /// A view wil
15e90 6c 20 62 65 20 63 72 65 61 74 65 64 2e 20 20 54  l be created.  T
15ea0 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66  he action-specif
15eb0 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65  ic arguments are
15ec0 20 74 68 65 20 76 69 65 77 0d 0a 20 20 20 20 20   the view..     
15ed0 20 2f 2f 2f 20 6e 61 6d 65 20 61 6e 64 20 61 20   /// name and a 
15ee0 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20  null value...   
15ef0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
15f00 3e 0d 0a 20 20 20 20 20 20 43 72 65 61 74 65 56  >..      CreateV
15f10 69 65 77 20 3d 20 38 2c 0d 0a 0d 0a 20 20 20 20  iew = 8,....    
15f20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
15f30 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 44 45 4c  .      /// A DEL
15f40 45 54 45 20 73 74 61 74 65 6d 65 6e 74 20 77 69  ETE statement wi
15f50 6c 6c 20 62 65 20 65 78 65 63 75 74 65 64 2e 20  ll be executed. 
15f60 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63   The action-spec
15f70 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a  ific arguments..
15f80 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 74 68        /// are th
15f90 65 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64  e table name and
15fa0 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a   a null value...
15fb0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
15fc0 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 65 6c 65  ary>..      Dele
15fd0 74 65 20 3d 20 39 2c 0d 0a 0d 0a 20 20 20 20 20  te = 9,....     
15fe0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
15ff0 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20 69 6e 64        /// An ind
16000 65 78 20 77 69 6c 6c 20 62 65 20 64 72 6f 70 70  ex will be dropp
16010 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d  ed.  The action-
16020 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e  specific argumen
16030 74 73 20 61 72 65 20 74 68 65 0d 0a 20 20 20 20  ts are the..    
16040 20 20 2f 2f 2f 20 69 6e 64 65 78 20 6e 61 6d 65    /// index name
16050 20 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20 6e   and the table n
16060 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ame...      /// 
16070 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
16080 20 20 44 72 6f 70 49 6e 64 65 78 20 3d 20 31 30    DropIndex = 10
16090 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
160a0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
160b0 2f 2f 2f 20 41 20 74 61 62 6c 65 20 77 69 6c 6c  /// A table will
160c0 20 62 65 20 64 72 6f 70 70 65 64 2e 20 20 54 68   be dropped.  Th
160d0 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69  e action-specifi
160e0 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20  c arguments are 
160f0 74 68 65 20 74 61 62 6c 65 73 0d 0a 20 20 20 20  the tables..    
16100 20 20 2f 2f 2f 20 6e 61 6d 65 20 61 6e 64 20 61    /// name and a
16110 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20   null value...  
16120 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
16130 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f 70 54 61  y>..      DropTa
16140 62 6c 65 20 3d 20 31 31 2c 0d 0a 0d 0a 20 20 20  ble = 11,....   
16150 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
16160 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 65  ..      /// A te
16170 6d 70 6f 72 61 72 79 20 69 6e 64 65 78 20 77 69  mporary index wi
16180 6c 6c 20 62 65 20 64 72 6f 70 70 65 64 2e 20 20  ll be dropped.  
16190 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69  The action-speci
161a0 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72  fic arguments ar
161b0 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  e..      /// the
161c0 20 69 6e 64 65 78 20 6e 61 6d 65 20 61 6e 64 20   index name and 
161d0 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0d  the table name..
161e0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
161f0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f  mary>..      Dro
16200 70 54 65 6d 70 49 6e 64 65 78 20 3d 20 31 32 2c  pTempIndex = 12,
16210 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
16220 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
16230 2f 2f 20 41 20 74 65 6d 70 6f 72 61 72 79 20 74  // A temporary t
16240 61 62 6c 65 20 77 69 6c 6c 20 62 65 20 64 72 6f  able will be dro
16250 70 70 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f  pped.  The actio
16260 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d  n-specific argum
16270 65 6e 74 73 20 61 72 65 0d 0a 20 20 20 20 20 20  ents are..      
16280 2f 2f 2f 20 74 68 65 20 74 61 62 6c 65 20 6e 61  /// the table na
16290 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61  me and a null va
162a0 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lue...      /// 
162b0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
162c0 20 20 44 72 6f 70 54 65 6d 70 54 61 62 6c 65 20    DropTempTable 
162d0 3d 20 31 33 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  = 13,....      /
162e0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
162f0 20 20 20 20 2f 2f 2f 20 41 20 74 65 6d 70 6f 72      /// A tempor
16300 61 72 79 20 74 72 69 67 67 65 72 20 77 69 6c 6c  ary trigger will
16310 20 62 65 20 64 72 6f 70 70 65 64 2e 20 20 54 68   be dropped.  Th
16320 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69  e action-specifi
16330 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20  c arguments..   
16340 20 20 20 2f 2f 2f 20 61 72 65 20 74 68 65 20 74     /// are the t
16350 72 69 67 67 65 72 20 6e 61 6d 65 20 61 6e 64 20  rigger name and 
16360 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0d  the table name..
16370 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
16380 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f  mary>..      Dro
16390 70 54 65 6d 70 54 72 69 67 67 65 72 20 3d 20 31  pTempTrigger = 1
163a0 34 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  4,....      /// 
163b0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
163c0 20 2f 2f 2f 20 41 20 74 65 6d 70 6f 72 61 72 79   /// A temporary
163d0 20 76 69 65 77 20 77 69 6c 6c 20 62 65 20 64 72   view will be dr
163e0 6f 70 70 65 64 2e 20 20 54 68 65 20 61 63 74 69  opped.  The acti
163f0 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75  on-specific argu
16400 6d 65 6e 74 73 20 61 72 65 0d 0a 20 20 20 20 20  ments are..     
16410 20 2f 2f 2f 20 74 68 65 20 76 69 65 77 20 6e 61   /// the view na
16420 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61  me and a null va
16430 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lue...      /// 
16440 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
16450 20 20 44 72 6f 70 54 65 6d 70 56 69 65 77 20 3d    DropTempView =
16460 20 31 35 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f   15,....      //
16470 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
16480 20 20 20 2f 2f 2f 20 41 20 74 72 69 67 67 65 72     /// A trigger
16490 20 77 69 6c 6c 20 62 65 20 64 72 6f 70 70 65 64   will be dropped
164a0 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70  .  The action-sp
164b0 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73  ecific arguments
164c0 20 61 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20   are the..      
164d0 2f 2f 2f 20 74 72 69 67 67 65 72 20 6e 61 6d 65  /// trigger name
164e0 20 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20 6e   and the table n
164f0 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ame...      /// 
16500 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
16510 20 20 44 72 6f 70 54 72 69 67 67 65 72 20 3d 20    DropTrigger = 
16520 31 36 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  16,....      ///
16530 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
16540 20 20 2f 2f 2f 20 41 20 76 69 65 77 20 77 69 6c    /// A view wil
16550 6c 20 62 65 20 64 72 6f 70 70 65 64 2e 20 20 54  l be dropped.  T
16560 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66  he action-specif
16570 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65  ic arguments are
16580 20 74 68 65 20 76 69 65 77 0d 0a 20 20 20 20 20   the view..     
16590 20 2f 2f 2f 20 6e 61 6d 65 20 61 6e 64 20 61 20   /// name and a 
165a0 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20  null value...   
165b0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
165c0 3e 0d 0a 20 20 20 20 20 20 44 72 6f 70 56 69 65  >..      DropVie
165d0 77 20 3d 20 31 37 2c 0d 0a 0d 0a 20 20 20 20 20  w = 17,....     
165e0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
165f0 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20 49 4e 53        /// An INS
16600 45 52 54 20 73 74 61 74 65 6d 65 6e 74 20 77 69  ERT statement wi
16610 6c 6c 20 62 65 20 65 78 65 63 75 74 65 64 2e 20  ll be executed. 
16620 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63   The action-spec
16630 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a  ific arguments..
16640 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 74 68        /// are th
16650 65 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64  e table name and
16660 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a   a null value...
16670 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
16680 61 72 79 3e 0d 0a 20 20 20 20 20 20 49 6e 73 65  ary>..      Inse
16690 72 74 20 3d 20 31 38 2c 0d 0a 0d 0a 20 20 20 20  rt = 18,....    
166a0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
166b0 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 50 52 41  .      /// A PRA
166c0 47 4d 41 20 73 74 61 74 65 6d 65 6e 74 20 77 69  GMA statement wi
166d0 6c 6c 20 62 65 20 65 78 65 63 75 74 65 64 2e 20  ll be executed. 
166e0 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63   The action-spec
166f0 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a  ific arguments..
16700 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 74 68        /// are th
16710 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 50 52  e name of the PR
16720 41 47 4d 41 20 61 6e 64 20 74 68 65 20 6e 65 77  AGMA and the new
16730 20 76 61 6c 75 65 20 6f 72 20 61 20 6e 75 6c 6c   value or a null
16740 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f   value...      /
16750 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
16760 20 20 20 20 20 50 72 61 67 6d 61 20 3d 20 31 39       Pragma = 19
16770 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
16780 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16790 2f 2f 2f 20 41 20 74 61 62 6c 65 20 63 6f 6c 75  /// A table colu
167a0 6d 6e 20 77 69 6c 6c 20 62 65 20 72 65 61 64 2e  mn will be read.
167b0 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65    The action-spe
167c0 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20  cific arguments 
167d0 61 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 2f  are the..      /
167e0 2f 2f 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e  // table name an
167f0 64 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6e 61 6d  d the column nam
16800 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
16810 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16820 52 65 61 64 20 3d 20 32 30 2c 0d 0a 0d 0a 20 20  Read = 20,....  
16830 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
16840 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 53  >..      /// A S
16850 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74 20  ELECT statement 
16860 77 69 6c 6c 20 62 65 20 65 78 65 63 75 74 65 64  will be executed
16870 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70  .  The action-sp
16880 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73  ecific arguments
16890 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20  ..      /// are 
168a0 62 6f 74 68 20 6e 75 6c 6c 20 76 61 6c 75 65 73  both null values
168b0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
168c0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 53  ummary>..      S
168d0 65 6c 65 63 74 20 3d 20 32 31 2c 0d 0a 0d 0a 20  elect = 21,.... 
168e0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
168f0 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
16900 74 72 61 6e 73 61 63 74 69 6f 6e 20 77 69 6c 6c  transaction will
16910 20 62 65 20 73 74 61 72 74 65 64 2c 20 63 6f 6d   be started, com
16920 6d 69 74 74 65 64 2c 20 6f 72 20 72 6f 6c 6c 65  mitted, or rolle
16930 64 20 62 61 63 6b 2e 20 20 54 68 65 0d 0a 20 20  d back.  The..  
16940 20 20 20 20 2f 2f 2f 20 61 63 74 69 6f 6e 2d 73      /// action-s
16950 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74  pecific argument
16960 73 20 61 72 65 20 74 68 65 20 6e 61 6d 65 20 6f  s are the name o
16970 66 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 20  f the operation 
16980 28 42 45 47 49 4e 2c 0d 0a 20 20 20 20 20 20 2f  (BEGIN,..      /
16990 2f 2f 20 43 4f 4d 4d 49 54 2c 20 6f 72 20 52 4f  // COMMIT, or RO
169a0 4c 4c 42 41 43 4b 29 20 61 6e 64 20 61 20 6e 75  LLBACK) and a nu
169b0 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  ll value...     
169c0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
169d0 0a 20 20 20 20 20 20 54 72 61 6e 73 61 63 74 69  .      Transacti
169e0 6f 6e 20 3d 20 32 32 2c 0d 0a 0d 0a 20 20 20 20  on = 22,....    
169f0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
16a00 0a 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20 55 50  .      /// An UP
16a10 44 41 54 45 20 73 74 61 74 65 6d 65 6e 74 20 77  DATE statement w
16a20 69 6c 6c 20 62 65 20 65 78 65 63 75 74 65 64 2e  ill be executed.
16a30 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65    The action-spe
16a40 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 0d  cific arguments.
16a50 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 74  .      /// are t
16a60 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e  he table name an
16a70 64 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6e 61 6d  d the column nam
16a80 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
16a90 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16aa0 55 70 64 61 74 65 20 3d 20 32 33 2c 0d 0a 0d 0a  Update = 23,....
16ab0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
16ac0 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
16ad0 20 64 61 74 61 62 61 73 65 20 77 69 6c 6c 20 62   database will b
16ae0 65 20 61 74 74 61 63 68 65 64 20 74 6f 20 74 68  e attached to th
16af0 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 20 20 54  e connection.  T
16b00 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66  he action-specif
16b10 69 63 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72  ic..      /// ar
16b20 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65 20  guments are the 
16b30 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 6e 61  database file na
16b40 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61  me and a null va
16b50 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lue...      /// 
16b60 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
16b70 20 20 41 74 74 61 63 68 20 3d 20 32 34 2c 0d 0a    Attach = 24,..
16b80 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
16b90 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
16ba0 20 41 20 64 61 74 61 62 61 73 65 20 77 69 6c 6c   A database will
16bb0 20 62 65 20 64 65 74 61 63 68 65 64 20 66 72 6f   be detached fro
16bc0 6d 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  m the connection
16bd0 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70  .  The action-sp
16be0 65 63 69 66 69 63 0d 0a 20 20 20 20 20 20 2f 2f  ecific..      //
16bf0 2f 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20  / arguments are 
16c00 74 68 65 20 64 61 74 61 62 61 73 65 20 6e 61 6d  the database nam
16c10 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c  e and a null val
16c20 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ue...      /// <
16c30 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
16c40 20 44 65 74 61 63 68 20 3d 20 32 35 2c 0d 0a 0d   Detach = 25,...
16c50 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
16c60 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
16c70 54 68 65 20 73 63 68 65 6d 61 20 6f 66 20 61 20  The schema of a 
16c80 74 61 62 6c 65 20 77 69 6c 6c 20 62 65 20 61 6c  table will be al
16c90 74 65 72 65 64 2e 20 20 54 68 65 20 61 63 74 69  tered.  The acti
16ca0 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75  on-specific argu
16cb0 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f  ments..      ///
16cc0 20 61 72 65 20 74 68 65 20 64 61 74 61 62 61 73   are the databas
16cd0 65 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 74  e name and the t
16ce0 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  able name...    
16cf0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
16d00 0d 0a 20 20 20 20 20 20 41 6c 74 65 72 54 61 62  ..      AlterTab
16d10 6c 65 20 3d 20 32 36 2c 0d 0a 0d 0a 20 20 20 20  le = 26,....    
16d20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
16d30 0a 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20 69 6e  .      /// An in
16d40 64 65 78 20 77 69 6c 6c 20 62 65 20 64 65 6c 65  dex will be dele
16d50 74 65 64 20 61 6e 64 20 74 68 65 6e 20 72 65 63  ted and then rec
16d60 72 65 61 74 65 64 2e 20 20 54 68 65 20 61 63 74  reated.  The act
16d70 69 6f 6e 2d 73 70 65 63 69 66 69 63 0d 0a 20 20  ion-specific..  
16d80 20 20 20 20 2f 2f 2f 20 61 72 67 75 6d 65 6e 74      /// argument
16d90 73 20 61 72 65 20 74 68 65 20 69 6e 64 65 78 20  s are the index 
16da0 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20  name and a null 
16db0 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  value...      //
16dc0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
16dd0 20 20 20 20 52 65 69 6e 64 65 78 20 3d 20 32 37      Reindex = 27
16de0 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
16df0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16e00 2f 2f 2f 20 41 20 74 61 62 6c 65 20 77 69 6c 6c  /// A table will
16e10 20 62 65 20 61 6e 61 6c 79 7a 65 64 20 74 6f 20   be analyzed to 
16e20 67 61 74 68 65 72 73 20 73 74 61 74 69 73 74 69  gathers statisti
16e30 63 73 20 61 62 6f 75 74 20 69 74 2e 20 20 54 68  cs about it.  Th
16e40 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 63 74  e..      /// act
16e50 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67  ion-specific arg
16e60 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65 20 74  uments are the t
16e70 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64 20 61 20  able name and a 
16e80 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20  null value...   
16e90 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
16ea0 3e 0d 0a 20 20 20 20 20 20 41 6e 61 6c 79 7a 65  >..      Analyze
16eb0 20 3d 20 32 38 2c 0d 0a 0d 0a 20 20 20 20 20 20   = 28,....      
16ec0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
16ed0 20 20 20 20 20 2f 2f 2f 20 41 20 76 69 72 74 75       /// A virtu
16ee0 61 6c 20 74 61 62 6c 65 20 77 69 6c 6c 20 62 65  al table will be
16ef0 20 63 72 65 61 74 65 64 2e 20 20 54 68 65 20 61   created.  The a
16f00 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61  ction-specific a
16f10 72 67 75 6d 65 6e 74 73 20 61 72 65 0d 0a 20 20  rguments are..  
16f20 20 20 20 20 2f 2f 2f 20 74 68 65 20 74 61 62 6c      /// the tabl
16f30 65 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 6d  e name and the m
16f40 6f 64 75 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20  odule name...   
16f50 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
16f60 3e 0d 0a 20 20 20 20 20 20 43 72 65 61 74 65 56  >..      CreateV
16f70 74 61 62 6c 65 20 3d 20 32 39 2c 0d 0a 0d 0a 20  table = 29,.... 
16f80 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
16f90 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
16fa0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 77 69  virtual table wi
16fb0 6c 6c 20 62 65 20 64 72 6f 70 70 65 64 2e 20 20  ll be dropped.  
16fc0 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69  The action-speci
16fd0 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72  fic arguments ar
16fe0 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  e..      /// the
16ff0 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64 20   table name and 
17000 74 68 65 20 6d 6f 64 75 6c 65 20 6e 61 6d 65 2e  the module name.
17010 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
17020 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 72  mmary>..      Dr
17030 6f 70 56 74 61 62 6c 65 20 3d 20 33 30 2c 0d 0a  opVtable = 30,..
17040 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
17050 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
17060 20 41 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20   A SQL function 
17070 77 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64 2e 20  will be called. 
17080 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63   The action-spec
17090 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61  ific arguments a
170a0 72 65 20 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  re a..      /// 
170b0 6e 75 6c 6c 20 76 61 6c 75 65 20 61 6e 64 20 74  null value and t
170c0 68 65 20 66 75 6e 63 74 69 6f 6e 20 6e 61 6d 65  he function name
170d0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
170e0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 46  ummary>..      F
170f0 75 6e 63 74 69 6f 6e 20 3d 20 33 31 2c 0d 0a 0d  unction = 31,...
17100 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
17110 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
17120 41 20 73 61 76 65 70 6f 69 6e 74 20 77 69 6c 6c  A savepoint will
17130 20 62 65 20 63 72 65 61 74 65 64 2c 20 72 65 6c   be created, rel
17140 65 61 73 65 64 2c 20 6f 72 20 72 6f 6c 6c 65 64  eased, or rolled
17150 20 62 61 63 6b 2e 20 20 54 68 65 0d 0a 20 20 20   back.  The..   
17160 20 20 20 2f 2f 2f 20 61 63 74 69 6f 6e 2d 73 70     /// action-sp
17170 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73  ecific arguments
17180 20 61 72 65 20 74 68 65 20 6e 61 6d 65 20 6f 66   are the name of
17190 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 28   the operation (
171a0 42 45 47 49 4e 2c 0d 0a 20 20 20 20 20 20 2f 2f  BEGIN,..      //
171b0 2f 20 52 45 4c 45 41 53 45 2c 20 6f 72 20 52 4f  / RELEASE, or RO
171c0 4c 4c 42 41 43 4b 29 20 61 6e 64 20 74 68 65 20  LLBACK) and the 
171d0 73 61 76 65 70 6f 69 6e 74 20 6e 61 6d 65 2e 0d  savepoint name..
171e0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
171f0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 53 61 76  mary>..      Sav
17200 65 70 6f 69 6e 74 20 3d 20 33 32 2c 0d 0a 0d 0a  epoint = 32,....
17210 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
17220 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
17230 20 72 65 63 75 72 73 69 76 65 20 71 75 65 72 79   recursive query
17240 20 77 69 6c 6c 20 62 65 20 65 78 65 63 75 74 65   will be execute
17250 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73  d.  The action-s
17260 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74  pecific argument
17270 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 65  s..      /// are
17280 20 74 77 6f 20 6e 75 6c 6c 20 76 61 6c 75 65 73   two null values
17290 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
172a0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 52  ummary>..      R
172b0 65 63 75 72 73 69 76 65 20 3d 20 33 33 0d 0a 20  ecursive = 33.. 
172c0 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d   }....  /// <sum
172d0 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65  mary>..  /// The
172e0 20 72 65 74 75 72 6e 20 63 6f 64 65 20 66 6f 72   return code for
172f0 20 74 68 65 20 63 75 72 72 65 6e 74 20 63 61 6c   the current cal
17300 6c 20 69 6e 74 6f 20 74 68 65 20 61 75 74 68 6f  l into the autho
17310 72 69 7a 65 72 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f  rizer...  /// </
17320 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 70 75 62 6c  summary>..  publ
17330 69 63 20 65 6e 75 6d 20 53 51 4c 69 74 65 41 75  ic enum SQLiteAu
17340 74 68 6f 72 69 7a 65 72 52 65 74 75 72 6e 43 6f  thorizerReturnCo
17350 64 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 2f  de..  {..      /
17360 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
17370 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 63 74 69      /// The acti
17380 6f 6e 20 77 69 6c 6c 20 62 65 20 61 6c 6c 6f 77  on will be allow
17390 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
173a0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
173b0 20 4f 6b 20 3d 20 30 2c 0d 0a 0d 0a 20 20 20 20   Ok = 0,....    
173c0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
173d0 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f  .      /// The o
173e0 76 65 72 61 6c 6c 20 61 63 74 69 6f 6e 20 77 69  verall action wi
173f0 6c 6c 20 62 65 20 64 69 73 61 6c 6c 6f 77 65 64  ll be disallowed
17400 20 61 6e 64 20 61 6e 20 65 72 72 6f 72 20 6d 65   and an error me
17410 73 73 61 67 65 20 77 69 6c 6c 20 62 65 0d 0a 20  ssage will be.. 
17420 20 20 20 20 20 2f 2f 2f 20 72 65 74 75 72 6e 65       /// returne
17430 64 20 66 72 6f 6d 20 74 68 65 20 71 75 65 72 79  d from the query
17440 20 70 72 65 70 61 72 61 74 69 6f 6e 20 6d 65 74   preparation met
17450 68 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  hod...      /// 
17460 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
17470 20 20 44 65 6e 79 20 3d 20 31 2c 0d 0a 0d 0a 20    Deny = 1,.... 
17480 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
17490 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
174a0 65 20 73 70 65 63 69 66 69 63 20 61 63 74 69 6f  e specific actio
174b0 6e 20 77 69 6c 6c 20 62 65 20 64 69 73 61 6c 6c  n will be disall
174c0 6f 77 65 64 3b 20 68 6f 77 65 76 65 72 2c 20 74  owed; however, t
174d0 68 65 20 6f 76 65 72 61 6c 6c 20 61 63 74 69 6f  he overall actio
174e0 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77 69 6c  n..      /// wil
174f0 6c 20 63 6f 6e 74 69 6e 75 65 2e 20 20 54 68 65  l continue.  The
17500 20 65 78 61 63 74 20 65 66 66 65 63 74 73 20 6f   exact effects o
17510 66 20 74 68 69 73 20 72 65 74 75 72 6e 20 63 6f  f this return co
17520 64 65 20 76 61 72 79 20 64 65 70 65 6e 64 69 6e  de vary dependin
17530 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 6e 20  g..      /// on 
17540 74 68 65 20 73 70 65 63 69 66 69 63 20 61 63 74  the specific act
17550 69 6f 6e 2c 20 70 6c 65 61 73 65 20 72 65 66 65  ion, please refe
17560 72 20 74 6f 20 74 68 65 20 53 51 4c 69 74 65 20  r to the SQLite 
17570 63 6f 72 65 20 6c 69 62 72 61 72 79 0d 0a 20 20  core library..  
17580 20 20 20 20 2f 2f 2f 20 64 6f 63 75 6d 65 6e 74      /// document
17590 61 74 69 6f 6e 20 66 6f 72 20 66 75 74 68 65 72  ation for futher
175a0 20 64 65 74 61 69 6c 73 2e 0d 0a 20 20 20 20 20   details...     
175b0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
175c0 0a 20 20 20 20 20 20 49 67 6e 6f 72 65 20 3d 20  .      Ignore = 
175d0 32 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20  2..  }....  /// 
175e0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f  <summary>..  ///
175f0 20 43 6c 61 73 73 20 75 73 65 64 20 69 6e 74 65   Class used inte
17600 72 6e 61 6c 6c 79 20 74 6f 20 64 65 74 65 72 6d  rnally to determ
17610 69 6e 65 20 74 68 65 20 64 61 74 61 74 79 70 65  ine the datatype
17620 20 6f 66 20 61 20 63 6f 6c 75 6d 6e 20 69 6e 20   of a column in 
17630 61 20 72 65 73 75 6c 74 73 65 74 0d 0a 20 20 2f  a resultset..  /
17640 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
17650 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64   internal sealed
17660 20 63 6c 61 73 73 20 53 51 4c 69 74 65 54 79 70   class SQLiteTyp
17670 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 2f 2f 2f 20  e..  {..    /// 
17680 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
17690 2f 2f 20 54 68 65 20 44 62 54 79 70 65 20 6f 66  // The DbType of
176a0 20 74 68 65 20 63 6f 6c 75 6d 6e 2c 20 6f 72 20   the column, or 
176b0 44 62 54 79 70 65 2e 4f 62 6a 65 63 74 20 69 66  DbType.Object if
176c0 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65   it cannot be de
176d0 74 65 72 6d 69 6e 65 64 0d 0a 20 20 20 20 2f 2f  termined..    //
176e0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
176f0 20 20 69 6e 74 65 72 6e 61 6c 20 44 62 54 79 70    internal DbTyp
17700 65 20 54 79 70 65 3b 0d 0a 20 20 20 20 2f 2f 2f  e Type;..    ///
17710 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
17720 2f 2f 2f 20 54 68 65 20 61 66 66 69 6e 69 74 79  /// The affinity
17730 20 6f 66 20 61 20 63 6f 6c 75 6d 6e 2c 20 75 73   of a column, us
17740 65 64 20 66 6f 72 20 65 78 70 72 65 73 73 69 6f  ed for expressio
17750 6e 73 20 6f 72 20 77 68 65 6e 20 54 79 70 65 20  ns or when Type 
17760 69 73 20 44 62 54 79 70 65 2e 4f 62 6a 65 63 74  is DbType.Object
17770 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
17780 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ary>..    intern
17790 61 6c 20 54 79 70 65 41 66 66 69 6e 69 74 79 20  al TypeAffinity 
177a0 41 66 66 69 6e 69 74 79 3b 0d 0a 0d 0a 20 20 20  Affinity;....   
177b0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
177c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
177d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
177e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
177f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
17800 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
17810 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74  >..    /// Const
17820 72 75 63 74 73 20 61 20 64 65 66 61 75 6c 74 20  ructs a default 
17830 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73  instance of this
17840 20 74 79 70 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20   type...    /// 
17850 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
17860 70 75 62 6c 69 63 20 53 51 4c 69 74 65 54 79 70  public SQLiteTyp
17870 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  e()..    {..    
17880 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
17890 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
178a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
178b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
178c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
178d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
178e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
178f0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
17900 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75  .    /// Constru
17910 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20  cts an instance 
17920 6f 66 20 74 68 69 73 20 74 79 70 65 20 77 69 74  of this type wit
17930 68 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  h the specified 
17940 66 69 65 6c 64 20 76 61 6c 75 65 73 2e 0d 0a 20  field values... 
17950 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
17960 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
17970 6d 20 6e 61 6d 65 3d 22 61 66 66 69 6e 69 74 79  m name="affinity
17980 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
17990 74 79 70 65 20 61 66 66 69 6e 69 74 79 20 74 6f  type affinity to
179a0 20 75 73 65 20 66 6f 72 20 74 68 65 20 6e 65 77   use for the new
179b0 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20   instance...    
179c0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
179d0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
179e0 65 3d 22 74 79 70 65 22 3e 0d 0a 20 20 20 20 2f  e="type">..    /
179f0 2f 2f 20 54 68 65 20 64 61 74 61 62 61 73 65 20  // The database 
17a00 74 79 70 65 20 74 6f 20 75 73 65 20 66 6f 72 20  type to use for 
17a10 74 68 65 20 6e 65 77 20 69 6e 73 74 61 6e 63 65  the new instance
17a20 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
17a30 61 6d 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  am>..    public 
17a40 53 51 4c 69 74 65 54 79 70 65 28 0d 0a 20 20 20  SQLiteType(..   
17a50 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 20     TypeAffinity 
17a60 61 66 66 69 6e 69 74 79 2c 0d 0a 20 20 20 20 20  affinity,..     
17a70 20 44 62 54 79 70 65 20 74 79 70 65 0d 0a 20 20   DbType type..  
17a80 20 20 20 20 29 0d 0a 20 20 20 20 20 20 3a 20 74      )..      : t
17a90 68 69 73 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  his()..    {..  
17aa0 20 20 20 20 74 68 69 73 2e 41 66 66 69 6e 69 74      this.Affinit
17ab0 79 20 3d 20 61 66 66 69 6e 69 74 79 3b 0d 0a 20  y = affinity;.. 
17ac0 20 20 20 20 20 74 68 69 73 2e 54 79 70 65 20 3d       this.Type =
17ad0 20 74 79 70 65 3b 0d 0a 20 20 20 20 7d 0d 0a 20   type;..    }.. 
17ae0 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f   }....  ////////
17af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17b30 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 69 6e 74 65 72  /////....  inter
17b40 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73  nal sealed class
17b50 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
17b60 0d 0a 20 20 20 20 20 20 3a 20 44 69 63 74 69 6f  ..      : Dictio
17b70 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 53 51 4c  nary<string, SQL
17b80 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
17b90 3e 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 23 72  >..  {..      #r
17ba0 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61  egion Private Da
17bb0 74 61 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  ta..      privat
17bc0 65 20 44 69 63 74 69 6f 6e 61 72 79 3c 44 62 54  e Dictionary<DbT
17bd0 79 70 65 2c 20 53 51 4c 69 74 65 44 62 54 79 70  ype, SQLiteDbTyp
17be0 65 4d 61 70 70 69 6e 67 3e 20 72 65 76 65 72 73  eMapping> revers
17bf0 65 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65  e;..      #endre
17c00 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  gion....      //
17c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17c50 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
17c60 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
17c70 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20  Constructors..  
17c80 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
17c90 65 44 62 54 79 70 65 4d 61 70 28 29 0d 0a 20 20  eDbTypeMap()..  
17ca0 20 20 20 20 20 20 20 20 3a 20 62 61 73 65 28 6e          : base(n
17cb0 65 77 20 54 79 70 65 4e 61 6d 65 53 74 72 69 6e  ew TypeNameStrin
17cc0 67 43 6f 6d 70 61 72 65 72 28 29 29 0d 0a 20 20  gComparer())..  
17cd0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
17ce0 20 72 65 76 65 72 73 65 20 3d 20 6e 65 77 20 44   reverse = new D
17cf0 69 63 74 69 6f 6e 61 72 79 3c 44 62 54 79 70 65  ictionary<DbType
17d00 2c 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  , SQLiteDbTypeMa
17d10 70 70 69 6e 67 3e 28 29 3b 0d 0a 20 20 20 20 20  pping>();..     
17d20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
17d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d70 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70  /////....      p
17d80 75 62 6c 69 63 20 53 51 4c 69 74 65 44 62 54 79  ublic SQLiteDbTy
17d90 70 65 4d 61 70 28 0d 0a 20 20 20 20 20 20 20 20  peMap(..        
17da0 20 20 49 45 6e 75 6d 65 72 61 62 6c 65 3c 53 51    IEnumerable<SQ
17db0 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
17dc0 67 3e 20 63 6f 6c 6c 65 63 74 69 6f 6e 0d 0a 20  g> collection.. 
17dd0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
17de0 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a        : this()..
17df0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
17e00 20 20 20 41 64 64 28 63 6f 6c 6c 65 63 74 69 6f     Add(collectio
17e10 6e 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20  n);..      }..  
17e20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
17e30 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
17e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e80 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69  /....      #regi
17e90 6f 6e 20 53 79 73 74 65 6d 2e 43 6f 6c 6c 65 63  on System.Collec
17ea0 74 69 6f 6e 73 2e 47 65 6e 65 72 69 63 2e 44 69  tions.Generic.Di
17eb0 63 74 69 6f 6e 61 72 79 20 22 4f 76 65 72 72 69  ctionary "Overri
17ec0 64 65 73 22 0d 0a 20 20 20 20 20 20 70 75 62 6c  des"..      publ
17ed0 69 63 20 6e 65 77 20 69 6e 74 20 43 6c 65 61 72  ic new int Clear
17ee0 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  ()..      {..   
17ef0 20 20 20 20 20 20 20 69 6e 74 20 72 65 73 75 6c         int resul
17f00 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20  t = 0;....      
17f10 20 20 20 20 69 66 20 28 72 65 76 65 72 73 65 20      if (reverse 
17f20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
17f30 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
17f40 20 20 20 20 20 72 65 73 75 6c 74 20 2b 3d 20 72       result += r
17f50 65 76 65 72 73 65 2e 43 6f 75 6e 74 3b 0d 0a 20  everse.Count;.. 
17f60 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 76               rev
17f70 65 72 73 65 2e 43 6c 65 61 72 28 29 3b 0d 0a 20  erse.Clear();.. 
17f80 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
17f90 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 2b          result +
17fa0 3d 20 62 61 73 65 2e 43 6f 75 6e 74 3b 0d 0a 20  = base.Count;.. 
17fb0 20 20 20 20 20 20 20 20 20 62 61 73 65 2e 43 6c           base.Cl
17fc0 65 61 72 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ear();....      
17fd0 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c      return resul
17fe0 74 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20  t;..      }..   
17ff0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
18000 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
18010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18050 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f  ....      #regio
18060 6e 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  n SQLiteDbTypeMa
18070 70 70 69 6e 67 20 48 65 6c 70 65 72 20 4d 65 74  pping Helper Met
18080 68 6f 64 73 0d 0a 20 20 20 20 20 20 70 75 62 6c  hods..      publ
18090 69 63 20 76 6f 69 64 20 41 64 64 28 0d 0a 20 20  ic void Add(..  
180a0 20 20 20 20 20 20 20 20 49 45 6e 75 6d 65 72 61          IEnumera
180b0 62 6c 65 3c 53 51 4c 69 74 65 44 62 54 79 70 65  ble<SQLiteDbType
180c0 4d 61 70 70 69 6e 67 3e 20 63 6f 6c 6c 65 63 74  Mapping> collect
180d0 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 29  ion..          )
180e0 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
180f0 20 20 20 20 20 69 66 20 28 63 6f 6c 6c 65 63 74       if (collect
18100 69 6f 6e 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ion == null)..  
18110 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
18120 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74 4e 75  w new ArgumentNu
18130 6c 6c 45 78 63 65 70 74 69 6f 6e 28 22 63 6f 6c  llException("col
18140 6c 65 63 74 69 6f 6e 22 29 3b 0d 0a 0d 0a 20 20  lection");....  
18150 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20          foreach 
18160 28 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70  (SQLiteDbTypeMap
18170 70 69 6e 67 20 69 74 65 6d 20 69 6e 20 63 6f 6c  ping item in col
18180 6c 65 63 74 69 6f 6e 29 0d 0a 20 20 20 20 20 20  lection)..      
18190 20 20 20 20 20 20 20 20 41 64 64 28 69 74 65 6d          Add(item
181a0 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  );..      }.... 
181b0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
181c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
181d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
181e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
181f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
18200 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20 76  ..      public v
18210 6f 69 64 20 41 64 64 28 53 51 4c 69 74 65 44 62  oid Add(SQLiteDb
18220 54 79 70 65 4d 61 70 70 69 6e 67 20 69 74 65 6d  TypeMapping item
18230 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
18240 20 20 20 20 20 20 69 66 20 28 69 74 65 6d 20 3d        if (item =
18250 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
18260 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
18270 20 41 72 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63   ArgumentNullExc
18280 65 70 74 69 6f 6e 28 22 69 74 65 6d 22 29 3b 0d  eption("item");.
18290 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  ...          if 
182a0 28 69 74 65 6d 2e 74 79 70 65 4e 61 6d 65 20 3d  (item.typeName =
182b0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
182c0 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
182d0 20 41 72 67 75 6d 65 6e 74 45 78 63 65 70 74 69   ArgumentExcepti
182e0 6f 6e 28 22 69 74 65 6d 20 74 79 70 65 20 6e 61  on("item type na
182f0 6d 65 20 63 61 6e 6e 6f 74 20 62 65 20 6e 75 6c  me cannot be nul
18300 6c 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  l");....        
18310 20 20 62 61 73 65 2e 41 64 64 28 69 74 65 6d 2e    base.Add(item.
18320 74 79 70 65 4e 61 6d 65 2c 20 69 74 65 6d 29 3b  typeName, item);
18330 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
18340 20 28 69 74 65 6d 2e 70 72 69 6d 61 72 79 29 0d   (item.primary).
18350 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
18360 65 76 65 72 73 65 2e 41 64 64 28 69 74 65 6d 2e  everse.Add(item.
18370 64 61 74 61 54 79 70 65 2c 20 69 74 65 6d 29 3b  dataType, item);
18380 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20  ..      }..     
18390 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
183a0 20 20 20 20 20 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 2f 2f 2f 2f 2f  ////////////////
183d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
183e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
183f0 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20  ..      #region 
18400 44 62 54 79 70 65 20 48 65 6c 70 65 72 20 4d 65  DbType Helper Me
18410 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 70 75 62  thods..      pub
18420 6c 69 63 20 62 6f 6f 6c 20 43 6f 6e 74 61 69 6e  lic bool Contain
18430 73 4b 65 79 28 44 62 54 79 70 65 20 6b 65 79 29  sKey(DbType key)
18440 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
18450 20 20 20 20 20 69 66 20 28 72 65 76 65 72 73 65       if (reverse
18460 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
18470 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
18480 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
18490 20 20 20 20 72 65 74 75 72 6e 20 72 65 76 65 72      return rever
184a0 73 65 2e 43 6f 6e 74 61 69 6e 73 4b 65 79 28 6b  se.ContainsKey(k
184b0 65 79 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  ey);..      }...
184c0 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
184d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
184e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
184f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18510 0d 0a 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63  ....      public
18520 20 62 6f 6f 6c 20 54 72 79 47 65 74 56 61 6c 75   bool TryGetValu
18530 65 28 44 62 54 79 70 65 20 6b 65 79 2c 20 6f 75  e(DbType key, ou
18540 74 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  t SQLiteDbTypeMa
18550 70 70 69 6e 67 20 76 61 6c 75 65 29 0d 0a 20 20  pping value)..  
18560 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
18570 20 69 66 20 28 72 65 76 65 72 73 65 20 3d 3d 20   if (reverse == 
18580 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
18590 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
185a0 20 20 76 61 6c 75 65 20 3d 20 6e 75 6c 6c 3b 0d    value = null;.
185b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
185c0 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
185d0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
185e0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65         return re
185f0 76 65 72 73 65 2e 54 72 79 47 65 74 56 61 6c 75  verse.TryGetValu
18600 65 28 6b 65 79 2c 20 6f 75 74 20 76 61 6c 75 65  e(key, out value
18610 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  );..      }.... 
18620 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
18630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
18670 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20 62  ..      public b
18680 6f 6f 6c 20 52 65 6d 6f 76 65 28 44 62 54 79 70  ool Remove(DbTyp
18690 65 20 6b 65 79 29 0d 0a 20 20 20 20 20 20 7b 0d  e key)..      {.
186a0 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72  .          if (r
186b0 65 76 65 72 73 65 20 3d 3d 20 6e 75 6c 6c 29 0d  everse == null).
186c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
186d0 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
186e0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
186f0 20 72 65 76 65 72 73 65 2e 52 65 6d 6f 76 65 28   reverse.Remove(
18700 6b 65 79 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  key);..      }..
18710 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
18720 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f  ..  }....  /////
18730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18770 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 69 6e  ////////....  in
18780 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c  ternal sealed cl
18790 61 73 73 20 53 51 4c 69 74 65 44 62 54 79 70 65  ass SQLiteDbType
187a0 4d 61 70 70 69 6e 67 0d 0a 20 20 7b 0d 0a 20 20  Mapping..  {..  
187b0 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74    internal SQLit
187c0 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 0d  eDbTypeMapping(.
187d0 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20  .        string 
187e0 6e 65 77 54 79 70 65 4e 61 6d 65 2c 0d 0a 20 20  newTypeName,..  
187f0 20 20 20 20 20 20 44 62 54 79 70 65 20 6e 65 77        DbType new
18800 44 61 74 61 54 79 70 65 2c 0d 0a 20 20 20 20 20  DataType,..     
18810 20 20 20 62 6f 6f 6c 20 6e 65 77 50 72 69 6d 61     bool newPrima
18820 72 79 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20  ry..        ).. 
18830 20 20 20 7b 0d 0a 20 20 20 20 20 20 74 79 70 65     {..      type
18840 4e 61 6d 65 20 3d 20 6e 65 77 54 79 70 65 4e 61  Name = newTypeNa
18850 6d 65 3b 0d 0a 20 20 20 20 20 20 64 61 74 61 54  me;..      dataT
18860 79 70 65 20 3d 20 6e 65 77 44 61 74 61 54 79 70  ype = newDataTyp
18870 65 3b 0d 0a 20 20 20 20 20 20 70 72 69 6d 61 72  e;..      primar
18880 79 20 3d 20 6e 65 77 50 72 69 6d 61 72 79 3b 0d  y = newPrimary;.
18890 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 69 6e  .    }....    in
188a0 74 65 72 6e 61 6c 20 73 74 72 69 6e 67 20 74 79  ternal string ty
188b0 70 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 69 6e 74  peName;..    int
188c0 65 72 6e 61 6c 20 44 62 54 79 70 65 20 64 61 74  ernal DbType dat
188d0 61 54 79 70 65 3b 0d 0a 20 20 20 20 69 6e 74 65  aType;..    inte
188e0 72 6e 61 6c 20 62 6f 6f 6c 20 70 72 69 6d 61 72  rnal bool primar
188f0 79 3b 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 6e 74  y;..  }....  int
18900 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61  ernal sealed cla
18910 73 73 20 54 79 70 65 4e 61 6d 65 53 74 72 69 6e  ss TypeNameStrin
18920 67 43 6f 6d 70 61 72 65 72 20 3a 20 49 45 71 75  gComparer : IEqu
18930 61 6c 69 74 79 43 6f 6d 70 61 72 65 72 3c 73 74  alityComparer<st
18940 72 69 6e 67 3e 0d 0a 20 20 7b 0d 0a 20 20 20 20  ring>..  {..    
18950 23 72 65 67 69 6f 6e 20 49 45 71 75 61 6c 69 74  #region IEqualit
18960 79 43 6f 6d 70 61 72 65 72 3c 73 74 72 69 6e 67  yComparer<string
18970 3e 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 70  > Members..    p
18980 75 62 6c 69 63 20 62 6f 6f 6c 20 45 71 75 61 6c  ublic bool Equal
18990 73 28 0d 0a 20 20 20 20 20 20 73 74 72 69 6e 67  s(..      string
189a0 20 6c 65 66 74 2c 0d 0a 20 20 20 20 20 20 73 74   left,..      st
189b0 72 69 6e 67 20 72 69 67 68 74 0d 0a 20 20 20 20  ring right..    
189c0 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20    )..    {..    
189d0 20 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67 2e    return String.
189e0 45 71 75 61 6c 73 28 6c 65 66 74 2c 20 72 69 67  Equals(left, rig
189f0 68 74 2c 20 53 74 72 69 6e 67 43 6f 6d 70 61 72  ht, StringCompar
18a00 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f  ison.OrdinalIgno
18a10 72 65 43 61 73 65 29 3b 0d 0a 20 20 20 20 7d 0d  reCase);..    }.
18a20 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
18a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a70 2f 2f 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63  //....    public
18a80 20 69 6e 74 20 47 65 74 48 61 73 68 43 6f 64 65   int GetHashCode
18a90 28 0d 0a 20 20 20 20 20 20 73 74 72 69 6e 67 20  (..      string 
18aa0 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 29 0d 0a  value..      )..
18ab0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 0d      {..      //.
18ac0 0a 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20  .      // NOTE: 
18ad0 54 68 65 20 6f 6e 6c 79 20 74 68 69 6e 67 20 74  The only thing t
18ae0 68 61 74 20 77 65 20 6d 75 73 74 20 67 75 61 72  hat we must guar
18af0 61 6e 74 65 65 20 68 65 72 65 2c 20 61 63 63 6f  antee here, acco
18b00 72 64 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 20  rding..      // 
18b10 20 20 20 20 20 20 74 6f 20 74 68 65 20 4d 53 44        to the MSD
18b20 4e 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20  N documentation 
18b30 66 6f 72 20 49 45 71 75 61 6c 69 74 79 43 6f 6d  for IEqualityCom
18b40 70 61 72 65 72 2c 20 69 73 0d 0a 20 20 20 20 20  parer, is..     
18b50 20 2f 2f 20 20 20 20 20 20 20 74 68 61 74 20 66   //       that f
18b60 6f 72 20 74 77 6f 20 67 69 76 65 6e 20 73 74 72  or two given str
18b70 69 6e 67 73 2c 20 69 66 20 45 71 75 61 6c 73 20  ings, if Equals 
18b80 72 65 74 75 72 6e 20 74 72 75 65 20 74 68 65 6e  return true then
18b90 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20  ..      //      
18ba0 20 74 68 65 20 74 77 6f 20 73 74 72 69 6e 67 73   the two strings
18bb0 20 6d 75 73 74 20 68 61 73 68 20 74 6f 20 74 68   must hash to th
18bc0 65 20 73 61 6d 65 20 76 61 6c 75 65 2e 0d 0a 20  e same value... 
18bd0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 69       //..      i
18be0 66 20 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c  f (value != null
18bf0 29 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  )..#if !PLATFORM
18c00 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
18c10 4b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  K..        retur
18c20 6e 20 76 61 6c 75 65 2e 54 6f 4c 6f 77 65 72 49  n value.ToLowerI
18c30 6e 76 61 72 69 61 6e 74 28 29 2e 47 65 74 48 61  nvariant().GetHa
18c40 73 68 43 6f 64 65 28 29 3b 0d 0a 23 65 6c 73 65  shCode();..#else
18c50 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
18c60 20 76 61 6c 75 65 2e 54 6f 4c 6f 77 65 72 28 29   value.ToLower()
18c70 2e 47 65 74 48 61 73 68 43 6f 64 65 28 29 3b 0d  .GetHashCode();.
18c80 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 65  .#endif..      e
18c90 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 74 68 72  lse..        thr
18ca0 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74 4e  ow new ArgumentN
18cb0 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28 22 76 61  ullException("va
18cc0 6c 75 65 22 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20  lue");..    }.. 
18cd0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20     #endregion.. 
18ce0 20 7d 0d 0a 7d 0d 0a                              }..}..