home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1994 August: Tool Chest / Dev.CD Aug 94.toast / New System Software Extensions / OpenDoc A6 / OpenDoc Parts Framework / OPF / Found / BCCollec / Structs / Queues / BCQueD.cpp < prev    next >
Encoding:
Text File  |  1994-04-21  |  4.4 KB  |  175 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. //  BCQueD.cpp
  10. //
  11. //  This file contains the definitions for the dynamic queue.
  12.  
  13. #include "BCQueD.h"
  14.  
  15. template<class Item, class StorageManager>
  16. BC_TDynamicQueue<Item, StorageManager>::BC_TDynamicQueue() {}
  17.  
  18. template<class Item, class StorageManager>
  19. BC_TDynamicQueue<Item, StorageManager>::BC_TDynamicQueue(BC_Index chunkSize)
  20.   : fRep(chunkSize) {}
  21.  
  22. template<class Item, class StorageManager>
  23. BC_TDynamicQueue<Item, StorageManager>::
  24.   BC_TDynamicQueue(const BC_TDynamicQueue<Item, StorageManager>& q)
  25.     : fRep(q.fRep) {}
  26.  
  27. template<class Item, class StorageManager>
  28. BC_TDynamicQueue<Item, StorageManager>::~BC_TDynamicQueue() {}
  29.  
  30. template<class Item, class StorageManager>
  31. BC_TQueue<Item>& BC_TDynamicQueue<Item, StorageManager>::
  32.   operator=(const BC_TQueue<Item>& q)
  33. {
  34.   return BC_TQueue<Item>::operator=(q);
  35. }
  36.  
  37. template<class Item, class StorageManager>
  38. BC_TQueue<Item>& BC_TDynamicQueue<Item, StorageManager>::
  39.   operator=(const BC_TDynamicQueue<Item, StorageManager>& q)
  40. {
  41.   fRep = q.fRep;
  42.   return *this;
  43. }
  44.  
  45. template<class Item, class StorageManager>
  46. BC_Boolean BC_TDynamicQueue<Item, StorageManager>::
  47.   operator==(const BC_TQueue<Item>& q) const
  48. {
  49.   return BC_TQueue<Item>::operator==(q);
  50. }
  51.  
  52. template<class Item, class StorageManager>
  53. BC_Boolean BC_TDynamicQueue<Item, StorageManager>::
  54.   operator==(const BC_TDynamicQueue<Item, StorageManager>& q) const
  55. {
  56.   return (fRep == q.fRep);
  57. }
  58.  
  59. template<class Item, class StorageManager>
  60. BC_Boolean BC_TDynamicQueue<Item, StorageManager>::
  61.   operator!=(const BC_TDynamicQueue<Item, StorageManager>& q) const
  62. {
  63.   return !operator==(q);
  64. }
  65.  
  66. template<class Item, class StorageManager>
  67. void BC_TDynamicQueue<Item, StorageManager>::SetChunkSize(BC_Index chunkSize)
  68. {
  69.   fRep.SetChunkSize(chunkSize);
  70. }
  71.  
  72. template<class Item, class StorageManager>
  73. void BC_TDynamicQueue<Item, StorageManager>::Preallocate(BC_Index new_length)
  74. {
  75.   fRep.Preallocate(new_length);
  76. }
  77.  
  78. template<class Item, class StorageManager>
  79. void BC_TDynamicQueue<Item, StorageManager>::Clear()
  80. {
  81.   fRep.Clear();
  82. }
  83.  
  84. template<class Item, class StorageManager>
  85. void BC_TDynamicQueue<Item, StorageManager>::Append(const Item& item)
  86. {
  87.   fRep.Append(item);
  88. }
  89.  
  90. template<class Item, class StorageManager>
  91. void BC_TDynamicQueue<Item, StorageManager>::Pop()
  92. {
  93.   fRep.Remove(0);
  94. }
  95.     
  96. template<class Item, class StorageManager>
  97. void BC_TDynamicQueue<Item, StorageManager>::Remove(BC_Index at)
  98. {
  99.   fRep.Remove(at);
  100. }
  101.  
  102. template<class Item, class StorageManager>
  103. BC_Index BC_TDynamicQueue<Item, StorageManager>::ChunkSize() const
  104. {
  105.   return fRep.ChunkSize();
  106. }
  107.  
  108. template<class Item, class StorageManager>
  109. BC_Index BC_TDynamicQueue<Item, StorageManager>::Length() const
  110. {
  111.   return fRep.Length();
  112. }
  113.  
  114. template<class Item, class StorageManager>
  115. BC_Boolean BC_TDynamicQueue<Item, StorageManager>::IsEmpty() const
  116. {
  117.   return (fRep.Length() == 0);
  118. }
  119.  
  120. template<class Item, class StorageManager>
  121. const Item& BC_TDynamicQueue<Item, StorageManager>::Front() const
  122. {
  123.   return fRep.First();
  124. }
  125.  
  126. template<class Item, class StorageManager>
  127. Item& BC_TDynamicQueue<Item, StorageManager>::Front()
  128. {
  129.   return fRep.First();
  130. }
  131.  
  132. template<class Item, class StorageManager>
  133. BC_ExtendedIndex BC_TDynamicQueue<Item, StorageManager>::
  134.   Location(const Item& item) const
  135. {
  136.   return fRep.Location(item);
  137. }
  138.  
  139.  
  140. template<class Item, class StorageManager>
  141. void* BC_TDynamicQueue<Item, StorageManager>::operator new(size_t s)
  142. {
  143.   return StorageManager::Allocate(s);
  144. }
  145.  
  146. template<class Item, class StorageManager>
  147. void BC_TDynamicQueue<Item, StorageManager>::operator delete(void* p, size_t s)
  148. {
  149.   StorageManager::Deallocate(p, s);
  150. }
  151.  
  152. template<class Item, class StorageManager>
  153. void BC_TDynamicQueue<Item, StorageManager>::Purge()
  154. {
  155.   fRep.Clear();
  156. }
  157.  
  158. template<class Item, class StorageManager>
  159. void BC_TDynamicQueue<Item, StorageManager>::Add(const Item& item)
  160. {
  161.   fRep.Append(item);
  162. }
  163.  
  164. template<class Item, class StorageManager>
  165. BC_Index BC_TDynamicQueue<Item, StorageManager>::Cardinality() const
  166. {
  167.   return fRep.Length();
  168. }
  169.  
  170. template<class Item, class StorageManager>
  171. const Item& BC_TDynamicQueue<Item, StorageManager>::ItemAt(BC_Index index) const
  172. {
  173.   return fRep.ItemAt(index);
  174. }
  175.