Exemple #1
0
 private int xClose(ref sqlite3_tokenizer_cursor pCursor)
 {
     if (this.ppCursor != IntPtr.Zero)
     {
         Marshal.FreeHGlobal(this.ppCursor);
         this.ppCursor = IntPtr.Zero;
     }
     return(SQLITE_OK);
 }
Exemple #2
0
            private int xNext(ref sqlite3_tokenizer_cursor pCursor,
                              ref IntPtr ppToken, ref int pnBytes, ref int piStartOffset, ref int piEndOffset, ref int piPosition)
            {
                if (this.lastStringPtr != IntPtr.Zero)
                {
                    Marshal.FreeHGlobal(this.lastStringPtr);
                    this.lastStringPtr = IntPtr.Zero;
                }

                if (owner.MoveNext())
                {
                    byte[] bytes = SQLiteConvert.ToUTF8(owner.Token);
                    pnBytes = bytes.Length;

                    this.lastStringPtr = Marshal.AllocHGlobal(pnBytes);
                    Marshal.Copy(bytes, 0, this.lastStringPtr, pnBytes);
                    ppToken = this.lastStringPtr;
                    pnBytes--;

                    string prevString = owner.InputString.Substring(0, owner.TokenIndexOfString);
                    piStartOffset = Encoding.UTF8.GetByteCount(prevString);
                    if (owner.NextIndexOfString < 0) // default
                    {
                        piEndOffset = piStartOffset + pnBytes;
                    }
                    else
                    {
                        prevString  = owner.InputString.Substring(0, owner.NextIndexOfString);
                        piEndOffset = Encoding.UTF8.GetByteCount(prevString);
                    }
                    owner.tokenNumber++;
                    piPosition = owner.tokenNumber;

                    return(SQLITE_OK);
                }
                else
                {
                    return(SQLITE_DONE);
                }
            }
Exemple #3
0
            private int xOpen(ref sqlite3_tokenizer pTokenizer,
                              IntPtr pInput,
                              int nBytes,
                              ref IntPtr ppCursor)
            {
                try
                {
                    sqlite3_tokenizer_cursor pCursor = new sqlite3_tokenizer_cursor();
                    pCursor.pTokenizer = this.ppTokenizer;
                    this.ppCursor      = this.MarshalStruct(pCursor);
                    ppCursor           = this.ppCursor;

                    owner.inputString = SQLiteConvert.UTF8ToString(pInput, nBytes);
                    owner.tokenNumber = -1;

                    owner.PrepareToStart();
                    return(SQLITE_OK);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                    return(SQLITE_ERROR);
                }
            }