| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- #include "stdafx.h"
- #ifndef _MSC_VER
- extern "C" {
- #endif
- #include "lua.h"
- #include "lualib.h"
- #include "lauxlib.h"
- #ifndef _MSC_VER
- }
- #endif
- //#include <luabind/luabind.hpp>
- //#include <luabind/function.hpp>
- //#include <luabind/class.hpp>
- #include "CLuaHandler.h"
- #include "boost/filesystem.hpp"
- #include <boost/algorithm/string.hpp>
- void piszpowitanie2(std::string i) //simple global function for testing
- {
- std::cout<<"powitanie2zc++. Liczba dnia to " << i;
- }
- CLuaHandler::CLuaHandler()
- {
- }
- CLuaHandler::~CLuaHandler()
- {
- }
- void CLuaHandler::test()
- {
- //int iErr = 0;
- //lua_State *lua = lua_open (); // Open Lua
- //LUA_OPEN_LIB(lua, luaopen_base);
- //LUA_OPEN_LIB(lua, luaopen_io);
- //if ((iErr = luaL_loadfile (lua, "scripts/lua/objects/0023_marletto_tower.lua")) == 0)
- //{
- // // Call main...
- // if ((iErr = lua_pcall (lua, 0, LUA_MULTRET, 0)) == 0)
- // {
- // lua_pushstring (lua, "rightText");
- // lua_gettable (lua, LUA_GLOBALSINDEX);
- // lua_pcall (lua, 0, 0, 0);
- // }
- //}
- //lua_close (lua);
- }
- std::vector<std::string> * CLuaHandler::searchForScripts(std::string fol)
- {
- std::vector<std::string> * ret = new std::vector<std::string> ();
- boost::filesystem::path folder(fol);
- if (!boost::filesystem::exists(folder))
- #ifndef __GNUC__
- throw new std::exception("No such folder!");
- #else
- throw new std::exception();
- #endif
- boost::filesystem::directory_iterator end_itr;
- for
- (
- boost::filesystem::directory_iterator it(folder);
- it!=end_itr;
- it++
- )
- {
- if(boost::algorithm::ends_with((it->path().leaf()),".lua"))
- {
- ret->push_back(fol+"/"+(it->path().leaf()));
- }
- }
- return ret;
- }
- std::vector<std::string> * CLuaHandler::functionList(std::string file)
- {
- std::vector<std::string> * ret = new std::vector<std::string> ();
- char linia[500];
- std::ifstream is(file.c_str());
- while (!is.eof())
- {
- is.getline(linia,500);
- std::string ss(linia);
- boost::algorithm::trim_left(ss);
- if (boost::algorithm::starts_with(ss,"local"))
- boost::algorithm::erase_first(ss,"local ");
- if (boost::algorithm::starts_with(ss,"function"))
- {
- boost::algorithm::erase_first(ss,"function ");
- int ps = ss.find_first_of(' ');
- int op = ss.find_first_of('(');
- if (ps<0)
- ps = ss.length()-1;
- if (op<0)
- op = ss.length()-1;
- ps = std::min(ps,op);
- ret->push_back(ss.substr(0,ps));
- }
- }
- is.close();
- return ret;
- }
|