EventParametersProxy.cpp 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #include "precompiled.h"
  2. #include "EventParametersProxy.h"
  3. #include "Utilities.h"
  4. #include <Rocket/Core/Variant.h>
  5. #include <Rocket/Core/Dictionary.h>
  6. namespace Rocket {
  7. namespace Core {
  8. namespace Lua {
  9. int EventParametersProxy__index(lua_State* L)
  10. {
  11. /*the table obj and the missing key are currently on the stack(index 1 & 2) as defined by the Lua language*/
  12. int keytype = lua_type(L,2);
  13. if(keytype == LUA_TSTRING) //only valid key types
  14. {
  15. EventParametersProxy* obj = LuaType<EventParametersProxy>::check(L,1);
  16. LUACHECKOBJ(obj);
  17. const char* key = lua_tostring(L,2);
  18. Variant* param = obj->owner->GetParameters()->Get(key);
  19. PushVariant(L,param);
  20. return 1;
  21. }
  22. else
  23. return LuaType<EventParametersProxy>::index(L);
  24. }
  25. //method
  26. int EventParametersProxyGetTable(lua_State* L, EventParametersProxy* obj)
  27. {
  28. const Dictionary* params = obj->owner->GetParameters();
  29. int index = 0;
  30. String key;
  31. Variant* value;
  32. lua_newtable(L);
  33. int tableindex = lua_gettop(L);
  34. while(params->Iterate(index,key,value))
  35. {
  36. lua_pushstring(L,key.CString());
  37. PushVariant(L,value);
  38. lua_settable(L,tableindex);
  39. }
  40. return 1;
  41. }
  42. RegType<EventParametersProxy> EventParametersProxyMethods[] =
  43. {
  44. LUAMETHOD(EventParametersProxy,GetTable)
  45. { NULL, NULL },
  46. };
  47. luaL_reg EventParametersProxyGetters[] =
  48. {
  49. { NULL, NULL },
  50. };
  51. luaL_reg EventParametersProxySetters[] =
  52. {
  53. { NULL, NULL },
  54. };
  55. }
  56. }
  57. }