ObjectEntry.lua 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. class "ObjectEntry"
  2. FLOAT_ENTRY = 0
  3. INT_ENTRY = 1
  4. BOOL_ENTRY = 2
  5. ARRAY_ENTRY = 3
  6. STRING_ENTRY = 4
  7. CONTAINER_ENTRY = 5
  8. function ObjectEntry:__index__(name)
  9. if name == "type" then
  10. return Polycore.ObjectEntry_get_type(self.__ptr)
  11. elseif name == "name" then
  12. return Polycore.ObjectEntry_get_name(self.__ptr)
  13. elseif name == "NumberVal" then
  14. return Polycore.ObjectEntry_get_NumberVal(self.__ptr)
  15. elseif name == "intVal" then
  16. return Polycore.ObjectEntry_get_intVal(self.__ptr)
  17. elseif name == "stringVal" then
  18. return Polycore.ObjectEntry_get_stringVal(self.__ptr)
  19. elseif name == "boolVal" then
  20. return Polycore.ObjectEntry_get_boolVal(self.__ptr)
  21. elseif name == "length" then
  22. return Polycore.ObjectEntry_get_length(self.__ptr)
  23. end
  24. end
  25. function ObjectEntry:__set_callback(name,value)
  26. if name == "type" then
  27. Polycore.ObjectEntry_set_type(self.__ptr, value)
  28. return true
  29. elseif name == "name" then
  30. Polycore.ObjectEntry_set_name(self.__ptr, value)
  31. return true
  32. elseif name == "NumberVal" then
  33. Polycore.ObjectEntry_set_NumberVal(self.__ptr, value)
  34. return true
  35. elseif name == "intVal" then
  36. Polycore.ObjectEntry_set_intVal(self.__ptr, value)
  37. return true
  38. elseif name == "stringVal" then
  39. Polycore.ObjectEntry_set_stringVal(self.__ptr, value)
  40. return true
  41. elseif name == "boolVal" then
  42. Polycore.ObjectEntry_set_boolVal(self.__ptr, value)
  43. return true
  44. elseif name == "length" then
  45. Polycore.ObjectEntry_set_length(self.__ptr, value)
  46. return true
  47. end
  48. return false
  49. end
  50. function ObjectEntry:ObjectEntry(...)
  51. for k,v in pairs(arg) do
  52. if type(v) == "table" then
  53. if v.__ptr ~= nil then
  54. arg[k] = v.__ptr
  55. end
  56. end
  57. end
  58. if self.__ptr == nil and arg[1] ~= "__skip_ptr__" then
  59. self.__ptr = Polycore.ObjectEntry(unpack(arg))
  60. Polycore.__ptr_lookup[self.__ptr] = self
  61. end
  62. end
  63. function ObjectEntry:addChild(name)
  64. local retVal = Polycore.ObjectEntry_addChild(self.__ptr, name.__ptr)
  65. if retVal == nil then return nil end
  66. if Polycore.__ptr_lookup[retVal] ~= nil then
  67. return Polycore.__ptr_lookup[retVal]
  68. else
  69. Polycore.__ptr_lookup[retVal] = ObjectEntry("__skip_ptr__")
  70. Polycore.__ptr_lookup[retVal].__ptr = retVal
  71. return Polycore.__ptr_lookup[retVal]
  72. end
  73. end
  74. function ObjectEntry:__delete()
  75. Polycore.__ptr_lookup[self.__ptr] = nil
  76. Polycore.delete_ObjectEntry(self.__ptr)
  77. end