home *** CD-ROM | disk | FTP | other *** search
/ The Devil's Doorknob BBS Capture (1996-2003) / devilsdoorknobbbscapture1996-2003.iso / Dloads / OTHERUTI / TCPP30-1.ZIP / CLASSINC.ZIP / BAG.H < prev    next >
C/C++ Source or Header  |  1992-02-18  |  4KB  |  153 lines

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