1
0
Fork 0

Added SQLite and LuaSQLite, Lua plugins can now use SQLite.

git-svn-id: http://mc-server.googlecode.com/svn/trunk@1368 0a769ca7-a7f5-676a-18bf-c427514a06d6
This commit is contained in:
madmaxoft@gmail.com 2013-04-07 19:28:32 +00:00
parent 92e782068f
commit 499962029a
10 changed files with 147613 additions and 4 deletions

View File

@ -41,7 +41,7 @@ ifeq ($(release),1)
################
CC_OPTIONS = -s -g -O3 -DNDEBUG
CXX_OPTIONS = -s -g -O3 -DNDEBUG
LNK_OPTIONS = -lstdc++ -pthread -O3
LNK_OPTIONS = -lstdc++ -ldl -pthread -O3
BUILDDIR = build/release/
else
@ -51,7 +51,7 @@ ifeq ($(profile),1)
################
CC_OPTIONS = -s -g -ggdb -O3 -pg -DNDEBUG
CXX_OPTIONS = -s -g -ggdb -O3 -pg -DNDEBUG
LNK_OPTIONS = -lstdc++ -pthread -ggdb -O3 -pg
LNK_OPTIONS = -lstdc++ -ldl -pthread -ggdb -O3 -pg
BUILDDIR = build/profile/
else
@ -61,7 +61,7 @@ ifeq ($(pedantic),1)
################
CC_OPTIONS = -s -g -ggdb -D_DEBUG -Wall -Wextra -pedantic -ansi -Wno-long-long
CXX_OPTIONS = -s -g -ggdb -D_DEBUG -Wall -Wextra -pedantic -ansi -Wno-long-long
LNK_OPTIONS = -lstdc++ -pthread -ggdb
LNK_OPTIONS = -lstdc++ -ldl -pthread -ggdb
BUILDDIR = build/pedantic/
else
@ -71,7 +71,7 @@ else
################
CC_OPTIONS = -s -ggdb -g -D_DEBUG -O3
CXX_OPTIONS = -s -ggdb -g -D_DEBUG
LNK_OPTIONS = -lstdc++ -pthread -g -ggdb
LNK_OPTIONS = -lstdc++ -ldl -pthread -g -ggdb
BUILDDIR = build/debug/
endif
endif

View File

@ -0,0 +1,27 @@
/************************************************************************
* lsqlite3 *
* Copyright (C) 2002-2013 Tiago Dionizio, Doug Currie *
* All rights reserved. *
* Author : Tiago Dionizio <tiago.dionizio@ist.utl.pt> *
* Author : Doug Currie <doug.currie@alum.mit.edu> *
* Library : lsqlite3 - a SQLite 3 database binding for Lua 5 *
* *
* Permission is hereby granted, free of charge, to any person obtaining *
* a copy of this software and associated documentation files (the *
* "Software"), to deal in the Software without restriction, including *
* without limitation the rights to use, copy, modify, merge, publish, *
* distribute, sublicense, and/or sell copies of the Software, and to *
* permit persons to whom the Software is furnished to do so, subject to *
* the following conditions: *
* *
* The above copyright notice and this permission notice shall be *
* included in all copies or substantial portions of the Software. *
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, *
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY *
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, *
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE *
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
************************************************************************/

View File

@ -9,6 +9,7 @@ MCServer*debug.cmd
banned.example.ini
groups.example.ini
Lua-LICENSE.txt
LuaSQLite3-LICENSE.txt
MersenneTwister-LICENSE.txt
settings.example.ini
users.example.ini

View File

@ -54,6 +54,7 @@ function Initialize(Plugin)
f:write(n, "\n");
end
f:close();
LOG("API.txt written.");
end
@ -136,6 +137,35 @@ function Initialize(Plugin)
end
-- Debug SQLite binding
local TestDB, ErrCode, ErrMsg = sqlite3.open("test.sqlite");
if (TestDB ~= nil) then
local function ShowRow(UserData, NumCols, Values, Names)
assert(UserData == 'UserData');
LOG("New row");
for i = 1, NumCols do
LOG(" " .. Names[i] .. " = " .. Values[i]);
end
return 0;
end
local sql = [=[
CREATE TABLE numbers(num1,num2,str);
INSERT INTO numbers VALUES(1, 11, "ABC");
INSERT INTO numbers VALUES(2, 22, "DEF");
INSERT INTO numbers VALUES(3, 33, "UVW");
INSERT INTO numbers VALUES(4, 44, "XYZ");
SELECT * FROM numbers;
]=]
local Res = TestDB:exec(sql, ShowRow, 'UserData');
if (Res ~= sqlite3.OK) then
LOG("TestDB:exec() failed: " .. Res .. " (" .. TestDB:errmsg() .. ")");
end;
TestDB:close();
else
-- This happens if for example SQLite cannot open the file (eg. a folder with the same name exists)
LOG("SQLite3 failed to open DB! (" .. ErrCode .. ", " .. ErrMsg ..")");
end
return true
end

View File

@ -2195,6 +2195,74 @@
>
</File>
</Filter>
<Filter
Name="SQLite"
>
<File
RelativePath="..\source\sqlite\lsqlite3.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="0"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="0"
/>
</FileConfiguration>
<FileConfiguration
Name="Release profiled|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="0"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\source\sqlite\sqlite3.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="0"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="0"
/>
</FileConfiguration>
<FileConfiguration
Name="Release profiled|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="0"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\source\sqlite\sqlite3.h"
>
</File>
<File
RelativePath="..\source\sqlite\urls.txt"
>
</File>
</Filter>
</Filter>
<Filter
Name="Config files"

View File

@ -18,6 +18,16 @@ extern "C"
// fwd: SQLite/lsqlite3.c
extern "C"
{
LUALIB_API int luaopen_lsqlite3(lua_State * L);
}
bool report_errors(lua_State * lua, int status)
{
if (status == 0)
@ -73,6 +83,7 @@ bool cPlugin_NewLua::Initialize(void)
luaL_openlibs(m_LuaState);
tolua_AllToLua_open(m_LuaState);
ManualBindings::Bind(m_LuaState);
luaopen_lsqlite3(m_LuaState);
// Inject the identification global variables into the state:
lua_pushlightuserdata(m_LuaState, this);

2175
source/SQLite/lsqlite3.c Normal file

File diff suppressed because it is too large Load Diff

138114
source/SQLite/sqlite3.c Normal file

File diff suppressed because it is too large Load Diff

7174
source/SQLite/sqlite3.h Normal file

File diff suppressed because it is too large Load Diff

9
source/SQLite/urls.txt Normal file
View File

@ -0,0 +1,9 @@
SQLite:
http://www.sqlite.org
SQLite is in public domain
LuaSQLite3:
http://lua.sqlite.org
http://lua.sqlite.org/index.cgi/doc/tip/doc/lsqlite3.wiki -- documentation
License for LuaSQLite is stored in $/install/LuaSQLite3-LICENSE.txt and distributed with the executables