PolyData.cpp 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #include "PolyData.h"
  2. using namespace Polycode;
  3. Data::Data() {
  4. data = NULL;
  5. dataSize = 0;
  6. }
  7. Data::~Data() {
  8. if(data)
  9. free(data);
  10. }
  11. void Data::setFromString(String str, int encoding) {
  12. if(data)
  13. free(data);
  14. dataSize = str.getDataSizeWithEncoding(encoding);
  15. data = (char*)malloc(dataSize);
  16. memcpy(data, str.getDataWithEncoding(encoding), dataSize);
  17. }
  18. bool Data::saveToFile(String fileName) {
  19. OSFILE *file = OSBasics::open(fileName, "wb");
  20. if(!file) {
  21. OSBasics::close(file);
  22. return false;
  23. }
  24. OSBasics::write(data, sizeof(char), dataSize, file);
  25. OSBasics::close(file);
  26. return true;
  27. }
  28. void Data::loadFromFile(String fileName) {
  29. OSFILE *file = OSBasics::open(fileName, "rb");
  30. OSBasics::seek(file, 0L, SEEK_END);
  31. dataSize = OSBasics::tell(file);
  32. OSBasics::seek(file, 0L, SEEK_SET);
  33. if(data)
  34. free(data);
  35. data = (char*)malloc(dataSize);
  36. if(!data) {
  37. OSBasics::close(file);
  38. return;
  39. }
  40. OSBasics::read(data, sizeof(char), dataSize, file);
  41. OSBasics::close(file);
  42. }
  43. String Data::getAsString(int encoding) {
  44. String str;
  45. str.setDataWithEncoding(data, encoding);
  46. return str;
  47. }