/src/IO_BinaryFileStream/BinaryFileStream_Load.cpp

http://github.com/Akranar/daguerreo · C++ · 109 lines · 98 code · 11 blank · 0 comment · 4 complexity · a24dcb0328b37c7539336d48b4af35b4 MD5 · raw file

  1. #include "BinaryFileStream.h"
  2. #include <Core_ObjectFactory.h>
  3. bool BinaryFileStream::Load(Serializable *& val)
  4. {
  5. const Serializable * old_address = (const Serializable *) endian.ReadIntType<void*>(stream);
  6. if (old_address == NULL)
  7. {
  8. val = NULL;
  9. return true;
  10. }
  11. if (ShouldUnserialize(old_address, val))
  12. {
  13. char * object_type_id;
  14. Load(object_type_id);
  15. val = load_factory->Create(object_type_id);
  16. delete object_type_id;
  17. SetOldToNew(old_address, val);
  18. val->Unserialize(*this);
  19. }
  20. return true;
  21. }
  22. bool BinaryFileStream::Load(char *& val, int)
  23. {
  24. unsigned int string_length = endian.ReadIntType<unsigned int>(stream);
  25. char * rtn = new char[string_length + 1];
  26. rtn[string_length] = 0;
  27. for (unsigned int i = 0; i < string_length; ++i)
  28. {
  29. rtn[i] = stream.get();
  30. }
  31. val = rtn;
  32. return true;
  33. }
  34. bool BinaryFileStream::Load(Serializable & val)
  35. {
  36. val.Unserialize(*this);
  37. return true;
  38. }
  39. bool BinaryFileStream::Load(unsigned int & val)
  40. {
  41. val = endian.ReadIntType<unsigned int>(stream);
  42. return true;
  43. }
  44. bool BinaryFileStream::Load(unsigned char & val)
  45. {
  46. val = endian.ReadIntType<unsigned char>(stream);
  47. return true;
  48. }
  49. bool BinaryFileStream::Load(unsigned short & val)
  50. {
  51. val = endian.ReadIntType<unsigned short>(stream);
  52. return true;
  53. }
  54. bool BinaryFileStream::Load(unsigned long & val)
  55. {
  56. val = endian.ReadIntType<unsigned long>(stream);
  57. return true;
  58. }
  59. bool BinaryFileStream::Load(int & val)
  60. {
  61. val = endian.ReadIntType<int>(stream);
  62. return true;
  63. }
  64. bool BinaryFileStream::Load(float & val)
  65. {
  66. val = endian.ReadIntType<float>(stream);
  67. return true;
  68. }
  69. bool BinaryFileStream::Load(double & val)
  70. {
  71. val = endian.ReadIntType<double>(stream);
  72. return true;
  73. }
  74. bool BinaryFileStream::Load(char & val)
  75. {
  76. val = endian.ReadIntType<char>(stream);
  77. return true;
  78. }
  79. bool BinaryFileStream::Load(bool & val)
  80. {
  81. val = endian.ReadIntType<bool>(stream);
  82. return true;
  83. }
  84. bool BinaryFileStream::Load(short & val)
  85. {
  86. val = endian.ReadIntType<short>(stream);
  87. return true;
  88. }
  89. bool BinaryFileStream::Load(long & val)
  90. {
  91. val = endian.ReadIntType<long>(stream);
  92. return true;
  93. }
  94. bool BinaryFileStream::Load(long double & val)
  95. {
  96. val = endian.ReadIntType<long double>(stream);
  97. return true;
  98. }