PolyObject.h 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. #include "PolyGlobals.h"
  2. #include "PolyString.h"
  3. #include "tinyxml.h"
  4. namespace Polycode {
  5. class _PolyExport ObjectEntry {
  6. public:
  7. ObjectEntry() { type = ObjectEntry::CONTAINER_ENTRY; }
  8. int type;
  9. String name;
  10. Number NumberVal;
  11. int intVal;
  12. String stringVal;
  13. bool boolVal;
  14. int length;
  15. ObjectEntry *addChild(String name) {
  16. ObjectEntry *entry = new ObjectEntry();
  17. entry->type = ObjectEntry::CONTAINER_ENTRY;
  18. entry->name = name;
  19. children.push_back(entry);
  20. length = children.size();
  21. return entry;
  22. }
  23. ObjectEntry *addChild(String name, Number val) {
  24. ObjectEntry *entry = new ObjectEntry();
  25. entry->type = ObjectEntry::FLOAT_ENTRY;
  26. entry->NumberVal = val;
  27. entry->name = name;
  28. children.push_back(entry);
  29. length = children.size();
  30. return entry;
  31. }
  32. ObjectEntry *addChild(String name, int val) {
  33. ObjectEntry *entry = new ObjectEntry();
  34. entry->type = ObjectEntry::INT_ENTRY;
  35. entry->intVal = val;
  36. entry->name = name;
  37. children.push_back(entry);
  38. length = children.size();
  39. return entry;
  40. }
  41. ObjectEntry *addChild(String name, String val) {
  42. ObjectEntry *entry = new ObjectEntry();
  43. entry->type = ObjectEntry::STRING_ENTRY;
  44. entry->stringVal = val;
  45. entry->name = name;
  46. children.push_back(entry);
  47. length = children.size();
  48. return entry;
  49. }
  50. ObjectEntry *addChild(ObjectEntry *entry) {
  51. children.push_back(entry);
  52. length = children.size();
  53. return entry;
  54. }
  55. ObjectEntry *addChild(String name, bool val) {
  56. ObjectEntry *entry = new ObjectEntry();
  57. entry->type = ObjectEntry::BOOL_ENTRY;
  58. entry->boolVal = val;
  59. entry->name = name;
  60. children.push_back(entry);
  61. length = children.size();
  62. return entry;
  63. }
  64. static const int FLOAT_ENTRY = 0;
  65. static const int INT_ENTRY = 1;
  66. static const int BOOL_ENTRY = 2;
  67. static const int ARRAY_ENTRY = 3;
  68. static const int STRING_ENTRY = 4;
  69. static const int CONTAINER_ENTRY = 5;
  70. inline ObjectEntry *operator [] ( int index) { return children[index];}
  71. inline ObjectEntry *operator [] ( String key) { for(int i=0; i < children.size(); i++) { if(children[i]->name == key) { return children[i]; } } return NULL; }
  72. vector<ObjectEntry*> children;
  73. };
  74. class _PolyExport Object {
  75. public:
  76. Object();
  77. ~Object();
  78. bool loadFromXML(String fileName);
  79. void saveToXML(String fileName);
  80. void createFromXMLElement(TiXmlElement *element, ObjectEntry *entry);
  81. TiXmlElement *createElementFromObjectEntry(ObjectEntry *entry);
  82. ObjectEntry root;
  83. };
  84. }