1 package org.keplerproject.luajava.test;
2 
3 import java.util.Date;
4 
5 import org.keplerproject.luajava.JavaFunction;
6 import org.keplerproject.luajava.LuaException;
7 import org.keplerproject.luajava.LuaState;
8 
9 
10 /**
11  * Example of a library in Java openned in Lua using loadLib
12  *
13  * @author Thiago Ponte
14  */
15 public class LoadLibExample
16 {
17   private final static String LIB_NAME = "eg";
18 
getLibTable(LuaState L)19   private static void getLibTable(LuaState L)
20   {
21     L.getGlobal(LIB_NAME);
22     if (L.isNil(-1))
23     {
24       L.pop(1);
25       L.newTable();
26       L.pushValue(-1);
27       L.setGlobal(LIB_NAME);
28     }
29   }
30 
31   /**
32    * Method called by loadLib
33    */
open(LuaState L)34   public static void open(LuaState L) throws LuaException
35   {
36     getLibTable(L);
37 
38     L.pushString("example");
39 
40     L.pushJavaFunction(new JavaFunction(L) {
41       /**
42        * Example for loadLib.
43        * Prints the time and the first parameter, if any.
44        */
45       public int execute() throws LuaException
46       {
47         System.out.println(new Date().toString());
48 
49         if (L.getTop() > 1)
50         {
51           System.out.println(getParam(2));
52         }
53 
54         return 0;
55       }
56     });
57 
58     L.setTable(-3);
59 
60     L.pop(1);
61   }
62 }
63