home *** CD-ROM | disk | FTP | other *** search
/ Power GUI Programming with VisualAge C++ / powergui.iso / trialva / ibmcppw / include / iiseqdil.c < prev    next >
Encoding:
C/C++ Source or Header  |  1996-02-22  |  5.5 KB  |  157 lines

  1. /**********************************************************************
  2. *                                                                     *
  3. *  IBM(R) VisualAge(TM) for C++ for Windows(R), Version 3.5           *
  4. *                                                                     *
  5. *  PID: 5622-880                                                      *
  6. *  - Licensed Material - Program-Property of IBM                      *
  7. *  (C) Copyright IBM Corp. 1991, 1995 - All Right Reserved.           *
  8. *                                                                     *
  9. *  US Government Users Restricted Rights - Use, duplication or        *
  10. *  disclosure restricted by GSA ADP Schedule Contract with IBM Corp.  *
  11. *                                                                     *
  12. *  VisualAge, and IBM are trademarks or registered trademarks of      *
  13. *  International Business Machines Corporation.                       *
  14. *  Windows is a registered trademark of Microsoft Corporation.        *
  15. *                                                                     *
  16. **********************************************************************/
  17.  
  18. #include <new.h>
  19.  
  20. #pragma info (nocls, nocnd, nocns, nocnv, noext, nognr, novft)
  21. #pragma pack (4)
  22.  
  23. // -----------------------
  24. // ISequenceAsDilTableImpl
  25. // -----------------------
  26.  
  27. // public members
  28.  
  29. template <class Element, class ElementOps, class Implementation>
  30. ISequenceAsDilTableOps <Element, ElementOps, Implementation>::
  31. ISequenceAsDilTableOps (INumber numberOfElements)
  32. : Inherited (__isDTSClass (Element)),
  33.   ivElementOps (),
  34.   ivImpl (*this, numberOfElements)
  35. {
  36. }
  37.  
  38. template <class Element, class ElementOps, class Implementation>
  39. ISequenceAsDilTableOps <Element, ElementOps, Implementation>::
  40. ISequenceAsDilTableOps (INumber numberOfElements, void* opsArg)
  41. : Inherited (__isDTSClass (Element)),
  42.   ivElementOps (opsArg),
  43.   ivImpl (*this, numberOfElements)
  44. {
  45. }
  46.  
  47. template <class Element, class ElementOps, class Implementation>
  48. ISequenceAsDilTableOps <Element, ElementOps, Implementation>::
  49. ISequenceAsDilTableOps
  50.   (ISequenceAsDilTableOps <Element, ElementOps,
  51.                            Implementation> const& collection)
  52. : Inherited (__isDTSClass (Element)),
  53.   ivElementOps (collection.ivElementOps),
  54.   ivImpl (*this, collection.ivImpl)
  55. {
  56. }
  57.  
  58. template <class Element, class ElementOps, class Implementation>
  59. ISequenceAsDilTableOps <Element, ElementOps, Implementation>::
  60. ~ISequenceAsDilTableOps ()
  61. {
  62. }
  63.  
  64. template <class Element, class ElementOps, class Implementation>
  65. void
  66. ISequenceAsDilTableOps <Element, ElementOps, Implementation>::
  67. Assign (void* element1, void const* element2) const
  68. { ivElementOps.Assign (*(Element*)element1,
  69.                        *(Element const*)element2);
  70. }
  71.  
  72. template <class Element, class ElementOps, class Implementation>
  73. IACollectionImpl*
  74. ISequenceAsDilTableOps <Element, ElementOps, Implementation>::
  75. Clone () const
  76. { return (Implementation*) *new Self (*this);
  77. }
  78.  
  79. template <class Element, class ElementOps, class Implementation>
  80. void
  81. ISequenceAsDilTableOps <Element, ElementOps, Implementation>::
  82. ConstructNode (void* node, void const* element) const
  83. { new (node) Node (*(Element const*)element);
  84. }
  85.  
  86. template <class Element, class ElementOps, class Implementation>
  87. void*
  88. ISequenceAsDilTableOps <Element, ElementOps, Implementation>::
  89. CreateNodes (INumber n, size_t& size) const
  90. { size = sizeof (Node) > 2 * sizeof (Node*) ?
  91.          sizeof (Node) : 2 * sizeof (Node*);
  92.   void* node = ivElementOps.Allocate ((size_t) (size * n)
  93. #if defined (__DEBUG_ALLOC__)
  94.                                       , __FILE__, __LINE__
  95. #endif
  96.                                      );
  97.   return ivImpl.CheckPointer (node);
  98. }
  99.  
  100. template <class Element, class ElementOps, class Implementation>
  101. void
  102. ISequenceAsDilTableOps <Element, ElementOps, Implementation>::
  103. DeleteNodes (void* nodes) const
  104. { ivElementOps.Deallocate (nodes
  105. #if defined (__DEBUG_ALLOC__)
  106.                            , __FILE__, __LINE__
  107. #endif
  108.                           );
  109. }
  110.  
  111. template <class Element, class ElementOps, class Implementation>
  112. void
  113. ISequenceAsDilTableOps <Element, ElementOps, Implementation>::
  114. DestroyNode (void* node) const
  115. { ((Node*)node)->~Node ();
  116. }
  117.  
  118. template <class Element, class ElementOps, class Implementation>
  119. void*
  120. ISequenceAsDilTableOps <Element, ElementOps, Implementation>::
  121. StreamIn (TStream& fromWhere) const
  122. { Element* element = ivElementOps.GetStreamable ();
  123.   ivElementOps.StreamIn (*element, fromWhere);
  124.   return (void*) element;
  125. }
  126.  
  127. template <class Element, class ElementOps, class Implementation>
  128. void
  129. ISequenceAsDilTableOps <Element, ElementOps, Implementation>::
  130. StreamOut (void const* element, TStream& toWhere) const
  131. { ivElementOps.StreamOut (*(Element const*)element, toWhere);
  132. }
  133.  
  134. template <class Element, class ElementOps, class Implementation>
  135. TStream&
  136. ISequenceAsDilTableOps <Element, ElementOps, Implementation>::
  137. operator<<= (TStream& fromWhere)
  138. { return (ivElementOps <<= fromWhere);
  139. }
  140.  
  141. template <class Element, class ElementOps, class Implementation>
  142. TStream&
  143. ISequenceAsDilTableOps <Element, ElementOps, Implementation>::
  144. operator>>= (TStream& toWhere) const
  145. { return (ivElementOps >>= toWhere);
  146. }
  147.  
  148. template <class Element, class ElementOps, class Implementation>
  149. ISequenceAsDilTableOps <Element, ElementOps, Implementation>::
  150. operator Implementation* ()
  151. { ivImpl.CheckPointer (this);
  152.   return &ivImpl;
  153. }
  154.  
  155. #pragma info (restore)
  156. #pragma pack ()
  157.