home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1994 November: Tool Chest / Dev.CD Nov 94.toast / New System Software Extensions / OpenDoc A6 / OpenDoc Parts Framework / OPF / Found / BCCollec / Structs / Stacks / BCStacD.cpp < prev    next >
Encoding:
Text File  |  1994-04-21  |  4.1 KB  |  161 lines  |  [TEXT/MPS ]

  1. //  The C++ Booch Components (Version 2.1)
  2. //  (C) Copyright 1990-1993 Grady Booch. All Rights Reserved.
  3. //
  4. //  Restricted Rights Legend
  5. //  Use, duplication, or disclosure is subject to restrictions as set forth 
  6. //  in subdivision (c)(1)(ii) of the Rights in Technical Data and Computer 
  7. //  Software clause at DFARS 252.227-7013. 
  8. //
  9. //  BCStacD.cpp
  10. //
  11. //  This file contains the definitions for the bounded stack.
  12.  
  13. #include "BCStacD.h"
  14.  
  15. template<class Item, class StorageManager>
  16. BC_TDynamicStack<Item, StorageManager>::BC_TDynamicStack() {}
  17.  
  18. template<class Item, class StorageManager>
  19. BC_TDynamicStack<Item, StorageManager>::BC_TDynamicStack(BC_Index chunkSize)
  20.   : fRep(chunkSize) {}
  21.  
  22. template<class Item, class StorageManager>
  23. BC_TDynamicStack<Item, StorageManager>::
  24.   BC_TDynamicStack(const BC_TDynamicStack<Item, StorageManager>& s)
  25.     : fRep(s.fRep) {}
  26.  
  27. template<class Item, class StorageManager>
  28. BC_TDynamicStack<Item, StorageManager>::~BC_TDynamicStack() {}
  29.  
  30. template<class Item, class StorageManager>
  31. BC_TStack<Item>& BC_TDynamicStack<Item, StorageManager>::
  32.   operator=(const BC_TStack<Item>& s)
  33. {
  34.   return BC_TStack<Item>::operator=(s);
  35. }
  36.  
  37. template<class Item, class StorageManager>
  38. BC_TStack<Item>& BC_TDynamicStack<Item, StorageManager>::
  39.   operator=(const BC_TDynamicStack<Item, StorageManager>& s)
  40. {
  41.   fRep = s.fRep;
  42.   return *this;
  43. }
  44.  
  45. template<class Item, class StorageManager>
  46. BC_Boolean BC_TDynamicStack<Item, StorageManager>::
  47.   operator==(const BC_TStack<Item>& s) const
  48. {
  49.   return BC_TStack<Item>::operator==(s);
  50. }
  51.  
  52. template<class Item, class StorageManager>
  53. BC_Boolean BC_TDynamicStack<Item, StorageManager>::
  54.   operator==(const BC_TDynamicStack<Item, StorageManager>& s) const
  55. {
  56.   return (fRep == s.fRep);
  57. }
  58.  
  59. template<class Item, class StorageManager>
  60. BC_Boolean BC_TDynamicStack<Item, StorageManager>::
  61.   operator!=(const BC_TDynamicStack<Item, StorageManager>& s) const
  62. {
  63.   return !operator==(s);
  64. }
  65.  
  66. template<class Item, class StorageManager>
  67. void BC_TDynamicStack<Item, StorageManager>::SetChunkSize(BC_Index ChunkSize)
  68. {
  69.   fRep.SetChunkSize(ChunkSize);
  70. }
  71.  
  72. template<class Item, class StorageManager>
  73. void BC_TDynamicStack<Item, StorageManager>::Preallocate(BC_Index new_length)
  74. {
  75.   fRep.Preallocate(new_length);
  76. }
  77.  
  78. template<class Item, class StorageManager>
  79. void BC_TDynamicStack<Item, StorageManager>::Clear()
  80. {
  81.   fRep.Clear();
  82. }
  83.  
  84. template<class Item, class StorageManager>
  85. void BC_TDynamicStack<Item, StorageManager>::Push(const Item& item)
  86. {
  87.   fRep.Insert(item);
  88. }
  89.  
  90. template<class Item, class StorageManager>
  91. void BC_TDynamicStack<Item, StorageManager>::Pop()
  92. {
  93.   fRep.Remove(0);
  94. }
  95.  
  96. template<class Item, class StorageManager>
  97. BC_Index BC_TDynamicStack<Item, StorageManager>::ChunkSize() const
  98. {
  99.   return fRep.ChunkSize();
  100. }
  101.  
  102. template<class Item, class StorageManager>
  103. BC_Index BC_TDynamicStack<Item, StorageManager>::Depth() const
  104. {
  105.   return fRep.Length();
  106. }
  107.  
  108. template<class Item, class StorageManager>
  109. BC_Boolean BC_TDynamicStack<Item, StorageManager>::IsEmpty() const
  110. {
  111.   return (fRep.Length() == 0);
  112. }
  113.  
  114. template<class Item, class StorageManager>
  115. const Item& BC_TDynamicStack<Item, StorageManager>::Top() const
  116. {
  117.   return fRep.First();
  118. }
  119.  
  120. template<class Item, class StorageManager>
  121. Item& BC_TDynamicStack<Item, StorageManager>::Top()
  122. {
  123.   return fRep.First();
  124. }
  125.  
  126. template<class Item, class StorageManager>
  127. void* BC_TDynamicStack<Item, StorageManager>::operator new(size_t s)
  128. {
  129.   return StorageManager::Allocate(s);
  130. }
  131.  
  132. template<class Item, class StorageManager>
  133. void BC_TDynamicStack<Item, StorageManager>::operator delete(void* p, size_t s)
  134. {
  135.   StorageManager::Deallocate(p, s);
  136. }
  137.  
  138. template<class Item, class StorageManager>
  139. void BC_TDynamicStack<Item, StorageManager>::Purge()
  140. {
  141.   fRep.Clear();
  142. }
  143.  
  144. template<class Item, class StorageManager>
  145. void BC_TDynamicStack<Item, StorageManager>::Add(const Item& item)
  146. {
  147.   fRep.Append(item);
  148. }
  149.  
  150. template<class Item, class StorageManager>
  151. BC_Index BC_TDynamicStack<Item, StorageManager>::Cardinality() const
  152. {
  153.   return fRep.Length();
  154. }
  155.  
  156. template<class Item, class StorageManager>
  157. const Item& BC_TDynamicStack<Item, StorageManager>::ItemAt(BC_Index index) const
  158. {
  159.   return fRep.ItemAt(index);
  160. }
  161.