PolyObject.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  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. float floatVal;
  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, float val) {
  24. ObjectEntry *entry = new ObjectEntry();
  25. entry->type = ObjectEntry::FLOAT_ENTRY;
  26. entry->floatVal = 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(String name, bool val) {
  51. ObjectEntry *entry = new ObjectEntry();
  52. entry->type = ObjectEntry::BOOL_ENTRY;
  53. entry->boolVal = val;
  54. entry->name = name;
  55. children.push_back(entry);
  56. length = children.size();
  57. return entry;
  58. }
  59. static const int FLOAT_ENTRY = 0;
  60. static const int INT_ENTRY = 1;
  61. static const int BOOL_ENTRY = 2;
  62. static const int ARRAY_ENTRY = 3;
  63. static const int STRING_ENTRY = 4;
  64. static const int CONTAINER_ENTRY = 5;
  65. inline ObjectEntry *operator [] ( int index) { return children[index];}
  66. inline ObjectEntry *operator [] ( String key) { for(int i=0; i < children.size(); i++) { if(children[i]->name == key) { return children[i]; } } return NULL; }
  67. vector<ObjectEntry*> children;
  68. };
  69. class _PolyExport Object {
  70. public:
  71. Object();
  72. ~Object();
  73. void loadFromXML(String fileName);
  74. void saveToXML(String fileName);
  75. void createFromXMLElement(TiXmlElement *element, ObjectEntry *entry);
  76. TiXmlElement *createElementFromObjectEntry(ObjectEntry *entry);
  77. ObjectEntry root;
  78. };
  79. }