Reference.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. /**
  2. * Copyright (c) 2006-2012 LOVE Development Team
  3. *
  4. * This software is provided 'as-is', without any express or implied
  5. * warranty. In no event will the authors be held liable for any damages
  6. * arising from the use of this software.
  7. *
  8. * Permission is granted to anyone to use this software for any purpose,
  9. * including commercial applications, and to alter it and redistribute it
  10. * freely, subject to the following restrictions:
  11. *
  12. * 1. The origin of this software must not be misrepresented; you must not
  13. * claim that you wrote the original software. If you use this software
  14. * in a product, an acknowledgment in the product documentation would be
  15. * appreciated but is not required.
  16. * 2. Altered source versions must be plainly marked as such, and must not be
  17. * misrepresented as being the original software.
  18. * 3. This notice may not be removed or altered from any source distribution.
  19. **/
  20. #ifndef LOVE_REFERENCE_H
  21. #define LOVE_REFERENCE_H
  22. // LOVE
  23. #include "runtime.h"
  24. namespace love
  25. {
  26. /**
  27. * This class wraps the reference functionality built into
  28. * Lua, which allows C++ code to refer to Lua variables.
  29. **/
  30. class Reference
  31. {
  32. private:
  33. // The Lua state in which the reference resides.
  34. lua_State * L;
  35. // Index to the Lua reference.
  36. int idx;
  37. public:
  38. /**
  39. * Creates the reference object, but does not create
  40. * the actual reference.
  41. **/
  42. Reference();
  43. /**
  44. * Creates the object and a reference to the value
  45. * on the top of the stack.
  46. **/
  47. Reference(lua_State * L);
  48. /**
  49. * Deletes the reference, if any.
  50. **/
  51. virtual ~Reference();
  52. /**
  53. * Creates a reference to the value on the
  54. * top of the stack.
  55. **/
  56. void ref(lua_State * L);
  57. /**
  58. * Unrefs the reference, if any.
  59. **/
  60. void unref();
  61. /**
  62. * Pushes the referred value onto the stack.
  63. **/
  64. void push();
  65. /**
  66. * Gets the Lua state associated with this
  67. * reference.
  68. **/
  69. lua_State * getL();
  70. };
  71. } // love
  72. #endif // LOVE_REFERENCE_H