resyncreceiver_L.cpp

Go to the documentation of this file.
00001 #include "lugre_prefix.h"
00002 #include "lugre_luabind.h"
00003 #include "lugre_net.h"
00004 #include "resyncreceiver.h"
00005 
00006 extern "C" {
00007     #include "lua.h"
00008     #include "lauxlib.h"
00009     #include "lualib.h"
00010 }
00011 using namespace Lugre;
00012 
00013 class cResyncReceiver_L : public cLuaBind<cResyncReceiver> { public:
00015         virtual void RegisterMethods    (lua_State *L) { PROFILE
00016             lua_register(L,"CreateResyncReceiver",      &cResyncReceiver_L::CreateResyncReceiver);
00017             lua_register(L,"SetGlobalResyncReceiver",   &cResyncReceiver_L::SetGlobalResyncReceiver);
00018 
00019             #define REGISTER_METHOD(methodname) mlMethod.push_back(make_luaL_reg(#methodname,&cResyncReceiver_L::methodname));
00020             REGISTER_METHOD(Destroy);
00021             REGISTER_METHOD(ReceiveResyncs);
00022             REGISTER_METHOD(ReceiveResyncsFromFIFO);
00023         }
00024 
00025     // static methods exported to lua
00026 
00028         static int                      CreateResyncReceiver        (lua_State *L) { PROFILE 
00029             return CreateUData(L,new cResyncReceiver()); 
00030         }
00031         
00033         static int          SetGlobalResyncReceiver (lua_State *L) { PROFILE 
00034             gpResyncReceiver = (lua_gettop(L) >= 1 && !lua_isnil(L,1)) ? checkudata(L) : 0;
00035             return 0; 
00036         }
00037 
00038     // object methods exported to lua
00039         
00040         static int  Destroy             (lua_State *L) { PROFILE 
00041             delete checkudata_alive(L);
00042             return 0; 
00043         }
00044         
00047         static int          ReceiveResyncs  (lua_State *L) { PROFILE 
00048             cUDP_ReceiveSocket* pUDP_ReceiveSocket  = cLuaBind<cUDP_ReceiveSocket>::checkudata_alive(L,2);
00049             
00050             uint32              iServerAddr         = (uint32)(long)(lua_touserdata(L,3));
00051             // iAddr is not really a pointer, but lua has problems encoding full 32bit integers in it's number type (float)
00052             
00053             lua_pushnumber(L,checkudata_alive(L)->ReceiveResyncs(*pUDP_ReceiveSocket,iServerAddr));
00054             return 1; 
00055         }
00056         
00058         static int          ReceiveResyncsFromFIFO  (lua_State *L) { PROFILE 
00059             cFIFO*          pFIFO   = cLuaBind<cFIFO>::checkudata_alive(L,2);
00060             checkudata_alive(L)->ReceiveResyncsFromFIFO(*pFIFO);
00061             return 0; 
00062         }
00063 
00064         virtual const char* GetLuaTypeName () { return "sfz.ResyncReceiver"; }
00065 };
00066 
00068 void    cResyncReceiver::LuaRegister    (lua_State *L) { PROFILE
00069     cLuaBind<cResyncReceiver>::GetSingletonPtr(new cResyncReceiver_L())->LuaRegister(L);
00070 }

Generated on Wed May 23 06:00:15 2012 for cpp by  doxygen 1.5.6