home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c082_144 / 2.ddi / CLASSINC.ZIP / BAG.H < prev    next >
Encoding:
C/C++ Source or Header  |  1992-06-10  |  4.4 KB  |  169 lines

  1. /*------------------------------------------------------------------------*/
  2. /*                                                                        */
  3. /*  BAG.H                                                                 */
  4. /*                                                                        */
  5. /*  Copyright Borland International 1991, 1992                            */
  6. /*  All Rights Reserved                                                   */
  7. /*                                                                        */
  8. /*------------------------------------------------------------------------*/
  9.  
  10. #if !defined( __BAG_H )
  11. #define __BAG_H
  12.  
  13. #if defined( TEMPLATES )
  14.  
  15.     #if !defined( __BAGS_H )
  16.     #include <Bags.h>
  17.     #endif  // __BAGS_H
  18.  
  19.     #pragma option -Vo-
  20.     #if defined( __BCOPT__ ) && !defined( _ALLOW_po )
  21.     #pragma option -po-
  22.     #endif
  23.  
  24.     #define Bag   BI_TCBagAsVector
  25.     #define PBag  PBI_TCBagAsVector
  26.     #define RBag  RBI_TCBagAsVector
  27.     #define RPBag RPBI_TCBagAsVector
  28.     #define PCBag PCBI_TCBagAsVector
  29.     #define RCBag RCBI_TCBagAsVector
  30.  
  31.     _CLASSDEF( BI_TCBagAsVector )
  32.  
  33.     #define BagIterator   BI_TCBagAsVectorIterator
  34.     #define PBagIterator  PBI_TCBagAsVectorIterator
  35.     #define RBagIterator  RBI_TCBagAsVectorIterator
  36.     #define RPBagIterator RPBI_TCBagAsVectorIterator
  37.     #define PCBagIterator PCBI_TCBagAsVectorIterator
  38.     #define RCBagIterator RCBI_TCBagAsVectorIterator
  39.  
  40.     _CLASSDEF( BI_TCBagAsVectorIterator )
  41.  
  42. #else   // TEMPLATES
  43.  
  44.     #if !defined( __RESOURCE_H )
  45.     #include <Resource.h>
  46.     #endif  // __RESOURCE_H
  47.  
  48.     #if !defined( __CLSTYPES_H )
  49.     #include <ClsTypes.h>
  50.     #endif  // __CLSTYPES_H
  51.  
  52.     #if !defined( __HASHTBL_H )
  53.     #include <HashTbl.h>
  54.     #endif  // __HASHTBL_H
  55.  
  56.     #pragma option -Vo-
  57.     #if defined( __BCOPT__ ) && !defined( _ALLOW_po )
  58.     #pragma option -po-
  59.     #endif
  60.  
  61.     _CLASSDEF(Bag)
  62.  
  63.     class _CLASSTYPE Bag : public Collection
  64.     {
  65.  
  66.     public:
  67.  
  68.         Bag( sizeType bagSize = DEFAULT_BAG_SIZE ) :
  69.             table( bagSize )
  70.             {
  71.             }
  72.  
  73.         virtual void add( Object _FAR & o )
  74.             {
  75.             table.add( o );
  76.             }
  77.  
  78.         virtual void detach( Object _FAR & o, DeleteType dt = NoDelete )
  79.             {
  80.             table.detach( o, dt );
  81.             }
  82.  
  83.         virtual void flush( DeleteType dt = DefDelete )
  84.             {
  85.             table.flush( dt );
  86.             }
  87.  
  88.         virtual int isEmpty() const
  89.             {
  90.             return table.isEmpty();
  91.             }
  92.  
  93.         virtual countType getItemsInContainer() const
  94.             {
  95.             return table.getItemsInContainer();
  96.             }
  97.  
  98.         void forEach( void (_FAR *f)(Object _FAR &, void _FAR *),
  99.                       void _FAR *args
  100.                     )
  101.             {
  102.             table.forEach( f, args );
  103.             }
  104.  
  105.         Object _FAR& firstThat( int (_FAR*f)(const Object _FAR&, void _FAR*),
  106.                                 void _FAR *args
  107.                               ) const
  108.             {
  109.             return table.firstThat( f, args );
  110.             }
  111.  
  112.         Object _FAR& lastThat( int (_FAR*f)(const Object _FAR&, void _FAR*),
  113.                                void _FAR *args
  114.                              ) const
  115.             {
  116.             return table.lastThat( f, args );
  117.             }
  118.  
  119.         virtual int hasMember( Object _FAR & o ) const
  120.             {
  121.             return table.hasMember( o );
  122.             }
  123.  
  124.         virtual Object _FAR & findMember( Object _FAR & o ) const
  125.             {
  126.             return table.findMember(o);
  127.             }
  128.  
  129.         virtual ContainerIterator _FAR & initIterator() const
  130.             {
  131.             return table.initIterator();
  132.             }
  133.  
  134.         virtual classType isA() const
  135.             {
  136.             return bagClass;
  137.             }
  138.  
  139.         virtual char _FAR *nameOf() const
  140.             {
  141.             return "Bag";
  142.             }
  143.  
  144.         int ownsElements()
  145.             {
  146.             return table.ownsElements();
  147.             }
  148.  
  149.         void ownsElements( int del )
  150.             { 
  151.             table.ownsElements( del );
  152.             }
  153.  
  154.     private:
  155.  
  156.         HashTable table;
  157.  
  158.     };
  159.  
  160. #endif  // TEMPLATES
  161.  
  162. #if defined( __BCOPT__ ) && !defined( _ALLOW_po )
  163. #pragma option -po.
  164. #endif
  165. #pragma option -Vo.
  166.  
  167. #endif  // __BAG_H
  168.  
  169.