You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

45 lines
953 B

  1. #pragma once
  2. #include <iostream>
  3. #include "CArrayBuffer.h"
  4. #include "CDataView.h"
  5. class CFloat32Array {
  6. public:
  7. CArrayBuffer* buffer;
  8. int byteOffset;
  9. int byteLength;
  10. private:
  11. int _length;
  12. bool _deleteBuffer;
  13. public:
  14. CFloat32Array(int length) {
  15. this->buffer = new CArrayBuffer(length * sizeof(float32));
  16. this->_length = length;
  17. this->_deleteBuffer = true;
  18. }
  19. CFloat32Array(CArrayBuffer* buffer, int byteOffset, int length) {
  20. this->buffer = buffer;
  21. this->byteOffset = byteOffset;
  22. this->_length = length;
  23. this->byteLength = length * sizeof(float32);
  24. this->_deleteBuffer = false;
  25. }
  26. ~CFloat32Array() {
  27. if (this->_deleteBuffer) {
  28. delete this->buffer;
  29. this->buffer = nullptr;
  30. printf("delete");
  31. }
  32. }
  33. float32& operator [](int idx) {
  34. return *((float32*)(this->buffer->pData + (this->byteOffset + idx * sizeof(float32))));
  35. }
  36. int length() {
  37. return this->_length;
  38. }
  39. };