JSFile.cpp 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #include "Precompiled.h"
  2. #include "../Core/Context.h"
  3. #include "../IO/Deserializer.h"
  4. #include "../IO/FileSystem.h"
  5. #include "../IO/Log.h"
  6. #include "../Javascript/JSFile.h"
  7. #include "../Core/ProcessUtils.h"
  8. #include "../IO/Serializer.h"
  9. #include <Duktape/duktape.h>
  10. #include "DebugNew.h"
  11. namespace Atomic
  12. {
  13. JSFile::JSFile(Context* context) :
  14. Resource(context),
  15. size_(0)
  16. {
  17. }
  18. JSFile::~JSFile()
  19. {
  20. }
  21. void JSFile::RegisterObject(Context* context)
  22. {
  23. context->RegisterFactory<JSFile>();
  24. }
  25. bool JSFile::BeginLoad(Deserializer& source)
  26. {
  27. size_ = source.GetSize();
  28. if (size_ == 0)
  29. {
  30. data_ = new char[1];
  31. size_ = 1;
  32. data_[0] = '\0';
  33. return true;
  34. }
  35. // Read all data ensuring '\0' terminated
  36. data_ = new char[size_ + 1];
  37. if (source.Read(data_, size_) != size_)
  38. return false;
  39. data_[size_] = '\0';
  40. SetMemoryUse(size_);
  41. return true;
  42. }
  43. bool JSFile::Save(Serializer& dest) const
  44. {
  45. if (size_ == 0)
  46. return false;
  47. dest.Write(data_, size_);
  48. return true;
  49. }
  50. }