obj.cpp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #include "pocketpy/obj.h"
  2. namespace pkpy{
  3. bool Bytes::operator==(const Bytes& rhs) const{
  4. if(_size != rhs._size) return false;
  5. for(int i=0; i<_size; i++) if(_data[i] != rhs._data[i]) return false;
  6. return true;
  7. }
  8. bool Bytes::operator!=(const Bytes& rhs) const{ return !(*this == rhs); }
  9. Bytes::Bytes(std::string_view sv){
  10. _data = new unsigned char[sv.size()];
  11. _size = sv.size();
  12. for(int i=0; i<_size; i++) _data[i] = sv[i];
  13. }
  14. // copy constructor
  15. Bytes::Bytes(const Bytes& rhs){
  16. _data = new unsigned char[rhs._size];
  17. _size = rhs._size;
  18. for(int i=0; i<_size; i++) _data[i] = rhs._data[i];
  19. }
  20. // move constructor
  21. Bytes::Bytes(Bytes&& rhs) noexcept {
  22. _data = rhs._data;
  23. _size = rhs._size;
  24. rhs._data = nullptr;
  25. rhs._size = 0;
  26. }
  27. // move assignment
  28. Bytes& Bytes::operator=(Bytes&& rhs) noexcept {
  29. delete[] _data;
  30. _data = rhs._data;
  31. _size = rhs._size;
  32. rhs._data = nullptr;
  33. rhs._size = 0;
  34. return *this;
  35. }
  36. std::pair<unsigned char*, int> Bytes::detach() noexcept {
  37. unsigned char* p = _data;
  38. int size = _size;
  39. _data = nullptr;
  40. _size = 0;
  41. return {p, size};
  42. }
  43. } // namespace pkpy