Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
147 changes: 144 additions & 3 deletions src/Lua.cs
Original file line number Diff line number Diff line change
Expand Up @@ -906,9 +906,8 @@ public void PushString(string value, params object[] args)
/// Pushes a double with value n onto the stack.
/// </summary>
/// <param name="number"></param>
public void PushNumber(double number) => NativeMethods.lua_pushnumber(_luaState, number);


public void PushNumber(double number) => NativeMethods.lua_pushnumber(_luaState, number);

/// <summary>
/// Pushes the thread represented by L onto the stack. Returns true if this thread is the main thread of its state.
/// </summary>
Expand Down Expand Up @@ -2005,14 +2004,156 @@ public bool NewMetaTable(string name)
return NativeMethods.luaL_newmetatable(_luaState, name) != 0;
}

private static int OpenBase(IntPtr luaState)
{
return KeraLua.NativeMethods.luaopen_base(luaState);
}

private static int OpenPackage(IntPtr luaState)
{
return KeraLua.NativeMethods.luaopen_package(luaState);
}

private static int OpenCoroutine(IntPtr luaState)
{
return KeraLua.NativeMethods.luaopen_coroutine(luaState);
}

private static int OpenTable(IntPtr luaState)
{
return KeraLua.NativeMethods.luaopen_table(luaState);
}

private static int OpenIO(IntPtr luaState)
{
return KeraLua.NativeMethods.luaopen_io(luaState);
}

private static int OpenOS(IntPtr luaState)
{
return KeraLua.NativeMethods.luaopen_os(luaState);
}

private static int OpenString(IntPtr luaState)
{
return KeraLua.NativeMethods.luaopen_string(luaState);
}

private static int OpenUTF8(IntPtr luaState)
{
return KeraLua.NativeMethods.luaopen_utf8(luaState);
}

private static int OpenMath(IntPtr luaState)
{
return KeraLua.NativeMethods.luaopen_math(luaState);
}

private static int OpenDebug(IntPtr luaState)
{
return KeraLua.NativeMethods.luaopen_debug(luaState);
}

/// <summary>
/// Opens all standard Lua libraries into the given state.
/// Equivalent to calling <c>luaL_openlibs</c>
/// </summary>
public void OpenLibs()
{
NativeMethods.luaL_openlibs(_luaState);
}

/// <summary>
/// Opens the base library (<c>_G</c>), registering core global functions
/// such as <c>print</c>, <c>pairs</c>, and <c>type</c>
/// </summary>
public void OpenBasicLibrary()
{
RequireF("_G", OpenBase, true);
Pop(1);
}

/// <summary>
/// Opens the package library, enabling module loading via <c>require</c>
/// </summary>
public void OpenPackageLibrary()
{
RequireF("package", OpenPackage, true);
Pop(1);
}

/// <summary>
/// Opens the coroutine library for cooperative multitasking
/// </summary>
public void OpenCoroutineLibrary()
{
RequireF("coroutine", OpenCoroutine, true);
Pop(1);
}

/// <summary>
/// Opens the table library for table manipulation utilities
/// </summary>
public void OpenTableLibrary()
{
RequireF("table", OpenTable, true);
Pop(1);
}

/// <summary>
/// Opens the I/O library for file operations
/// </summary>
public void OpenIOLibrary()
{
RequireF("io", OpenIO, true);
Pop(1);
}

/// <summary>
/// Opens the OS library for operating system interactions
/// </summary>
public void OpenOSLibrary()
{
RequireF("os", OpenOS, true);
Pop(1);
}

/// <summary>
/// Opens the string library for string manipulation functions
/// </summary>
public void OpenStringLibrary()
{
RequireF("string", OpenString, true);
Pop(1);
}

/// <summary>
/// Opens the UTF-8 library for Unicode string handling
/// </summary>
public void OpenUTF8Library()
{
RequireF("utf8", OpenUTF8, true);
Pop(1);
}

/// <summary>
/// Opens the math library for mathematical operations
/// </summary>
public void OpenMathLibrary()
{
RequireF("math", OpenMath, true);
Pop(1);
}

/// <summary>
/// Opens the debug library for advanced debugging and introspection
/// </summary>
public void OpenDebugLibrary()
{
RequireF("debug", OpenDebug, true);
Pop(1);
}

/// <summary>
/// If the function argument arg is an integer (or convertible to an integer), returns this integer. If this argument is absent or is nil, returns d
/// </summary>
Expand Down
30 changes: 30 additions & 0 deletions src/NativeMethods.cs
Original file line number Diff line number Diff line change
Expand Up @@ -442,6 +442,36 @@ internal static extern charptr_t luaL_traceback
[DllImport(LuaLibraryName, CallingConvention = CallingConvention.Cdecl)]
internal static extern void luaL_where(lua_State luaState, int level);

[DllImport(LuaLibraryName, CallingConvention = CallingConvention.Cdecl)]
internal static extern int luaopen_base(lua_State luaState);

[DllImport(LuaLibraryName, CallingConvention = CallingConvention.Cdecl)]
internal static extern int luaopen_package(lua_State luaState);

[DllImport(LuaLibraryName, CallingConvention = CallingConvention.Cdecl)]
internal static extern int luaopen_coroutine(lua_State luaState);

[DllImport(LuaLibraryName, CallingConvention = CallingConvention.Cdecl)]
internal static extern int luaopen_table(lua_State luaState);

[DllImport(LuaLibraryName, CallingConvention = CallingConvention.Cdecl)]
internal static extern int luaopen_io(lua_State luaState);

[DllImport(LuaLibraryName, CallingConvention = CallingConvention.Cdecl)]
internal static extern int luaopen_os(lua_State luaState);

[DllImport(LuaLibraryName, CallingConvention = CallingConvention.Cdecl)]
internal static extern int luaopen_string(lua_State luaState);

[DllImport(LuaLibraryName, CallingConvention = CallingConvention.Cdecl)]
internal static extern int luaopen_utf8(lua_State luaState);

[DllImport(LuaLibraryName, CallingConvention = CallingConvention.Cdecl)]
internal static extern int luaopen_math(lua_State luaState);

[DllImport(LuaLibraryName, CallingConvention = CallingConvention.Cdecl)]
internal static extern int luaopen_debug(lua_State luaState);

#pragma warning restore CA2101 // Bug on CA + VS2017
#pragma warning restore IDE1006 // Naming Styles

Expand Down
Loading