home *** CD-ROM | disk | FTP | other *** search
/ Power GUI Programming with VisualAge C++ / powergui.iso / trialva / ibmcppw / include / iiksbseq.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-02-22  |  7.4 KB  |  304 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. #ifndef _IIKSBSEQ_H
  19. #define _IIKSBSEQ_H
  20.  
  21. #include <iiaksb.h>
  22.  
  23.  
  24. #pragma info (nocls, nocnd, nocns, nocnv, noext, nognr, novft)
  25. #pragma pack (4)
  26.  
  27. #pragma SOMAsDefault (off)
  28.  
  29. template <class Base>
  30. class IKeySortedBagOnSequenceMngCursorImpl;
  31.  
  32. template <class Base>
  33. class IKeySortedBagOnSequenceImpl;
  34.  
  35. template <class Base>
  36. class IKeySortedBagOnSequenceMngCursorImpl : public Base::MngCursor {
  37.  
  38.   typedef  Base::MngCursor Inherited;
  39.  
  40. public:
  41.  
  42.            IKeySortedBagOnSequenceMngCursorImpl
  43.                             (IKeySortedBagOnSequenceImpl <Base> const&);
  44.  
  45.           ~IKeySortedBagOnSequenceMngCursorImpl
  46.                             ();
  47.  
  48. protected:
  49.  
  50. private:
  51.  
  52.  
  53. };
  54.  
  55. template <class Base>
  56. class ISortedRelationOnKeySortedBagImpl;
  57.  
  58. template <class Base>
  59. class IKeyBagOnKeySortedBagImpl;
  60.  
  61. template <class Base>
  62. class IAKeySortedBagOnSequenceOps;
  63.  
  64. template <class Base>
  65. class IKeySortedBagOnSequenceImpl : public IAKeySortedBagImpl {
  66.  
  67.   typedef  IAKeySortedBagImpl Inherited;
  68.  
  69.   typedef  IKeySortedBagOnSequenceImpl <Base> Self;
  70.  
  71. public:
  72.  
  73.   typedef  IAKeySortedBagOnSequenceOps <Base> Ops;
  74.  
  75.   typedef  Base::Cursor Cursor;
  76.  
  77.   typedef  IKeySortedBagOnSequenceMngCursorImpl <Base> MngCursor;
  78.  
  79.            IKeySortedBagOnSequenceImpl
  80.                             (Ops&, INumber);
  81.  
  82.            IKeySortedBagOnSequenceImpl
  83.                             (Ops&,
  84.                              IKeySortedBagOnSequenceImpl <Base> const&);
  85.  
  86.           ~IKeySortedBagOnSequenceImpl
  87.                             ();
  88.  
  89.   IBoolean Add              (void const*, ICursorImpl&);
  90.  
  91.   IBoolean AddOrReplaceElementWithKey
  92.                             (void const*, ICursorImpl&);
  93.  
  94.   IBoolean AllElementsDo    (IApplFunc, void*);
  95.  
  96.   void*    Any              () const;
  97.  
  98.   IBoolean CheckCursor      (ICursorImpl const&) const;
  99.  
  100.   IBoolean CheckReplacement (ICursorImpl const&, void const*) const;
  101.  
  102.   char const*
  103.            ClassName        () const;
  104.  
  105.   IACollectionImpl*
  106.            Clone            () const;
  107.  
  108.   IBoolean ContainsAllKeysFrom
  109.                             (IACollectionImpl const&) const;
  110.  
  111.   IBoolean ContainsElementWithKey
  112.                             (void const*) const;
  113.  
  114.   void     Copy             (IACollectionImpl const&);
  115.  
  116.   Cursor*  CreateCursor     () const;
  117.  
  118.   MngCursor*
  119.            CreateMngCursor  () const;
  120.  
  121.   void*    ElementAt        (ICursorImpl const&) const;
  122.  
  123.   void*    ElementAtPosition
  124.                             (IPosition) const;
  125.  
  126.   void*    ElementWithKey   (void const*) const;
  127.  
  128.   void*    First            () const;
  129.  
  130.   IBoolean IsBounded        () const;
  131.  
  132.   IBoolean IsConsistent     () const;
  133.  
  134.   IBoolean IsEmpty          () const;
  135.  
  136.   IBoolean IsFirstAt        (ICursorImpl const&) const;
  137.  
  138.   IBoolean IsFull           () const;
  139.  
  140.   IBoolean IsLastAt         (ICursorImpl const&) const;
  141.  
  142.   void*    Key              (void const*) const;
  143.  
  144.   void*    Last             () const;
  145.  
  146.   IBoolean LocateElementWithKey
  147.                             (void const*, ICursorImpl&) const;
  148.  
  149.   IBoolean LocateNextElementWithKey
  150.                             (void const*, ICursorImpl&) const;
  151.  
  152.   IBoolean LocateOrAddElementWithKey
  153.                             (void const*, ICursorImpl&);
  154.  
  155.   INumber  NumberOfDifferentKeys
  156.                             () const;
  157.  
  158.   INumber  NumberOfElements () const;
  159.  
  160.   INumber  NumberOfElementsWithKey
  161.                             (void const*) const;
  162.  
  163.   IPosition
  164.            PositionAt       (ICursorImpl const&) const;
  165.  
  166.   INumber  RemoveAll        ();
  167.  
  168.   INumber  RemoveAll        (IPredFunc, void*);
  169.  
  170.   INumber  RemoveAllElementsWithKey
  171.                             (void const*);
  172.  
  173.   void     RemoveAt         (ICursorImpl&);
  174.  
  175.   void     RemoveAtPosition (IPosition);
  176.  
  177.   IBoolean RemoveElementWithKey
  178.                             (void const*);
  179.  
  180.   void     RemoveFirst      ();
  181.  
  182.   void     RemoveLast       ();
  183.  
  184.   void     ReplaceAt        (ICursorImpl const&, void const*);
  185.  
  186.   void     ReplaceAtPosition
  187.                             (IPosition, void const*);
  188.  
  189.   IBoolean ReplaceElementWithKey
  190.                             (void const*, ICursorImpl&);
  191.  
  192.   IBoolean SetToFirst       (ICursorImpl&) const;
  193.  
  194.   IBoolean SetToLast        (ICursorImpl&) const;
  195.  
  196.   IBoolean SetToNext        (ICursorImpl&) const;
  197.  
  198.   IBoolean SetToNextWithDifferentKey
  199.                             (ICursorImpl&) const;
  200.  
  201.   void     SetToPosition    (IPosition, ICursorImpl&) const;
  202.  
  203.   IBoolean SetToPrevious    (ICursorImpl&) const;
  204.  
  205.   void     operator=        (IKeySortedBagOnSequenceImpl <Base> const&);
  206.  
  207.   TStream& operator<<=      (TStream&);
  208.  
  209.   TStream& operator>>=      (TStream&) const;
  210.  
  211. protected:
  212.  
  213.   long     CompareKeys      (void const*, void const*, IArgType) const;
  214.  
  215. private:
  216.  
  217.   static
  218.   char const*
  219.            cvClassName;
  220.  
  221.   Base&    ivBase;
  222.  
  223.   void const*
  224.            ivKey;
  225.  
  226.  
  227.   struct Predicate {
  228.  
  229.     typedef  IKeySortedBagOnSequenceImpl <Base> KSB;
  230.  
  231.     static
  232.     IBoolean IsEqual          (void const*, void*);
  233.  
  234.   };
  235.  
  236.  
  237.   static
  238.   Base&    BaseOf           (IKeySortedBagOnSequenceImpl <Base> const&);
  239.  
  240.   IBoolean LocateKey        (void const*, ICursorImpl&) const;
  241.  
  242.   IBoolean LocateNextKey    (void const*, ICursorImpl&) const;
  243.  
  244.   static
  245.   Ops&     OpsOf            (IKeySortedBagOnSequenceImpl <Base> const&);
  246.  
  247.   friend
  248.   struct   Predicate;
  249.  
  250.   friend
  251.   class    IKeySortedBagOnSequenceMngCursorImpl <Base>;
  252.  
  253.   friend
  254.   class    ISortedRelationOnKeySortedBagImpl <Self>;
  255.  
  256.   friend
  257.   class    IKeyBagOnKeySortedBagImpl <Self>;
  258.  
  259.  
  260. };
  261.  
  262. template <class Base>
  263. class IAKeySortedBagOnSequenceOps {
  264. public:
  265.  
  266.   virtual ~IAKeySortedBagOnSequenceOps
  267.                             ();
  268.  
  269.   virtual
  270.   IACollectionImpl*
  271.            Clone            () const = 0;
  272.  
  273.   virtual
  274.   long     CompareKeys      (void const*, void const*,
  275.                              IArgType) const = 0;
  276.  
  277.   virtual
  278.   void*    Key              (void const*) const = 0;
  279.  
  280.   virtual
  281.   TStream& operator<<=      (TStream&) = 0;
  282.  
  283.   virtual
  284.   TStream& operator>>=      (TStream&) const = 0;
  285.  
  286.   virtual  operator Base&   () = 0;
  287.  
  288. protected:
  289.  
  290. private:
  291.  
  292.  
  293. };
  294.  
  295. #pragma SOMAsDefault (pop)
  296.  
  297. #include <iiksbseq.inl>
  298.  
  299.  
  300. #pragma info (restore)
  301. #pragma pack ()
  302.  
  303. #endif
  304.