diff --git a/src/core/org/luaj/lib/CoroutineLib.java b/src/core/org/luaj/lib/CoroutineLib.java index 20e49e23..351f742a 100644 --- a/src/core/org/luaj/lib/CoroutineLib.java +++ b/src/core/org/luaj/lib/CoroutineLib.java @@ -54,6 +54,7 @@ public class CoroutineLib extends LFunction { for ( int i=1; i<=YIELD; i++ ) lib.put(NAMES[i], new CoroutineLib(i)); globals.put("coroutine",lib); + PackageLib.setIsLoaded("coroutine", lib); } private final int id; diff --git a/src/core/org/luaj/lib/MathLib.java b/src/core/org/luaj/lib/MathLib.java index eb0cda79..235cb93d 100644 --- a/src/core/org/luaj/lib/MathLib.java +++ b/src/core/org/luaj/lib/MathLib.java @@ -120,7 +120,9 @@ public class MathLib extends LFunction { math.put( "huge", new LDouble( Double.MAX_VALUE ) ); math.put( "pi", new LDouble( Math.PI ) ); globals.put( "math", math ); + PackageLib.setIsLoaded("math", math); platform = Platform.getInstance(); + } private static Random random = null; diff --git a/src/core/org/luaj/lib/PackageLib.java b/src/core/org/luaj/lib/PackageLib.java index 0844e183..f85b30ca 100644 --- a/src/core/org/luaj/lib/PackageLib.java +++ b/src/core/org/luaj/lib/PackageLib.java @@ -95,6 +95,12 @@ public class PackageLib extends LFunction { pckg.put( "loaders", loaders ); pckg.put( _PATH, _LUA_PATH ); globals.put( "package", pckg ); + setIsLoaded( "package", pckg ); + } + + /** Allow packages to mark themselves as loaded */ + public static void setIsLoaded(String name, LTable value) { + LOADED.put(name, value); } public static void setLuaPath( String newLuaPath ) { @@ -180,7 +186,7 @@ public class PackageLib extends LFunction { int n = vm.gettop(); LValue value = LOADED.get(modname); LTable module; - if ( value.luaGetType() != Lua.LUA_TTABLE ) { /* not found? */ + if ( ! value.isTable() ) { /* not found? */ /* try global variable (and create one if it does not exist) */ module = findtable( vm._G, modname ); @@ -322,7 +328,11 @@ public class PackageLib extends LFunction { } public static void loadlib( LuaState vm ) { - vm.error( "loadlib not implemented" ); + vm.checkstring(2); + vm.resettop(); + vm.pushnil(); + vm.pushstring("dynamic libraries not enabled"); + vm.pushstring("absent"); } diff --git a/src/core/org/luaj/lib/StringLib.java b/src/core/org/luaj/lib/StringLib.java index 3242514b..fabc2dcd 100644 --- a/src/core/org/luaj/lib/StringLib.java +++ b/src/core/org/luaj/lib/StringLib.java @@ -71,6 +71,7 @@ public class StringLib extends LFunction { for ( int i=1; i