ReferenceTable.cpp 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #include "Base.h"
  2. #include "ReferenceTable.h"
  3. namespace gameplay
  4. {
  5. ReferenceTable::ReferenceTable(void)
  6. {
  7. }
  8. ReferenceTable::~ReferenceTable(void)
  9. {
  10. }
  11. void ReferenceTable::add(std::string xref, Object* obj)
  12. {
  13. _table[xref] = Reference(xref, obj);
  14. }
  15. Object* ReferenceTable::get(const std::string& xref)
  16. {
  17. std::map<std::string, Reference>::iterator it = _table.find(xref);
  18. if (it != _table.end())
  19. {
  20. Reference ref = it->second;
  21. return ref.getObj();
  22. }
  23. return NULL;
  24. }
  25. void ReferenceTable::writeBinary(FILE* file)
  26. {
  27. write((unsigned int)_table.size(), file);
  28. for ( std::map<std::string, Reference>::iterator i=_table.begin() ; i != _table.end(); ++i)
  29. {
  30. i->second.writeBinary(file);
  31. }
  32. }
  33. void ReferenceTable::writeText(FILE* file)
  34. {
  35. fprintf(file, "<RefTable>\n");
  36. for ( std::map<std::string, Reference>::iterator i=_table.begin() ; i != _table.end(); ++i)
  37. {
  38. i->second.writeText(file);
  39. }
  40. fprintf(file, "</RefTable>\n");
  41. }
  42. void ReferenceTable::updateOffsets(FILE* file)
  43. {
  44. for (std::map<std::string, Reference>::iterator i = _table.begin(); i != _table.end(); ++i)
  45. {
  46. Reference& ref = i->second;
  47. ref.updateOffset(file);
  48. }
  49. }
  50. std::map<std::string, Reference>::iterator ReferenceTable::begin()
  51. {
  52. return _table.begin();
  53. }
  54. std::map<std::string, Reference>::iterator ReferenceTable::end()
  55. {
  56. return _table.end();
  57. }
  58. }