resitem.cpp 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. ////////////////////////////////////////////////////////////////////////////////
  2. //
  3. // Copyright 2016 RWS Inc, All Rights Reserved
  4. //
  5. // This program is free software; you can redistribute it and/or modify
  6. // it under the terms of version 2 of the GNU General Public License as published by
  7. // the Free Software Foundation
  8. //
  9. // This program is distributed in the hope that it will be useful,
  10. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. // GNU General Public License for more details.
  13. //
  14. // You should have received a copy of the GNU General Public License along
  15. // with this program; if not, write to the Free Software Foundation, Inc.,
  16. // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  17. //
  18. //////////////////////////////////////////////////////////////////////////////
  19. //
  20. // RES.CPP
  21. //
  22. // History:
  23. // 09/22/95 JMI Started.
  24. //
  25. //////////////////////////////////////////////////////////////////////////////
  26. //
  27. // This class stores data identified by a string.
  28. //
  29. //////////////////////////////////////////////////////////////////////////////
  30. //////////////////////////////////////////////////////////////////////////////
  31. // C Headers.
  32. //////////////////////////////////////////////////////////////////////////////
  33. #include <malloc.h>
  34. #include <string.h>
  35. //////////////////////////////////////////////////////////////////////////////
  36. // Blue Headers.
  37. //////////////////////////////////////////////////////////////////////////////
  38. #include "System.h"
  39. #include "bdebug.h"
  40. //////////////////////////////////////////////////////////////////////////////
  41. // Green Headers.
  42. //////////////////////////////////////////////////////////////////////////////
  43. #include "resitem.h"
  44. //////////////////////////////////////////////////////////////////////////////
  45. // Orange Headers.
  46. //////////////////////////////////////////////////////////////////////////////
  47. //////////////////////////////////////////////////////////////////////////////
  48. // Yellow Headers.
  49. //////////////////////////////////////////////////////////////////////////////
  50. //////////////////////////////////////////////////////////////////////////////
  51. // Module specific macros.
  52. //////////////////////////////////////////////////////////////////////////////
  53. //////////////////////////////////////////////////////////////////////////////
  54. // Module specific typedefs.
  55. //////////////////////////////////////////////////////////////////////////////
  56. //////////////////////////////////////////////////////////////////////////////
  57. // Module specific (static) variables.
  58. //////////////////////////////////////////////////////////////////////////////
  59. //////////////////////////////////////////////////////////////////////////////
  60. // Construction/Destruction Functions.
  61. //////////////////////////////////////////////////////////////////////////////
  62. //////////////////////////////////////////////////////////////////////////////
  63. //
  64. // Default constructor.
  65. //
  66. //////////////////////////////////////////////////////////////////////////////
  67. CResItem::CResItem()
  68. {
  69. m_pszName = NULL;
  70. m_puc = NULL;
  71. m_lSize = 0L;
  72. m_sRefCnt = 0;
  73. m_pRes = NULL;
  74. }
  75. //////////////////////////////////////////////////////////////////////////////
  76. //
  77. // Constructura Especial! Ole!
  78. //
  79. //////////////////////////////////////////////////////////////////////////////
  80. CResItem::CResItem(char* pszName, UCHAR* puc, long lSize, CRes* pRes)
  81. {
  82. m_pszName = pszName;
  83. m_puc = puc;
  84. m_lSize = lSize;
  85. m_sRefCnt = 0;
  86. m_pRes = pRes;
  87. }
  88. //////////////////////////////////////////////////////////////////////////////
  89. //
  90. // Destructor.
  91. //
  92. //////////////////////////////////////////////////////////////////////////////
  93. CResItem::~CResItem()
  94. {
  95. if (m_sRefCnt != 0)
  96. {
  97. TRACE("~CResItem(): Destroyed with reference count of %d!\n",
  98. m_sRefCnt);
  99. }
  100. if (m_pszName != NULL)
  101. {
  102. // Remember that the name is the ptr that was allocated and includes
  103. // the resource data (where m_puc points).
  104. free(m_pszName);
  105. m_pszName = NULL;
  106. m_puc = NULL;
  107. }
  108. }
  109. //////////////////////////////////////////////////////////////////////////////
  110. // Methods.
  111. //////////////////////////////////////////////////////////////////////////////
  112. //////////////////////////////////////////////////////////////////////////////
  113. //
  114. // Lock this item b4 using.
  115. // Returns new reference count.
  116. //
  117. //////////////////////////////////////////////////////////////////////////////
  118. short CResItem::Lock(void)
  119. {
  120. return ++m_sRefCnt;
  121. }
  122. //////////////////////////////////////////////////////////////////////////////
  123. //
  124. // Unlock this item when done. Deletes object if m_sRefCnt hits 0.
  125. // Returns new reference count.
  126. //
  127. //////////////////////////////////////////////////////////////////////////////
  128. short CResItem::Unlock(void)
  129. {
  130. ASSERT(m_sRefCnt > 0);
  131. return --m_sRefCnt;
  132. }
  133. //////////////////////////////////////////////////////////////////////////////
  134. // Internal Functions.
  135. //////////////////////////////////////////////////////////////////////////////
  136. //////////////////////////////////////////////////////////////////////////////
  137. // EOF
  138. //////////////////////////////////////////////////////////////////////////////