add lua binding generator tools, changes in pch header
This commit is contained in:
parent
f548825faf
commit
d2d8a0097a
|
@ -218,7 +218,7 @@ TARGET_LINK_LIBRARIES(
|
||||||
)
|
)
|
||||||
|
|
||||||
IF(USE_PCH)
|
IF(USE_PCH)
|
||||||
ADD_PRECOMPILED_HEADER(otclient ${CMAKE_CURRENT_SOURCE_DIR}/src/pch.h)
|
ADD_PRECOMPILED_HEADER(otclient ${CMAKE_CURRENT_SOURCE_DIR}/src/framework/pch.h)
|
||||||
ENDIF(USE_PCH)
|
ENDIF(USE_PCH)
|
||||||
|
|
||||||
# installation
|
# installation
|
||||||
|
|
1
TODO
1
TODO
|
@ -28,3 +28,4 @@ make lua/c++ logger more friendly
|
||||||
bind every global lua function in a static class
|
bind every global lua function in a static class
|
||||||
use metatable for Point,Rect,Color,Size lua classes
|
use metatable for Point,Rect,Color,Size lua classes
|
||||||
lua binder generator
|
lua binder generator
|
||||||
|
restore win32 platform
|
||||||
|
|
|
@ -23,42 +23,8 @@
|
||||||
#ifndef FRAMEWORK_GLOBAL_H
|
#ifndef FRAMEWORK_GLOBAL_H
|
||||||
#define FRAMEWORK_GLOBAL_H
|
#define FRAMEWORK_GLOBAL_H
|
||||||
|
|
||||||
// common C headers
|
// common C/C++ headers
|
||||||
#include <cstdio>
|
#include "pch.h"
|
||||||
#include <cstdlib>
|
|
||||||
#include <cstring>
|
|
||||||
#include <cassert>
|
|
||||||
#include <ctime>
|
|
||||||
#include <cmath>
|
|
||||||
#include <csignal>
|
|
||||||
|
|
||||||
// common STL headers
|
|
||||||
#include <iostream>
|
|
||||||
#include <sstream>
|
|
||||||
#include <fstream>
|
|
||||||
#include <string>
|
|
||||||
#include <vector>
|
|
||||||
#include <list>
|
|
||||||
#include <queue>
|
|
||||||
#include <deque>
|
|
||||||
#include <stack>
|
|
||||||
#include <map>
|
|
||||||
#include <algorithm>
|
|
||||||
#include <exception>
|
|
||||||
#include <memory>
|
|
||||||
#include <type_traits>
|
|
||||||
#include <tuple>
|
|
||||||
#include <functional>
|
|
||||||
#include <typeinfo>
|
|
||||||
#include <array>
|
|
||||||
#include <iomanip>
|
|
||||||
#include <unordered_map>
|
|
||||||
#include <random>
|
|
||||||
#include <chrono>
|
|
||||||
|
|
||||||
// boost utilities
|
|
||||||
#include <boost/algorithm/string.hpp>
|
|
||||||
#include <boost/any.hpp>
|
|
||||||
|
|
||||||
// global constants
|
// global constants
|
||||||
#include "const.h"
|
#include "const.h"
|
||||||
|
|
|
@ -0,0 +1,62 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2010-2011 OTClient <https://github.com/edubart/otclient>
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef PCH_H
|
||||||
|
#define PCH_H
|
||||||
|
|
||||||
|
// common C headers
|
||||||
|
#include <cstdio>
|
||||||
|
#include <cstdlib>
|
||||||
|
#include <cstring>
|
||||||
|
#include <cassert>
|
||||||
|
#include <ctime>
|
||||||
|
#include <cmath>
|
||||||
|
#include <csignal>
|
||||||
|
|
||||||
|
// common STL headers
|
||||||
|
#include <iostream>
|
||||||
|
#include <sstream>
|
||||||
|
#include <fstream>
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
#include <list>
|
||||||
|
#include <queue>
|
||||||
|
#include <deque>
|
||||||
|
#include <stack>
|
||||||
|
#include <map>
|
||||||
|
#include <algorithm>
|
||||||
|
#include <exception>
|
||||||
|
#include <memory>
|
||||||
|
#include <type_traits>
|
||||||
|
#include <tuple>
|
||||||
|
#include <functional>
|
||||||
|
#include <typeinfo>
|
||||||
|
#include <array>
|
||||||
|
#include <iomanip>
|
||||||
|
#include <unordered_map>
|
||||||
|
#include <random>
|
||||||
|
#include <chrono>
|
||||||
|
|
||||||
|
// boost utilities
|
||||||
|
#include <boost/algorithm/string.hpp>
|
||||||
|
|
||||||
|
#endif
|
|
@ -25,6 +25,7 @@
|
||||||
|
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include <iomanip>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <exception>
|
#include <exception>
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
namespace Otc
|
namespace Otc
|
||||||
{
|
{
|
||||||
static const char* AppName = "OTClient";
|
static const char* AppName = "OTClient";
|
||||||
static const char* AppIdentifierName = "otclient";
|
static const char* AppCompactName = "otclient";
|
||||||
static const char* AppVersion = "0.4.0";
|
static const char* AppVersion = "0.4.0";
|
||||||
|
|
||||||
static const char* CipsoftPublicRSA = "1321277432058722840622950990822933849527763264961655079678763618"
|
static const char* CipsoftPublicRSA = "1321277432058722840622950990822933849527763264961655079678763618"
|
||||||
|
|
|
@ -1,3 +1,25 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2010-2011 OTClient <https://github.com/edubart/otclient>
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
#include "otclient.h"
|
#include "otclient.h"
|
||||||
|
|
||||||
OTClient g_otclient;
|
OTClient g_otclient;
|
||||||
|
@ -6,5 +28,5 @@ Application& g_app = g_otclient;
|
||||||
void OTClient::init(const std::vector<std::string>& args)
|
void OTClient::init(const std::vector<std::string>& args)
|
||||||
{
|
{
|
||||||
logInfo(Otc::AppName, " ", Otc::AppVersion);
|
logInfo(Otc::AppName, " ", Otc::AppVersion);
|
||||||
Application::init(Otc::AppName, args);
|
Application::init(Otc::AppCompactName, args);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,25 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2010-2011 OTClient <https://github.com/edubart/otclient>
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
#ifndef OTCLIENT_H
|
#ifndef OTCLIENT_H
|
||||||
#define OTCLIENT_H
|
#define OTCLIENT_H
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,94 @@
|
||||||
|
#!/usr/bin/lua
|
||||||
|
|
||||||
|
if not (#arg >= 1 and #arg <= 4) then
|
||||||
|
print('usage: ' .. arg[0] .. ' <cpp class header> [class name] [cpp class instance] [lua class instance]')
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
cppclassheader = arg[1]
|
||||||
|
cppclassname = arg[2]
|
||||||
|
cppclassinstance = arg[3]
|
||||||
|
luaclassname = arg[3] or luaclassname
|
||||||
|
|
||||||
|
if not io.open(cppclassheader, 'r') then
|
||||||
|
print('could not open ' .. cppclassheader)
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
function string.matchcount(str, pattern)
|
||||||
|
local count = 0
|
||||||
|
for w in str:gmatch(pattern) do count = count + 1 end
|
||||||
|
return count
|
||||||
|
end
|
||||||
|
|
||||||
|
function string.splitlines(str)
|
||||||
|
local t = {}
|
||||||
|
local function helper(line) table.insert(t, line) return "" end
|
||||||
|
helper((str:gsub("(.-)\r?\n", helper)))
|
||||||
|
return t
|
||||||
|
end
|
||||||
|
|
||||||
|
classfound = false
|
||||||
|
publicmethods = false
|
||||||
|
for line in io.lines(cppclassheader) do
|
||||||
|
foundclassname = line:match('^class ([%w_]+)')
|
||||||
|
if foundclassname then
|
||||||
|
if not cppclassname then
|
||||||
|
guessedclassname = cppclassheader:match('([%w_]+).h'):lower()
|
||||||
|
if foundclassname:lower() == guessedclassname then
|
||||||
|
cppclassname = foundclassname
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if foundclassname == cppclassname then
|
||||||
|
classfound = true
|
||||||
|
publicmethods = false
|
||||||
|
|
||||||
|
if cppclassinstance then
|
||||||
|
print('g_lua.registerStaticClass("' .. luaclassname .. '");')
|
||||||
|
else
|
||||||
|
baseclassname = line:match(': public ([%w_]+)')
|
||||||
|
bindline = 'g_lua.registerClass<' .. cppclassname
|
||||||
|
|
||||||
|
if baseclassname and baseclassname ~= 'LuaObject' then
|
||||||
|
bindline = bindline .. ', ' .. baseclassname
|
||||||
|
end
|
||||||
|
|
||||||
|
bindline = bindline .. '>();'
|
||||||
|
print(bindline)
|
||||||
|
|
||||||
|
bindline = 'g_lua.bindClassStaticFunction<' .. cppclassname .. '>("create", &' .. cppclassname .. '::create);'
|
||||||
|
print(bindline)
|
||||||
|
end
|
||||||
|
elseif classfound then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if classfound then
|
||||||
|
if line:match('public:') then
|
||||||
|
publicmethods = true
|
||||||
|
elseif line:match('private:') or line:match('protected:') then
|
||||||
|
publicmethods = false
|
||||||
|
elseif publicmethods then
|
||||||
|
for funcname,args in line:gmatch(' *[%w :_]* ([%w_]+)%(([^%(]*%)) *[;{].*$') do
|
||||||
|
if funcname ~= cppclassname then
|
||||||
|
numargs = args:matchcount('[^,)]+[,)]')
|
||||||
|
|
||||||
|
if cppclassinstance then
|
||||||
|
bindline = 'g_lua.bindClassStaticFunction("' .. luaclassname .. '", "' .. funcname .. '", ' ..
|
||||||
|
'std::bind(&' .. cppclassname .. "::" .. funcname .. ', &' .. cppclassinstance
|
||||||
|
for i=1,numargs do
|
||||||
|
bindline = bindline .. ', _' .. i
|
||||||
|
end
|
||||||
|
bindline = bindline .. '));'
|
||||||
|
else
|
||||||
|
bindline = 'g_lua.bindClassMemberFunction<' .. cppclassname .. '>("' .. funcname .. '", &' ..
|
||||||
|
cppclassname .. '::' .. funcname .. ');'
|
||||||
|
end
|
||||||
|
print(bindline)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return true
|
Loading…
Reference in New Issue