LCOV - code coverage report
Current view: top level - src/script/lua_api - l_base.cpp (source / functions) Hit Total Coverage
Test: report Lines: 13 26 50.0 %
Date: 2015-07-11 18:23:49 Functions: 5 8 62.5 %

          Line data    Source code
       1             : /*
       2             : Minetest
       3             : Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com>
       4             : 
       5             : This program is free software; you can redistribute it and/or modify
       6             : it under the terms of the GNU Lesser General Public License as published by
       7             : the Free Software Foundation; either version 2.1 of the License, or
       8             : (at your option) any later version.
       9             : 
      10             : This program is distributed in the hope that it will be useful,
      11             : but WITHOUT ANY WARRANTY; without even the implied warranty of
      12             : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      13             : GNU Lesser General Public License for more details.
      14             : 
      15             : You should have received a copy of the GNU Lesser General Public License along
      16             : with this program; if not, write to the Free Software Foundation, Inc.,
      17             : 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
      18             : */
      19             : 
      20             : #include "lua_api/l_base.h"
      21             : #include "lua_api/l_internal.h"
      22             : #include "cpp_api/s_base.h"
      23             : #include <mods.h>
      24             : #include <server.h>
      25             : 
      26          21 : ScriptApiBase *ModApiBase::getScriptApiBase(lua_State *L)
      27             : {
      28             :         // Get server from registry
      29          21 :         lua_getfield(L, LUA_REGISTRYINDEX, "scriptapi");
      30          21 :         ScriptApiBase *sapi_ptr = (ScriptApiBase*) lua_touserdata(L, -1);
      31          21 :         lua_pop(L, 1);
      32          21 :         return sapi_ptr;
      33             : }
      34             : 
      35           0 : Server *ModApiBase::getServer(lua_State *L)
      36             : {
      37           0 :         return getScriptApiBase(L)->getServer();
      38             : }
      39             : 
      40           0 : Environment *ModApiBase::getEnv(lua_State *L)
      41             : {
      42           0 :         return getScriptApiBase(L)->getEnv();
      43             : }
      44             : 
      45          21 : GUIEngine *ModApiBase::getGuiEngine(lua_State *L)
      46             : {
      47          21 :         return getScriptApiBase(L)->getGuiEngine();
      48             : }
      49             : 
      50           0 : std::string ModApiBase::getCurrentModPath(lua_State *L)
      51             : {
      52           0 :         lua_getfield(L, LUA_REGISTRYINDEX, SCRIPT_MOD_NAME_FIELD);
      53           0 :         const char *current_mod_name = lua_tostring(L, -1);
      54           0 :         if (!current_mod_name)
      55           0 :                 return ".";
      56             : 
      57           0 :         const ModSpec *mod = getServer(L)->getModSpec(current_mod_name);
      58           0 :         if (!mod)
      59           0 :                 return ".";
      60             : 
      61           0 :         return mod->path;
      62             : }
      63             : 
      64             : 
      65          58 : bool ModApiBase::registerFunction(
      66             :         lua_State *L,
      67             :         const char *name,
      68             :         lua_CFunction fct,
      69             :         int top)
      70             : {
      71             :         //TODO check presence first!
      72             : 
      73          58 :         lua_pushstring(L,name);
      74          58 :         lua_pushcfunction(L,fct);
      75          58 :         lua_settable(L, top);
      76             : 
      77          58 :         return true;
      78           3 : }

Generated by: LCOV version 1.11