very very very very basic lua handling/mini-wrapper
This commit is contained in:
parent
1ff88d6729
commit
3c721a4c1b
10 changed files with 104 additions and 4 deletions
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
bin/
|
||||||
|
obj/
|
39
Makefile
Normal file
39
Makefile
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
LUA_VERSION := 5.3
|
||||||
|
LUA = lua$(LUA_VERSION)
|
||||||
|
|
||||||
|
SRC_DIR := src
|
||||||
|
OBJ_DIR := obj
|
||||||
|
BIN_DIR := bin
|
||||||
|
|
||||||
|
EXE := $(BIN_DIR)/out
|
||||||
|
OBJ_OUT_DIRS := obj/Main obj/LuaHandler
|
||||||
|
SRC := $(SRC_DIR)/Main/Main.cpp $(SRC_DIR)/LuaHandler/LuaHandler.cpp
|
||||||
|
OBJ := $(OBJ_DIR)/Main/Main.o $(OBJ_DIR)/LuaHandler/LuaHandler.o
|
||||||
|
CC := g++
|
||||||
|
|
||||||
|
CPPFLAGS := -I/usr/include/$(LUA) -Iinclude -MMD -MP
|
||||||
|
CFLAGS := -Wall
|
||||||
|
LDFLAGS :=
|
||||||
|
LDLIBS := -l$(LUA) -ldl
|
||||||
|
|
||||||
|
.PHONY: all clean run
|
||||||
|
|
||||||
|
all: $(EXE)
|
||||||
|
|
||||||
|
run: $(EXE)
|
||||||
|
@echo -e "\033[1m---> \033[1;35mRunning binary from $(EXE)\033[0m"
|
||||||
|
@./$(EXE)
|
||||||
|
|
||||||
|
$(EXE): $(OBJ) | $(BIN_DIR)
|
||||||
|
$(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@
|
||||||
|
|
||||||
|
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp | $(OBJ_DIR) $(OBJ_OUT_DIRS)
|
||||||
|
$(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@
|
||||||
|
|
||||||
|
$(BIN_DIR) $(OBJ_DIR) $(OBJ_OUT_DIRS):
|
||||||
|
mkdir -p $@
|
||||||
|
|
||||||
|
clean:
|
||||||
|
@$(RM) -rv $(BIN_DIR) $(OBJ_DIR)
|
||||||
|
|
||||||
|
-include $(OBJ:.o=.d)
|
|
@ -1,3 +1,4 @@
|
||||||
# game
|
# game
|
||||||
|
|
||||||
yes
|
## dependencies
|
||||||
|
- lua5.3
|
1
Script.lua
Normal file
1
Script.lua
Normal file
|
@ -0,0 +1 @@
|
||||||
|
libepic.say_something("lol")
|
|
@ -1 +0,0 @@
|
||||||
git please
|
|
18
include/LuaHandler/LuaHandler.hpp
Normal file
18
include/LuaHandler/LuaHandler.hpp
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
#ifndef _LUAHANDLER_H
|
||||||
|
#define _LUAHANDLER_H
|
||||||
|
|
||||||
|
extern "C"{
|
||||||
|
#include <lua.h>
|
||||||
|
#include <lauxlib.h>
|
||||||
|
}
|
||||||
|
|
||||||
|
struct LuaHandler {
|
||||||
|
lua_State* L;
|
||||||
|
|
||||||
|
LuaHandler(lua_State* L) : L(L) {};
|
||||||
|
|
||||||
|
void defineClass(const char* className);
|
||||||
|
void defineFunction(const char* className, const char* valueName, lua_CFunction func);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
|
@ -1 +0,0 @@
|
||||||
git please
|
|
22
src/LuaHandler/LuaHandler.cpp
Normal file
22
src/LuaHandler/LuaHandler.cpp
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
#include <LuaHandler/LuaHandler.hpp>
|
||||||
|
|
||||||
|
void LuaHandler::defineClass(const char* className) {
|
||||||
|
// Create a new table and assign it to a global variable
|
||||||
|
lua_newtable(L);
|
||||||
|
lua_setglobal(L, className);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LuaHandler::defineFunction(const char* className, const char* valueName, lua_CFunction func) {
|
||||||
|
// Get the table that should have been defined with LuaHandler::defineClass
|
||||||
|
lua_getglobal(L, className);
|
||||||
|
|
||||||
|
// Push the function name, as well as the function onto the stack
|
||||||
|
lua_pushstring(L, valueName);
|
||||||
|
lua_pushcfunction(L, func);
|
||||||
|
|
||||||
|
// Add the function inside the table, giving it the specified name
|
||||||
|
lua_settable(L, -3);
|
||||||
|
|
||||||
|
// Keep the stack balanced
|
||||||
|
lua_pop(L, 1);
|
||||||
|
}
|
20
src/Main/Main.cpp
Normal file
20
src/Main/Main.cpp
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
#include <LuaHandler/LuaHandler.hpp>
|
||||||
|
|
||||||
|
static int say_something(lua_State* L) {
|
||||||
|
std::cout << "something: " << lua_tostring(L, 1) << "\n";
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
lua_State* L = luaL_newstate();
|
||||||
|
LuaHandler handler(L);
|
||||||
|
|
||||||
|
handler.defineClass("libepic");
|
||||||
|
handler.defineFunction("libepic", "say_something", &say_something);
|
||||||
|
|
||||||
|
luaL_dofile(handler.L, "Script.lua");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
1
vendor/.heygitpleasekeepthisfolder
vendored
1
vendor/.heygitpleasekeepthisfolder
vendored
|
@ -1 +0,0 @@
|
||||||
git please
|
|
Reference in a new issue