Main Page | Modules | Namespace List | Class Hierarchy | Compound List | File List | Compound Members | File Members

adsolua.h

Go to the documentation of this file.
00001 /*****************************************************************************
00002  * $Id: adsolua.h,v 1.3 2003/07/16 11:38:33 schou Exp $
00003  * Author: Jakob Schou Jensen <schou@sourceforge.net>
00004  * Licence: GPL
00005  *
00006  * Description: Lua interface
00007  *
00008  ****************************************************************************/
00009 
00015 #ifndef ADSOLUA_H
00016 #define ADSOLUA_H
00017 
00018 #define LUA_API   extern "C"
00019 #define LUALIB_API  extern "C"
00020 
00021 #include <set>
00022 #include <lua.h>
00023 #include <lualib.h>
00024 
00025 using namespace std;
00026 
00027 #define ADSOLUA_MAXINTERFACES 16
00028 
00032 int globalCallback(lua_State *L);
00033 
00034 struct AdsoLuaUserData {
00035   char *type;
00036   class AdsoLua *lua;
00037 };
00038 
00039 struct AdsoLuaFunction : public AdsoLuaUserData {
00040   char *name;
00041   AdsoLuaFunction(){
00042     type = "function";
00043   }
00044 };
00045 
00046 struct AdsoLuaTable : public AdsoLuaUserData {
00047   char *name;
00048   AdsoLuaTable(){
00049     type = "table";
00050   }
00051 };
00052 
00056 class AdsoLuaInterface {
00062   virtual int luaCallback(lua_State *L, AdsoLuaUserData *ud) = 0;
00067   virtual void luaSetupInterface(AdsoLua*) = 0;
00068  public:
00069   virtual ~AdsoLuaInterface(){}
00070   friend class AdsoLua;
00071 };
00072 
00073 class AdsoLua {
00074   lua_State *L;
00075   int callback(AdsoLuaUserData *ud);
00076   AdsoLuaInterface *iflist[ADSOLUA_MAXINTERFACES];
00077   int interfaceCount;
00078 
00079  public:
00082   void declareFunction(char *name);
00087   void declareTable(char *name);
00089   void setVariable(char *name, int val);
00091   void setVariable(char *name, char *str);
00093   int callFunction(char *name, int val);
00094 
00096   void addInterface(AdsoLuaInterface *intf);
00098   int doFile(char *filename);
00099   AdsoLua();
00100   ~AdsoLua();
00101 
00102   friend int globalCallback(lua_State *L);
00103 };
00104 
00106 // Extensions
00108 
00109 /*class AdsoLuaState {
00110   char *onEvent;
00111 };
00112 
00113 class AdsoLuaStateMachine {
00114   Set<AdsoLuaState> states;
00115   AdsoLuaState *currentState;
00116   char *onEvent;
00117  public:
00118   AdsoLuaStateMachine(){
00119     currentState = 0;
00120     onEvent = 0;
00121   }
00122 };
00123 */
00124 
00125 #endif
00126 

Generated on Mon Jul 21 10:44:47 2003 for Rover by doxygen 1.3.2