Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Implement the SQLiteContext helper class. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | virtualTables |
Files: | files | file ages | folders |
SHA1: |
95425066e0cae8094fcdeea515e6bb26 |
User & Date: | mistachkin 2013-06-07 19:14:38.958 |
Context
2013-06-07
| ||
21:23 | Implement the xFilter virtual table method. More cleanup. check-in: 08eaed4731 user: mistachkin tags: virtualTables | |
19:14 | Implement the SQLiteContext helper class. check-in: 95425066e0 user: mistachkin tags: virtualTables | |
08:50 | Minor adjustments to previous commit. check-in: a900416795 user: mistachkin tags: virtualTables | |
Changes
Changes to System.Data.SQLite/SQLiteModuleBase.cs.
︙ | ︙ | |||
13 14 15 16 17 18 19 20 21 22 | using System.Security.Permissions; #endif using System.Text; namespace System.Data.SQLite { public sealed class SQLiteContext { | > > > > > | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 | using System.Security.Permissions; #endif using System.Text; namespace System.Data.SQLite { #region SQLite Context Helper Class public sealed class SQLiteContext { #region Private Data private IntPtr pContext; #endregion /////////////////////////////////////////////////////////////////////// #region Private Constructors internal SQLiteContext(IntPtr pContext) { this.pContext = pContext; } #endregion /////////////////////////////////////////////////////////////////////// #region Public Methods public void SetNull() { if (pContext == IntPtr.Zero) throw new InvalidOperationException(); UnsafeNativeMethods.sqlite3_result_null(pContext); } /////////////////////////////////////////////////////////////////////// public void SetDouble(double value) { if (pContext == IntPtr.Zero) throw new InvalidOperationException(); UnsafeNativeMethods.sqlite3_result_double(pContext, value); } /////////////////////////////////////////////////////////////////////// public void SetInt(int value) { if (pContext == IntPtr.Zero) throw new InvalidOperationException(); UnsafeNativeMethods.sqlite3_result_int(pContext, value); } /////////////////////////////////////////////////////////////////////// public void SetInt64(long value) { if (pContext == IntPtr.Zero) throw new InvalidOperationException(); UnsafeNativeMethods.sqlite3_result_int64(pContext, value); } /////////////////////////////////////////////////////////////////////// public void SetString(string value) { if (pContext == IntPtr.Zero) throw new InvalidOperationException(); byte[] bytes = SQLiteModuleBase.GetUtf8BytesFromString(value); if (bytes == null) throw new ArgumentNullException("value"); UnsafeNativeMethods.sqlite3_result_text( pContext, bytes, bytes.Length, (IntPtr)(-1)); } /////////////////////////////////////////////////////////////////////// public void SetError(string value) { if (pContext == IntPtr.Zero) throw new InvalidOperationException(); byte[] bytes = SQLiteModuleBase.GetUtf8BytesFromString(value); if (bytes == null) throw new ArgumentNullException("value"); UnsafeNativeMethods.sqlite3_result_error( pContext, bytes, bytes.Length); } /////////////////////////////////////////////////////////////////////// public void SetErrorCode(SQLiteErrorCode value) { if (pContext == IntPtr.Zero) throw new InvalidOperationException(); UnsafeNativeMethods.sqlite3_result_error_code(pContext, value); } /////////////////////////////////////////////////////////////////////// public void SetErrorTooBig() { if (pContext == IntPtr.Zero) throw new InvalidOperationException(); UnsafeNativeMethods.sqlite3_result_error_toobig(pContext); } /////////////////////////////////////////////////////////////////////// public void SetErrorNoMemory() { if (pContext == IntPtr.Zero) throw new InvalidOperationException(); UnsafeNativeMethods.sqlite3_result_error_nomem(pContext); } /////////////////////////////////////////////////////////////////////// public void SetBlob(byte[] value) { if (pContext == IntPtr.Zero) throw new InvalidOperationException(); if (value == null) throw new ArgumentNullException("value"); UnsafeNativeMethods.sqlite3_result_blob( pContext, value, value.Length, (IntPtr)(-1)); } /////////////////////////////////////////////////////////////////////// public void SetZeroBlob(int value) { if (pContext == IntPtr.Zero) throw new InvalidOperationException(); UnsafeNativeMethods.sqlite3_result_zeroblob(pContext, value); } /////////////////////////////////////////////////////////////////////// public void SetValue(IntPtr pValue) { if (pContext == IntPtr.Zero) throw new InvalidOperationException(); UnsafeNativeMethods.sqlite3_result_value(pContext, pValue); } #endregion } #endregion /////////////////////////////////////////////////////////////////////////// #region SQLite Value Helper Class public sealed class SQLiteValue { #region Private Data private IntPtr pValue; #endregion /////////////////////////////////////////////////////////////////////// |
︙ | ︙ | |||
93 94 95 96 97 98 99 100 101 102 103 104 105 106 | public byte[] GetBlob() { if (pValue == IntPtr.Zero) return null; return SQLiteModuleBase.BytesFromIntPtr(pValue, GetBytes()); } #endregion } /////////////////////////////////////////////////////////////////////////// public class SQLiteIndexConstraint { private SQLiteModuleBase.UnsafeNativeMethods2.sqlite3_index_constraint constraint; } | > | 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 | public byte[] GetBlob() { if (pValue == IntPtr.Zero) return null; return SQLiteModuleBase.BytesFromIntPtr(pValue, GetBytes()); } #endregion } #endregion /////////////////////////////////////////////////////////////////////////// public class SQLiteIndexConstraint { private SQLiteModuleBase.UnsafeNativeMethods2.sqlite3_index_constraint constraint; } |
︙ | ︙ | |||
506 507 508 509 510 511 512 | return module; } private static int ThirtyBits = 0x3fffffff; /////////////////////////////////////////////////////////////////////// | | | 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 | return module; } private static int ThirtyBits = 0x3fffffff; /////////////////////////////////////////////////////////////////////// internal static byte[] GetUtf8BytesFromString(string value) { if (value == null) return null; return Utf8Encoding.GetBytes(value); } |
︙ | ︙ |
Changes to System.Data.SQLite/UnsafeNativeMethods.cs.
︙ | ︙ | |||
1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 | #if !PLATFORM_COMPACTFRAMEWORK [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)] #else [DllImport(SQLITE_DLL)] #endif internal static extern void sqlite3_result_error(IntPtr context, byte[] strErr, int nLen); #if !PLATFORM_COMPACTFRAMEWORK [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)] #else [DllImport(SQLITE_DLL)] #endif internal static extern void sqlite3_result_int(IntPtr context, int value); | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 | #if !PLATFORM_COMPACTFRAMEWORK [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)] #else [DllImport(SQLITE_DLL)] #endif internal static extern void sqlite3_result_error(IntPtr context, byte[] strErr, int nLen); #if !PLATFORM_COMPACTFRAMEWORK [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)] #else [DllImport(SQLITE_DLL)] #endif internal static extern void sqlite3_result_error_code(IntPtr context, SQLiteErrorCode value); #if !PLATFORM_COMPACTFRAMEWORK [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)] #else [DllImport(SQLITE_DLL)] #endif internal static extern void sqlite3_result_error_toobig(IntPtr context); #if !PLATFORM_COMPACTFRAMEWORK [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)] #else [DllImport(SQLITE_DLL)] #endif internal static extern void sqlite3_result_error_nomem(IntPtr context); #if !PLATFORM_COMPACTFRAMEWORK [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)] #else [DllImport(SQLITE_DLL)] #endif internal static extern void sqlite3_result_value(IntPtr context, IntPtr value); #if !PLATFORM_COMPACTFRAMEWORK [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)] #else [DllImport(SQLITE_DLL)] #endif internal static extern void sqlite3_result_zeroblob(IntPtr context, int nLen); #if !PLATFORM_COMPACTFRAMEWORK [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)] #else [DllImport(SQLITE_DLL)] #endif internal static extern void sqlite3_result_int(IntPtr context, int value); |
︙ | ︙ |