block.cpp
上传用户:market2
上传日期:2018-11-18
资源大小:18786k
文件大小:1k
源码类别:

外挂编程

开发平台:

Windows_Unix

  1. #include "block.h"
  2. namespace OpenKore {
  3. namespace PaddedPackets {
  4. Block::Block()
  5. {
  6. // Reserve some space
  7. bufLen = 5;
  8. buffer = new dword[bufLen];
  9. memset(buffer, 0, bufLen * sizeof(dword));
  10. currentPos = 0;
  11. }
  12. Block::~Block()
  13. {
  14. if (buffer != NULL) {
  15. delete[] buffer;
  16. }
  17. }
  18. void Block::reset()
  19. {
  20. currentPos = 0;
  21. }
  22. void Block::add(dword data)
  23. {
  24. if (buffer == NULL) {
  25. return;
  26. }
  27. if (currentPos == (bufLen - 1)) {
  28. // Allocate more space.
  29. bufLen = bufLen + 10;
  30. dword *newBuffer = new dword[ bufLen ];
  31. //if ( newBuffer == NULL )
  32. //throw something here
  33. memcpy( (void*)newBuffer, (void*)buffer, bufLen );
  34. delete[] buffer;
  35. buffer = newBuffer;
  36. } else {
  37. // Write to buffer directly.
  38. buffer[currentPos] = data;
  39. currentPos++;
  40. }
  41. }
  42. unsigned int
  43. Block::getSize() const
  44. {
  45. return currentPos;
  46. }
  47. dword
  48. Block::operator[](unsigned int index) const
  49. {
  50. if (index < currentPos) {
  51. return buffer[index];
  52. } else {
  53. return 0;
  54. }
  55. }
  56. } // PaddedPackets
  57. } // OpenKore