Пример #1
0
        /* Methods for the fuzzer module */
        static int fuzzerConnect(
            sqlite3 db,
            object pAux,
            int argc, string[] argv,
            out sqlite3_vtab ppVtab,
            out string pzErr
            )
        {
            fuzzer_vtab pNew;
            int         n;

            if (!argv[1].StartsWith("temp", StringComparison.CurrentCultureIgnoreCase))
            {
                pzErr  = sqlite3_mprintf("%s virtual tables must be TEMP", argv[0]);
                ppVtab = null;
                return(SQLITE_ERROR);
            }
            //n = strlen(argv[0]) + 1;
            pNew = new fuzzer_vtab();//sqlite3_malloc( sizeof(pNew) + n );
            //if( pNew==0 ) return SQLITE_NOMEM;
            //pNew.zClassName = (char*)&pNew[1];
            pNew.zClassName = argv[0];//memcpy(pNew.zClassName, argv[0], n);
            sqlite3_declare_vtab(db, "CREATE TABLE x(word,distance,cFrom,cTo,cost)");
            //memset(pNew, 0, sizeof(pNew));
            pzErr  = "";
            ppVtab = pNew;
            return(SQLITE_OK);
        }
Пример #2
0
        /* Note that for this virtual table, the xCreate and xConnect
        ** methods are identical. */

        static int fuzzerDisconnect(ref object pVtab)
        {
            fuzzer_vtab p = (fuzzer_vtab)pVtab;

            Debug.Assert(p.nCursor == 0);
            do
            {
                while (p.pRule != null)
                {
                    fuzzer_rule pRule = p.pRule;
                    p.pRule = pRule.pNext;
                    pRule   = null;//sqlite3_free(pRule);
                }
                p.pRule    = p.pNewRule;
                p.pNewRule = null;
            } while (p.pRule != null);
            pVtab = null;//sqlite3_free(p);
            return(SQLITE_OK);
        }
Пример #3
0
        /*
        ** Open a new fuzzer cursor.
        */
        static int fuzzerOpen(sqlite3_vtab pVTab, out sqlite3_vtab_cursor ppCursor)
        {
            fuzzer_vtab   p = (fuzzer_vtab)pVTab;
            fuzzer_cursor pCur;

            pCur = new fuzzer_cursor();//= sqlite3_malloc( sizeof(pCur) );
            ///if( pCur==0 ) return SQLITE_NOMEM;
            //memset(pCur, 0, sizeof(pCur));
            pCur.pVtab = p;
            ppCursor   = pCur;
            if (p.nCursor == 0 && p.pNewRule != null)
            {
                uint          i;
                fuzzer_rule   pX;
                fuzzer_rule[] a = new fuzzer_rule[15];
                //for(i=0; i<sizeof(a)/sizeof(a[0]); i++) a[i] = 0;
                while ((pX = p.pNewRule) != null)
                {
                    p.pNewRule = pX.pNext;
                    pX.pNext   = null;
                    for (i = 0; a[i] != null && i < a.Length; i++)//<sizeof(a)/sizeof(a[0])-1; i++)
                    {
                        pX   = fuzzerMergeRules(a[i], pX);
                        a[i] = null;
                    }
                    a[i] = fuzzerMergeRules(a[i], pX);
                }
                for (pX = a[0], i = 1; i < a.Length; i++)//sizeof(a)/sizeof(a[0]); i++)
                {
                    pX = fuzzerMergeRules(a[i], pX);
                }
                p.pRule = fuzzerMergeRules(p.pRule, pX);
            }
            p.nCursor++;
            return(SQLITE_OK);
        }
Пример #4
0
 /* Methods for the fuzzer module */
 static int fuzzerConnect(
   sqlite3 db,
   object pAux,
   int argc, string[] argv,
   out sqlite3_vtab ppVtab,
   out string pzErr
 )
 {
   fuzzer_vtab pNew;
   int n;
   if ( !argv[1].StartsWith( "temp", StringComparison.CurrentCultureIgnoreCase ) )
   {
     pzErr = sqlite3_mprintf( "%s virtual tables must be TEMP", argv[0] );
     ppVtab = null;
     return SQLITE_ERROR;
   }
   //n = strlen(argv[0]) + 1;
   pNew = new fuzzer_vtab();//sqlite3_malloc( sizeof(pNew) + n );
   //if( pNew==0 ) return SQLITE_NOMEM;
   //pNew.zClassName = (char*)&pNew[1];
   pNew.zClassName = argv[0];//memcpy(pNew.zClassName, argv[0], n);
   sqlite3_declare_vtab( db, "CREATE TABLE x(word,distance,cFrom,cTo,cost)" );
   //memset(pNew, 0, sizeof(pNew));
   pzErr = "";
   ppVtab = pNew;
   return SQLITE_OK;
 }