wasCSharpSQLite – Rev 1

Subversion Repositories:
Rev:
using System.Diagnostics;
using System;

namespace Community.CsharpSqlite
{
  public partial class Sqlite3
  {
    /***** This file contains automatically generated code ******
    **
    ** The code in this file has been automatically generated by
    **
    **   sqlite/tool/mkkeywordhash.c
    **
    ** The code in this file implements a function that determines whether
    ** or not a given identifier is really an SQL keyword.  The same thing
    ** might be implemented more directly using a hand-written hash table.
    ** But by using this automatically generated code, the size of the code
    ** is substantially reduced.  This is important for embedded applications
    ** on platforms with limited memory.
    *************************************************************************
    **  Included in SQLite3 port to C#-SQLite;  2008 Noah B Hart
    **  C#-SQLite is an independent reimplementation of the SQLite software library
    **
    **  SQLITE_SOURCE_ID: 2010-08-23 18:52:01 42537b60566f288167f1b5864a5435986838e3a3
    **
    *************************************************************************
    */
    /* Hash score: 175 */
      /* zText[] encodes 811 bytes of keywords in 541 bytes */
      /*   REINDEXEDESCAPEACHECKEYBEFOREIGNOREGEXPLAINSTEADDATABASELECT       */
      /*   ABLEFTHENDEFERRABLELSEXCEPTRANSACTIONATURALTERAISEXCLUSIVE         */
      /*   XISTSAVEPOINTERSECTRIGGEREFERENCESCONSTRAINTOFFSETEMPORARY         */
      /*   UNIQUERYATTACHAVINGROUPDATEBEGINNERELEASEBETWEENOTNULLIKE          */
      /*   CASCADELETECASECOLLATECREATECURRENT_DATEDETACHIMMEDIATEJOIN        */
      /*   SERTMATCHPLANALYZEPRAGMABORTVALUESVIRTUALIMITWHENWHERENAME         */
      /*   AFTEREPLACEANDEFAULTAUTOINCREMENTCASTCOLUMNCOMMITCONFLICTCROSS     */
      /*   CURRENT_TIMESTAMPRIMARYDEFERREDISTINCTDROPFAILFROMFULLGLOBYIF      */
      /*   ISNULLORDERESTRICTOUTERIGHTROLLBACKROWUNIONUSINGVACUUMVIEW         */
      /*   INITIALLY                                                          */
static string zText = new string( new char[540]  {
'R','E','I','N','D','E','X','E','D','E','S','C','A','P','E','A','C','H',
'E','C','K','E','Y','B','E','F','O','R','E','I','G','N','O','R','E','G',
'E','X','P','L','A','I','N','S','T','E','A','D','D','A','T','A','B','A',
'S','E','L','E','C','T','A','B','L','E','F','T','H','E','N','D','E','F',
'E','R','R','A','B','L','E','L','S','E','X','C','E','P','T','R','A','N',
'S','A','C','T','I','O','N','A','T','U','R','A','L','T','E','R','A','I',
'S','E','X','C','L','U','S','I','V','E','X','I','S','T','S','A','V','E',
'P','O','I','N','T','E','R','S','E','C','T','R','I','G','G',
#if !SQLITE_OMIT_TRIGGER 
'E',
#else
'\0',
#endif
'R',
#if !SQLITE_OMIT_FOREIGN_KEY
'E',
#else
'\0',
#endif
'F','E','R','E','N','C','E','S','C','O','N','S','T','R','A','I','N','T',
'O','F','F','S','E','T','E','M','P','O','R','A','R','Y','U','N','I','Q',
'U','E','R','Y','A','T','T','A','C','H','A','V','I','N','G','R','O','U',
'P','D','A','T','E','B','E','G','I','N','N','E','R','E','L','E','A','S',
'E','B','E','T','W','E','E','N','O','T','N','U','L','L','I','K','E','C',
'A','S','C','A','D','E','L','E','T','E','C','A','S','E','C','O','L','L',
'A','T','E','C','R','E','A','T','E','C','U','R','R','E','N','T','_','D',
'A','T','E','D','E','T','A','C','H','I','M','M','E','D','I','A','T','E',
'J','O','I','N','S','E','R','T','M','A','T','C','H','P','L','A','N','A',
'L','Y','Z','E','P','R','A','G','M','A','B','O','R','T','V','A','L','U',
'E','S','V','I','R','T','U','A','L','I','M','I','T','W','H','E','N','W',
'H','E','R','E','N','A','M','E','A','F','T','E','R','E','P','L','A','C',
'E','A','N','D','E','F','A','U','L','T','A','U','T','O','I','N','C','R',
'E','M','E','N','T','C','A','S','T','C','O','L','U','M','N','C','O','M',
'M','I','T','C','O','N','F','L','I','C','T','C','R','O','S','S','C','U',
'R','R','E','N','T','_','T','I','M','E','S','T','A','M','P','R','I','M',
'A','R','Y','D','E','F','E','R','R','E','D','I','S','T','I','N','C','T',
'D','R','O','P','F','A','I','L','F','R','O','M','F','U','L','L','G','L',
'O','B','Y','I','F','I','S','N','U','L','L','O','R','D','E','R','E','S',
'T','R','I','C','T','O','U','T','E','R','I','G','H','T','R','O','L','L',
'B','A','C','K','R','O','W','U','N','I','O','N','U','S','I','N','G','V',
'A','C','U','U','M','V','I','E','W','I','N','I','T','I','A','L','L','Y',
} );

static      byte[] aHash = { //aHash[127]
      72, 101, 114,  70,   0,  45,   0,   0,  78,   0,  73,   0,   0,
      42,  12,  74,  15,   0, 113,  81,  50, 108,   0,  19,   0,   0,
     118,   0, 116, 111,   0,  22,  89,   0,   9,   0,   0,  66,  67,
       0,  65,   6,   0,  48,  86,  98,   0, 115,  97,   0,   0,  44,
       0,  99,  24,   0,  17,   0, 119,  49,  23,   0,   5, 106,  25,
      92,   0,   0, 121, 102,  56, 120,  53,  28,  51,   0,  87,   0,
      96,  26,   0,  95,   0,   0,   0,  91,  88,  93,  84, 105,  14,
      39, 104,   0,  77,   0,  18,  85, 107,  32,   0, 117,  76, 109,
      58,  46,  80,   0,   0,  90,  40,   0, 112,   0,  36,   0,   0,
      29,   0,  82,  59,  60,   0,  20,  57,   0,  52,
};
static      byte[] aNext = { //aNext[121]
       0,   0,   0,   0,   4,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   2,   0,   0,   0,   0,   0,   0,  13,   0,   0,   0,   0,
       0,   7,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,  33,   0,  21,   0,   0,   0,  43,   3,  47,
       0,   0,   0,   0,  30,   0,  54,   0,  38,   0,   0,   0,   1,
      62,   0,   0,  63,   0,  41,   0,   0,   0,   0,   0,   0,   0,
      61,   0,   0,   0,   0,  31,  55,  16,  34,  10,   0,   0,   0,
       0,   0,   0,   0,  11,  68,  75,   0,   8,   0, 100,  94,   0,
     103,   0,  83,   0,  71,   0,   0, 110,  27,  37,  69,  79,   0,
      35,  64,   0,   0,
};
static      byte[] aLen = { //aLen[121]
       7,   7,   5,   4,   6,   4,   5,   3,   6,   7,   3,   6,   6,
       7,   7,   3,   8,   2,   6,   5,   4,   4,   3,  10,   4,   6,
      11,   6,   2,   7,   5,   5,   9,   6,   9,   9,   7,  10,  10,
       4,   6,   2,   3,   9,   4,   2,   6,   5,   6,   6,   5,   6,
       5,   5,   7,   7,   7,   3,   2,   4,   4,   7,   3,   6,   4,
       7,   6,  12,   6,   9,   4,   6,   5,   4,   7,   6,   5,   6,
       7,   5,   4,   5,   6,   5,   7,   3,   7,  13,   2,   2,   4,
       6,   6,   8,   5,  17,  12,   7,   8,   8,   2,   4,   4,   4,
       4,   4,   2,   2,   6,   5,   8,   5,   5,   8,   3,   5,   5,
       6,   4,   9,   3,
};
      static int[] aOffset = { //aOffset[121]
       0,   2,   2,   8,   9,  14,  16,  20,  23,  25,  25,  29,  33,
      36,  41,  46,  48,  53,  54,  59,  62,  65,  67,  69,  78,  81,
      86,  91,  95,  96, 101, 105, 109, 117, 122, 128, 136, 142, 152,
     159, 162, 162, 165, 167, 167, 171, 176, 179, 184, 189, 194, 197,
     203, 206, 210, 217, 223, 223, 223, 226, 229, 233, 234, 238, 244,
     248, 255, 261, 273, 279, 288, 290, 296, 301, 303, 310, 315, 320,
     326, 332, 337, 341, 344, 350, 354, 361, 363, 370, 372, 374, 383,
     387, 393, 399, 407, 412, 412, 428, 435, 442, 443, 450, 454, 458,
     462, 466, 469, 471, 473, 479, 483, 491, 495, 500, 508, 511, 516,
     521, 527, 531, 536,
};
static      byte[] aCode = { //aCode[121
    TK_REINDEX,    TK_INDEXED,    TK_INDEX,      TK_DESC,       TK_ESCAPE,     
    TK_EACH,       TK_CHECK,      TK_KEY,        TK_BEFORE,     TK_FOREIGN,    
    TK_FOR,        TK_IGNORE,     TK_LIKE_KW,    TK_EXPLAIN,    TK_INSTEAD,    
    TK_ADD,        TK_DATABASE,   TK_AS,         TK_SELECT,     TK_TABLE,      
    TK_JOIN_KW,    TK_THEN,       TK_END,        TK_DEFERRABLE, TK_ELSE,       
    TK_EXCEPT,     TK_TRANSACTION,TK_ACTION,     TK_ON,         TK_JOIN_KW,    
    TK_ALTER,      TK_RAISE,      TK_EXCLUSIVE,  TK_EXISTS,     TK_SAVEPOINT,  
    TK_INTERSECT,  TK_TRIGGER,    TK_REFERENCES, TK_CONSTRAINT, TK_INTO,       
    TK_OFFSET,     TK_OF,         TK_SET,        TK_TEMP,       TK_TEMP,       
    TK_OR,         TK_UNIQUE,     TK_QUERY,      TK_ATTACH,     TK_HAVING,     
    TK_GROUP,      TK_UPDATE,     TK_BEGIN,      TK_JOIN_KW,    TK_RELEASE,    
    TK_BETWEEN,    TK_NOTNULL,    TK_NOT,        TK_NO,         TK_NULL,       
    TK_LIKE_KW,    TK_CASCADE,    TK_ASC,        TK_DELETE,     TK_CASE,       
    TK_COLLATE,    TK_CREATE,     TK_CTIME_KW,   TK_DETACH,     TK_IMMEDIATE,  
    TK_JOIN,       TK_INSERT,     TK_MATCH,      TK_PLAN,       TK_ANALYZE,    
    TK_PRAGMA,     TK_ABORT,      TK_VALUES,     TK_VIRTUAL,    TK_LIMIT,      
    TK_WHEN,       TK_WHERE,      TK_RENAME,     TK_AFTER,      TK_REPLACE,    
    TK_AND,        TK_DEFAULT,    TK_AUTOINCR,   TK_TO,         TK_IN,         
    TK_CAST,       TK_COLUMNKW,   TK_COMMIT,     TK_CONFLICT,   TK_JOIN_KW,    
    TK_CTIME_KW,   TK_CTIME_KW,   TK_PRIMARY,    TK_DEFERRED,   TK_DISTINCT,   
    TK_IS,         TK_DROP,       TK_FAIL,       TK_FROM,       TK_JOIN_KW,    
    TK_LIKE_KW,    TK_BY,         TK_IF,         TK_ISNULL,     TK_ORDER,      
    TK_RESTRICT,   TK_JOIN_KW,    TK_JOIN_KW,    TK_ROLLBACK,   TK_ROW,        
    TK_UNION,      TK_USING,      TK_VACUUM,     TK_VIEW,       TK_INITIALLY,  
    TK_ALL,        
};
static int keywordCode( string z, int iOffset, int n )
{
  int h, i;
      if ( n < 2 )
        return TK_ID;
      h = ( ( sqlite3UpperToLower[z[iOffset + 0]] ) * 4 ^//(charMap(z[iOffset+0]) * 4) ^
      ( sqlite3UpperToLower[z[iOffset + n - 1]] * 3 ) ^ //(charMap(z[iOffset+n - 1]) * 3) ^
      n ) % 127;
      for ( i = ( aHash[h] ) - 1; i >= 0; i = ( aNext[i] ) - 1 )
      {
        if ( aLen[i] == n && String.Compare( zText, aOffset[i], z, iOffset, n, StringComparison.OrdinalIgnoreCase ) == 0 )
        {
          testcase( i == 0 ); /* REINDEX */
          testcase( i == 1 ); /* INDEXED */
          testcase( i == 2 ); /* INDEX */
          testcase( i == 3 ); /* DESC */
          testcase( i == 4 ); /* ESCAPE */
          testcase( i == 5 ); /* EACH */
          testcase( i == 6 ); /* CHECK */
          testcase( i == 7 ); /* KEY */
          testcase( i == 8 ); /* BEFORE */
          testcase( i == 9 ); /* FOREIGN */
          testcase( i == 10 ); /* FOR */
          testcase( i == 11 ); /* IGNORE */
          testcase( i == 12 ); /* REGEXP */
          testcase( i == 13 ); /* EXPLAIN */
          testcase( i == 14 ); /* INSTEAD */
          testcase( i == 15 ); /* ADD */
          testcase( i == 16 ); /* DATABASE */
          testcase( i == 17 ); /* AS */
          testcase( i == 18 ); /* SELECT */
          testcase( i == 19 ); /* TABLE */
          testcase( i == 20 ); /* LEFT */
          testcase( i == 21 ); /* THEN */
          testcase( i == 22 ); /* END */
          testcase( i == 23 ); /* DEFERRABLE */
          testcase( i == 24 ); /* ELSE */
          testcase( i == 25 ); /* EXCEPT */
          testcase( i == 26 ); /* TRANSACTION */
          testcase( i == 27 ); /* ACTION */
          testcase( i == 28 ); /* ON */
          testcase( i == 29 ); /* NATURAL */
          testcase( i == 30 ); /* ALTER */
          testcase( i == 31 ); /* RAISE */
          testcase( i == 32 ); /* EXCLUSIVE */
          testcase( i == 33 ); /* EXISTS */
          testcase( i == 34 ); /* SAVEPOINT */
          testcase( i == 35 ); /* INTERSECT */
          testcase( i == 36 ); /* TRIGGER */
          testcase( i == 37 ); /* REFERENCES */
          testcase( i == 38 ); /* CONSTRAINT */
          testcase( i == 39 ); /* INTO */
          testcase( i == 40 ); /* OFFSET */
          testcase( i == 41 ); /* OF */
          testcase( i == 42 ); /* SET */
          testcase( i == 43 ); /* TEMPORARY */
          testcase( i == 44 ); /* TEMP */
          testcase( i == 45 ); /* OR */
          testcase( i == 46 ); /* UNIQUE */
          testcase( i == 47 ); /* QUERY */
          testcase( i == 48 ); /* ATTACH */
          testcase( i == 49 ); /* HAVING */
          testcase( i == 50 ); /* GROUP */
          testcase( i == 51 ); /* UPDATE */
          testcase( i == 52 ); /* BEGIN */
          testcase( i == 53 ); /* INNER */
          testcase( i == 54 ); /* RELEASE */
          testcase( i == 55 ); /* BETWEEN */
          testcase( i == 56 ); /* NOTNULL */
          testcase( i == 57 ); /* NOT */
          testcase( i == 58 ); /* NO */
          testcase( i == 59 ); /* NULL */
          testcase( i == 60 ); /* LIKE */
          testcase( i == 61 ); /* CASCADE */
          testcase( i == 62 ); /* ASC */
          testcase( i == 63 ); /* DELETE */
          testcase( i == 64 ); /* CASE */
          testcase( i == 65 ); /* COLLATE */
          testcase( i == 66 ); /* CREATE */
          testcase( i == 67 ); /* CURRENT_DATE */
          testcase( i == 68 ); /* DETACH */
          testcase( i == 69 ); /* IMMEDIATE */
          testcase( i == 70 ); /* JOIN */
          testcase( i == 71 ); /* INSERT */
          testcase( i == 72 ); /* MATCH */
          testcase( i == 73 ); /* PLAN */
          testcase( i == 74 ); /* ANALYZE */
          testcase( i == 75 ); /* PRAGMA */
          testcase( i == 76 ); /* ABORT */
          testcase( i == 77 ); /* VALUES */
          testcase( i == 78 ); /* VIRTUAL */
          testcase( i == 79 ); /* LIMIT */
          testcase( i == 80 ); /* WHEN */
          testcase( i == 81 ); /* WHERE */
          testcase( i == 82 ); /* RENAME */
          testcase( i == 83 ); /* AFTER */
          testcase( i == 84 ); /* REPLACE */
          testcase( i == 85 ); /* AND */
          testcase( i == 86 ); /* DEFAULT */
          testcase( i == 87 ); /* AUTOINCREMENT */
          testcase( i == 88 ); /* TO */
          testcase( i == 89 ); /* IN */
          testcase( i == 90 ); /* CAST */
          testcase( i == 91 ); /* COLUMN */
          testcase( i == 92 ); /* COMMIT */
          testcase( i == 93 ); /* CONFLICT */
          testcase( i == 94 ); /* CROSS */
          testcase( i == 95 ); /* CURRENT_TIMESTAMP */
          testcase( i == 96 ); /* CURRENT_TIME */
          testcase( i == 97 ); /* PRIMARY */
          testcase( i == 98 ); /* DEFERRED */
          testcase( i == 99 ); /* DISTINCT */
          testcase( i == 100 ); /* IS */
          testcase( i == 101 ); /* DROP */
          testcase( i == 102 ); /* FAIL */
          testcase( i == 103 ); /* FROM */
          testcase( i == 104 ); /* FULL */
          testcase( i == 105 ); /* GLOB */
          testcase( i == 106 ); /* BY */
          testcase( i == 107 ); /* IF */
          testcase( i == 108 ); /* ISNULL */
          testcase( i == 109 ); /* ORDER */
          testcase( i == 110 ); /* RESTRICT */
          testcase( i == 111 ); /* OUTER */
          testcase( i == 112 ); /* RIGHT */
          testcase( i == 113 ); /* ROLLBACK */
          testcase( i == 114 ); /* ROW */
          testcase( i == 115 ); /* UNION */
          testcase( i == 116 ); /* USING */
          testcase( i == 117 ); /* VACUUM */
          testcase( i == 118 ); /* VIEW */
          testcase( i == 119 ); /* INITIALLY */
          testcase( i == 120 ); /* ALL */
          return aCode[i];
        }
      }
      return TK_ID;
    }
    static int sqlite3KeywordCode( string z, int n )
    {
      return keywordCode( z, 0, n );
    }
    public const int SQLITE_N_KEYWORD = 121;//#define SQLITE_N_KEYWORD 121
  }
}