cMatrix.cpp
上传用户:sycq158
上传日期:2008-10-22
资源大小:15361k
文件大小:2k
源码类别:

游戏

开发平台:

Visual C++

  1. // CMAIN LIB - APPLICATION AND DIRECT WRAPPER
  2. //
  3. // Written by Mauricio Teichmann Ritter
  4. //
  5. // Copyright (C) 2002, Brazil. All rights reserved.
  6. // 
  7. //
  8. // cMatrix.cpp: implementation of the cMatrix class.
  9. //
  10. //////////////////////////////////////////////////////////////////////
  11. #include "stdafx.h"
  12. #include "cMatrix.h"
  13. #include <crtdbg.h>
  14. //////////////////////////////////////////////////////////////////////
  15. // Construction/Destruction
  16. //////////////////////////////////////////////////////////////////////
  17. cMatrix::cMatrix()
  18. {
  19. // Create a growable heap
  20. hHeap   = HeapCreate(0L, 0, 0);
  21. m_iCols = 0;
  22. m_iRows = 0;
  23. pBuffer = NULL;
  24. }
  25. cMatrix::~cMatrix()
  26. {
  27. Destroy();
  28. HeapDestroy(hHeap);
  29. }
  30. void cMatrix::Create(int iCols, int iRows)
  31. {
  32. pBuffer = (int*) HeapAlloc(hHeap, HEAP_ZERO_MEMORY, iCols * iRows * sizeof(int));
  33. m_iCols = iCols;
  34. m_iRows = iRows;
  35. }
  36. void cMatrix::Destroy()
  37. {
  38. if(pBuffer != NULL)
  39. {
  40. HeapFree(hHeap, 0L, (LPVOID) pBuffer);
  41. pBuffer = NULL;
  42. }
  43. }
  44. int cMatrix::GetValue(int iCol, int iRow)
  45. {
  46. _ASSERT(pBuffer != NULL);
  47. _ASSERT(iCol <= m_iCols - 1);
  48. _ASSERT(iRow <= m_iRows - 1);
  49. int* pIterator;
  50. pIterator = pBuffer;
  51. pIterator += (iRow * m_iCols);
  52. pIterator += (iCol);
  53. return *pIterator;
  54. }
  55. void cMatrix::SetValue(int iCol, int iRow, int iValue)
  56. {
  57. _ASSERT(pBuffer != NULL);
  58. _ASSERT(iCol <= m_iCols - 1);
  59. _ASSERT(iRow <= m_iRows - 1);
  60. int* pIterator;
  61. pIterator = pBuffer;
  62. pIterator += (iRow * m_iCols);
  63. pIterator += (iCol);
  64. *pIterator = iValue;
  65. }
  66. void cMatrix::SetBuffer(void *pSrcBuffer)
  67. {
  68. memcpy((void*) pBuffer, pSrcBuffer, m_iCols * m_iRows * sizeof(int));
  69. }