Guest User

buffer.cpp

a guest
Nov 5th, 2016
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.06 KB | None | 0 0
  1. #include "Buffer.h"
  2.  
  3. Buffer::Buffer(long long _size)
  4. {
  5.     if(_size > 0)
  6.     {
  7.         size = _size;
  8.         buffer = new unsigned char[size];
  9.     }
  10. }
  11. Buffer::~Buffer()
  12. {
  13.     if(size > 0)
  14.         delete[] buffer;
  15. }
  16.  
  17. long long Buffer::Size() { return size; }
  18. long long Buffer::Read() { return read; }
  19. long long Buffer::Written() { return written; }
  20. long long Buffer::RemainingSpace() { return size - written; }
  21. long long Buffer::RemainingData() { return written - read; }
  22. void Buffer::Reset() { read = written = 0; }
  23. unsigned char* Buffer::GetArray() { return buffer; }
  24.  
  25. bool Buffer::tryWriteFloat(float val)
  26. {
  27.     if(RemainingSpace() < 4) return false;
  28.     register unsigned char* bytes = (unsigned char*)&val;
  29.     buffer[written    ] = bytes[3];
  30.     buffer[written + 1] = bytes[2];
  31.     buffer[written + 2] = bytes[1];
  32.     buffer[written + 3] = bytes[0];
  33.     written += 4;
  34.     return true;
  35. }
  36. bool Buffer::tryWriteDouble(double val)
  37. {
  38.     if(RemainingSpace() < 8) return false;
  39.     register unsigned char* bytes = (unsigned char*)&val;
  40.     buffer[written    ] = bytes[7];
  41.     buffer[written + 1] = bytes[6];
  42.     buffer[written + 2] = bytes[5];
  43.     buffer[written + 3] = bytes[4];
  44.     buffer[written + 4] = bytes[3];
  45.     buffer[written + 5] = bytes[2];
  46.     buffer[written + 6] = bytes[1];
  47.     buffer[written + 7] = bytes[0];
  48.     written += 8;
  49.     return true;
  50. }
  51.  
  52. bool Buffer::tryReadFloat(float& val)
  53. {
  54.     if(RemainingData() < 4) return false;
  55.     register unsigned char* bytes = (unsigned char*)&val;
  56.     bytes[read    ] = buffer[3];
  57.     bytes[read + 1] = buffer[2];
  58.     bytes[read + 2] = buffer[1];
  59.     bytes[read + 3] = buffer[0];
  60.     read += 4;
  61.     return true;
  62. }
  63. bool Buffer::tryReadDouble(double& val)
  64. {
  65.     if(RemainingData() < 8) return false;
  66.     register unsigned char* bytes = (unsigned char*)&val;
  67.     bytes[read    ] = buffer[7];
  68.     bytes[read + 1] = buffer[6];
  69.     bytes[read + 2] = buffer[5];
  70.     bytes[read + 3] = buffer[4];
  71.     bytes[read + 4] = buffer[3];
  72.     bytes[read + 5] = buffer[2];
  73.     bytes[read + 6] = buffer[1];
  74.     bytes[read + 7] = buffer[0];
  75.     read += 8;
  76.     return true;
  77. }
Add Comment
Please, Sign In to add comment