]> git.lizzy.rs Git - minetest.git/blobdiff - src/script/cpp_api/s_base.h
[CSM] Don't Load the package library (#6944)
[minetest.git] / src / script / cpp_api / s_base.h
index 28fefdd3796f587c4a0010e5bf42b006124a4b12..4837f4f993f9366bacc068619b3c870d3c2cf27d 100644 (file)
@@ -17,22 +17,25 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */
 
-#ifndef S_BASE_H_
-#define S_BASE_H_
+#pragma once
 
 #include <iostream>
 #include <string>
 #include <thread>
+#include <mutex>
+#include <unordered_map>
 #include "util/basic_macros.h"
 
 extern "C" {
 #include <lua.h>
+#include <lualib.h>
 }
 
 #include "irrlichttypes.h"
-#include "threading/mutex_auto_lock.h"
 #include "common/c_types.h"
 #include "common/c_internal.h"
+#include "debug.h"
+#include "config.h"
 
 #define SCRIPTAPI_LOCK_DEBUG
 #define SCRIPTAPI_DEBUG
@@ -41,12 +44,12 @@ extern "C" {
 // use that name to bypass security!
 #define BUILTIN_MOD_NAME "*builtin*"
 
-#define PCALL_RES(RES) do {                 \
+#define PCALL_RES(RES) {                    \
        int result_ = (RES);                    \
        if (result_ != 0) {                     \
                scriptError(result_, __FUNCTION__); \
        }                                       \
-} while (0)
+}
 
 #define runCallbacks(nargs, mode) \
        runCallbacksRaw((nargs), (mode), __FUNCTION__)
@@ -55,9 +58,10 @@ extern "C" {
        setOriginFromTableRaw(index, __FUNCTION__)
 
 enum class ScriptingType: u8 {
+       Async,
        Client,
-       Server,
-       MainMenu
+       MainMenu,
+       Server
 };
 
 class Server;
@@ -71,7 +75,12 @@ class ServerActiveObject;
 
 class ScriptApiBase {
 public:
-       ScriptApiBase();
+       ScriptApiBase(ScriptingType type);
+       // fake constructor to allow script API classes (e.g ScriptApiEnv) to virtually inherit from this one.
+       ScriptApiBase()
+       {
+               FATAL_ERROR("ScriptApiBase created without ScriptingType!");
+       }
        virtual ~ScriptApiBase();
        DISABLE_CLASS_COPY(ScriptApiBase);
 
@@ -92,7 +101,6 @@ class ScriptApiBase {
 
        IGameDef *getGameDef() { return m_gamedef; }
        Server* getServer();
-       void setType(ScriptingType type) { m_type = type; }
        ScriptingType getType() { return m_type; }
 #ifndef SERVER
        Client* getClient();
@@ -102,6 +110,8 @@ class ScriptApiBase {
        void setOriginDirect(const char *origin);
        void setOriginFromTableRaw(int index, const char *fxn);
 
+       void clientOpenLibs(lua_State *L);
+
 protected:
        friend class LuaABM;
        friend class LuaLBM;
@@ -147,5 +157,3 @@ class ScriptApiBase {
        GUIEngine      *m_guiengine = nullptr;
        ScriptingType  m_type;
 };
-
-#endif /* S_BASE_H_ */