Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Portability enhancements for the interop assembly. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
8a3c530e9952d79aca9bd7871e1161a4 |
User & Date: | mistachkin 2016-03-22 21:50:32.394 |
Context
2016-03-22
| ||
21:54 | Fix for clean compilation on Windows. check-in: de911e58d5 user: mistachkin tags: trunk | |
21:50 | Portability enhancements for the interop assembly. check-in: 8a3c530e99 user: mistachkin tags: trunk | |
20:22 | Add test constraints for Mono 2.11. Adjust C# compiler warning level in the test for ticket [4a791e70ab]. check-in: 942a9be029 user: mistachkin tags: trunk | |
Changes
Changes to SQLite.Interop/src/contrib/extension-functions.c.
︙ | ︙ | |||
86 87 88 89 90 91 92 | power. 2007-02-07 posted by Mikey C to sqlite mailing list. Original code 2006 June 05 by relicoder. */ /* #include "config.h" */ | > | > | | 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | power. 2007-02-07 posted by Mikey C to sqlite mailing list. Original code 2006 June 05 by relicoder. */ /* #include "config.h" */ #if defined(_WIN32) # include <windows.h> #endif /* #define COMPILE_SQLITE_EXTENSIONS_AS_LOADABLE_MODULE */ /* NOTE: More functions are available with MSVC 2013. */ #if !defined(_WIN32) || (defined(_MSC_VER) && _MSC_VER >= 1800) # define HAVE_ACOSH 1 # define HAVE_ASINH 1 # define HAVE_ATANH 1 # define HAVE_ISBLANK 1 #endif #define HAVE_SINH 1 |
︙ | ︙ | |||
121 122 123 124 125 126 127 | #include <ctype.h> /* relicoder */ #include <math.h> #include <string.h> #include <stdio.h> #if !defined(_WIN32_WCE) || defined(HAVE_ERRNO_H) | | | | > > < | > > > | 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 | #include <ctype.h> /* relicoder */ #include <math.h> #include <string.h> #include <stdio.h> #if !defined(_WIN32_WCE) || defined(HAVE_ERRNO_H) # include <errno.h> /* LMH 2007-03-25 */ #elif defined(_WIN32) int errno; # define strerror(x) "" #else # include <errno.h> #endif #include <stdlib.h> #include <assert.h> #ifndef _MAP_H_ #define _MAP_H_ #if defined(_WIN32) typedef signed char int8_t; typedef unsigned char uint8_t; typedef signed int int16_t; typedef unsigned int uint16_t; typedef signed long int int32_t; typedef unsigned long int uint32_t; typedef signed long long int int64_t; typedef unsigned long long int uint64_t; #else # include <stdint.h> #endif /* ** Simple binary tree implementation to use in median, mode and quartile calculations ** Tree is not necessarily balanced. That would require something like red&black trees of AVL */ typedef int(*cmp_func)(const void *, const void *); |
︙ | ︙ |
Changes to SQLite.Interop/src/win/interop.c.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | /******************************************************** * ADO.NET 2.0 Data Provider for SQLite Version 3.X * Written by Robert Simpson (robert@blackcastlesoft.com) * * Released to the public domain, use at your own risk! ********************************************************/ #define SQLITE_API __declspec(dllexport) #include "../core/sqlite3.c" #if defined(INTEROP_INCLUDE_EXTRA) #include "../ext/extra.c" #endif | > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | /******************************************************** * ADO.NET 2.0 Data Provider for SQLite Version 3.X * Written by Robert Simpson (robert@blackcastlesoft.com) * * Released to the public domain, use at your own risk! ********************************************************/ #if SQLITE_OS_WIN #define SQLITE_API __declspec(dllexport) #else #define WINAPI #endif #include "../core/sqlite3.c" #if defined(INTEROP_INCLUDE_EXTRA) #include "../ext/extra.c" #endif |
︙ | ︙ | |||
28 29 30 31 32 33 34 | #if defined(INTEROP_EXTENSION_FUNCTIONS) #undef COMPILE_SQLITE_EXTENSIONS_AS_LOADABLE_MODULE #include "../contrib/extension-functions.c" extern int RegisterExtensionFunctions(sqlite3 *db); #endif | | | 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | #if defined(INTEROP_EXTENSION_FUNCTIONS) #undef COMPILE_SQLITE_EXTENSIONS_AS_LOADABLE_MODULE #include "../contrib/extension-functions.c" extern int RegisterExtensionFunctions(sqlite3 *db); #endif #if SQLITE_OS_WIN #if defined(INTEROP_CODEC) && !defined(INTEROP_INCLUDE_SEE) #ifdef SQLITE_ENABLE_ZIPVFS #define INTEROP_CODEC_GET_PAGER(a,b,c) sqlite3PagerGet(a,b,c,0) #elif SQLITE_VERSION_NUMBER > 3009002 #define INTEROP_CODEC_GET_PAGER(a,b,c) sqlite3PagerGet(a,b,c,0) #else #define INTEROP_CODEC_GET_PAGER(a,b,c) sqlite3PagerGet(a,b,c) |
︙ | ︙ | |||
892 893 894 895 896 897 898 | SQLITE_API const void * WINAPI sqlite3_column_origin_name16_interop(sqlite3_stmt *stmt, int iCol, int *plen) { const void *pval = sqlite3_column_origin_name16(stmt, iCol); if (plen) *plen = pval ? wcslen((wchar_t *)pval) * sizeof(wchar_t) : 0; return pval; } | | | 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 | SQLITE_API const void * WINAPI sqlite3_column_origin_name16_interop(sqlite3_stmt *stmt, int iCol, int *plen) { const void *pval = sqlite3_column_origin_name16(stmt, iCol); if (plen) *plen = pval ? wcslen((wchar_t *)pval) * sizeof(wchar_t) : 0; return pval; } SQLITE_API int WINAPI sqlite3_table_column_metadata_interop(sqlite3 *db, const char *zDbName, const char *zTableName, const char *zColumnName, char const **pzDataType, char const **pzCollSeq, int *pNotNull, int *pPrimaryKey, int *pAutoinc, int *pdtLen, int *pcsLen) { int n; n = sqlite3_table_column_metadata(db, zDbName, zTableName, zColumnName, pzDataType, pzCollSeq, pNotNull, pPrimaryKey, pAutoinc); if (pdtLen) *pdtLen = (pzDataType && *pzDataType) ? strlen(*pzDataType) : 0; if (pcsLen) *pcsLen = (pzCollSeq && *pzCollSeq) ? strlen(*pzCollSeq) : 0; |
︙ | ︙ | |||
949 950 951 952 953 954 955 | int n; int ret = -1; /* NOT FOUND */ if (!p || !db) return ret; sqlite3_mutex_enter(db->mutex); for (n = 0; n < p->nCursor && p->apCsr[n] != NULL; n++) { | | | 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 | int n; int ret = -1; /* NOT FOUND */ if (!p || !db) return ret; sqlite3_mutex_enter(db->mutex); for (n = 0; n < p->nCursor && p->apCsr[n] != NULL; n++) { if (p->apCsr[n]->isTable == 0) continue; if (p->apCsr[n]->iDb != iDb) continue; #if SQLITE_VERSION_NUMBER >= 3010000 if (p->apCsr[n]->uc.pCursor->pgnoRoot == tableRootPage) #else if (p->apCsr[n]->pCursor->pgnoRoot == tableRootPage) #endif { |
︙ | ︙ | |||
1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 | /* ** The INTEROP_TEST_EXTENSION block must be at the end of this source file ** because it includes the "sqlite3ext.h" file, which defines the sqlite3 ** public API function names to be macros and that would cause the code ** above this point to malfunction. */ #if defined(INTEROP_TEST_EXTENSION) #include "../core/sqlite3ext.h" SQLITE_EXTENSION_INIT1 /* ** The interopTest() SQL function returns its first argument or raises an ** error if there are not enough arguments. */ | > > > > | 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 | /* ** The INTEROP_TEST_EXTENSION block must be at the end of this source file ** because it includes the "sqlite3ext.h" file, which defines the sqlite3 ** public API function names to be macros and that would cause the code ** above this point to malfunction. */ #if defined(INTEROP_TEST_EXTENSION) #if !SQLITE_OS_WIN #include <unistd.h> #endif #include "../core/sqlite3ext.h" SQLITE_EXTENSION_INIT1 /* ** The interopTest() SQL function returns its first argument or raises an ** error if there are not enough arguments. */ |
︙ | ︙ | |||
1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 | ){ int m; if( argc!=1 ){ sqlite3_result_error(context, "need exactly one argument", -1); return; } m = sqlite3_value_int(argv[0]); #if SQLITE_OS_WINCE Sleep(m); sqlite3_result_int(context, WAIT_OBJECT_0); #else sqlite3_result_int(context, SleepEx(m, TRUE)); #endif } /* SQLite invokes this routine once when it loads the extension. ** Create new functions, collating sequences, and virtual table ** modules here. This is usually the only exported symbol in ** the shared library. | > > > > > > > > | 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 | ){ int m; if( argc!=1 ){ sqlite3_result_error(context, "need exactly one argument", -1); return; } m = sqlite3_value_int(argv[0]); #if SQLITE_OS_WIN #if SQLITE_OS_WINCE Sleep(m); sqlite3_result_int(context, WAIT_OBJECT_0); #else sqlite3_result_int(context, SleepEx(m, TRUE)); #endif #else if( m>0 ){ sqlite3_result_int64(context, sleep((unsigned)m)); }else{ sqlite3_result_null(context); } #endif } /* SQLite invokes this routine once when it loads the extension. ** Create new functions, collating sequences, and virtual table ** modules here. This is usually the only exported symbol in ** the shared library. |
︙ | ︙ | |||
1159 1160 1161 1162 1163 1164 1165 | interopTestFunc, 0, 0); if( rc==SQLITE_OK ){ rc = sqlite3_create_function(db, "interopSleep", 1, SQLITE_ANY, 0, interopSleepFunc, 0, 0); } return rc; } | | | 1175 1176 1177 1178 1179 1180 1181 1182 | interopTestFunc, 0, 0); if( rc==SQLITE_OK ){ rc = sqlite3_create_function(db, "interopSleep", 1, SQLITE_ANY, 0, interopSleepFunc, 0, 0); } return rc; } #endif /* SQLITE_OS_WIN */ |
Changes to Setup/build_mono.bat.
︙ | ︙ | |||
33 34 35 36 37 38 39 | SET BUILD_CONFIGURATIONS=DebugManagedOnly ReleaseManagedOnly SET PLATFORMS="Any CPU" SET YEARS=2008 2013 SET NOUSER=1 SET MSBUILD_ARGS=/property:UseInteropDll=false SET MSBUILD_ARGS=%MSBUILD_ARGS% /property:UseSqliteStandard=true SET MSBUILD_ARGS=%MSBUILD_ARGS% /property:InteropCodec=false | < < < | 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | SET BUILD_CONFIGURATIONS=DebugManagedOnly ReleaseManagedOnly SET PLATFORMS="Any CPU" SET YEARS=2008 2013 SET NOUSER=1 SET MSBUILD_ARGS=/property:UseInteropDll=false SET MSBUILD_ARGS=%MSBUILD_ARGS% /property:UseSqliteStandard=true SET MSBUILD_ARGS=%MSBUILD_ARGS% /property:InteropCodec=false CALL :fn_ResetErrorLevel %__ECHO3% CALL "%TOOLS%\build_all.bat" IF ERRORLEVEL 1 ( ECHO Failed to build Mono binaries. |
︙ | ︙ |