home *** CD-ROM | disk | FTP | other *** search
/ Power GUI Programming with VisualAge C++ / powergui.iso / trialva / ibmcppw / include / iiacllct.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-02-22  |  9.4 KB  |  433 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 _IIACLLCT_H
  19. #define _IIACLLCT_H
  20.  
  21. #include <iiglobal.h>
  22. #include <iexctxt.h>
  23.  
  24. #include <iivcllct.h>
  25.  
  26. #pragma info (nocls, nocnd, nocns, nocnv, noext, nognr, novft)
  27. #pragma pack (4)
  28.  
  29. #pragma SOMAsDefault (off)
  30.  
  31. class IACollectionImpl;
  32.  
  33. class ICursorImpl {
  34. public:
  35.  
  36.            ICursorImpl      (IACollectionImpl const&);
  37.  
  38.   virtual ~ICursorImpl      ();
  39.  
  40.   virtual
  41.   ICursorImpl*
  42.            Clone            () const = 0;
  43.  
  44.   virtual
  45.   void     Copy             (ICursorImpl const&) = 0;
  46.  
  47.   void const*
  48.            Element          () const;
  49.  
  50.   virtual
  51.   void     Invalidate       () = 0;
  52.  
  53.   IBoolean IsFor            (IACollectionImpl const&) const;
  54.  
  55.   virtual
  56.   IBoolean IsInBetween      () const = 0;
  57.  
  58.   virtual
  59.   IBoolean IsMngCursor      () const;
  60.  
  61.   virtual
  62.   IBoolean IsValid          () const = 0;
  63.  
  64.   IPosition
  65.            Position         () const;
  66.  
  67.   IBoolean SetToFirst       ();
  68.  
  69.   IBoolean SetToLast        ();
  70.  
  71.   IBoolean SetToNext        ();
  72.  
  73.   void     SetToPosition    (IPosition);
  74.  
  75.   IBoolean SetToPrevious    ();
  76.  
  77.   virtual
  78.   IBoolean operator==       (ICursorImpl const&) const;
  79.  
  80.   IBoolean operator!=       (ICursorImpl const&) const;
  81.  
  82. protected:
  83.  
  84.   IACollectionImpl const*
  85.            ivCollection;
  86.  
  87.   static
  88.   void*    CheckPointer     (void*);
  89.  
  90. private:
  91.  
  92.  
  93. };
  94.  
  95.  
  96. class IACollectionOps;
  97.  
  98. class IACollectionImpl : public IVCollectionImpl {
  99. public:
  100.  
  101.   typedef  IACollectionOps Ops;
  102.  
  103.           ~IACollectionImpl ();
  104.  
  105.   IBoolean Add              (void const*);
  106.  
  107.   virtual
  108.   IBoolean Add              (void const*, ICursorImpl&) = 0;
  109.  
  110.   void     AddAsFirst       (void const*);
  111.  
  112.   virtual
  113.   void     AddAsFirst       (void const*, ICursorImpl&); // = 0
  114.  
  115.   void     AddAsLast        (void const*);
  116.  
  117.   virtual
  118.   void     AddAsLast        (void const*, ICursorImpl&); // = 0
  119.  
  120.   virtual
  121.   void     AddAsNext        (void const*, ICursorImpl&); // = 0
  122.  
  123.   virtual
  124.   void     AddAsPrevious    (void const*, ICursorImpl&); // = 0
  125.  
  126.   void     AddAtPosition    (IPosition, void const*);
  127.  
  128.   virtual
  129.   void     AddAtPosition    (IPosition,
  130.                              void const*, ICursorImpl&); // = 0
  131.  
  132.   IBoolean AddOrReplaceElementWithKey
  133.                             (void const*);
  134.  
  135.   virtual
  136.   IBoolean AddOrReplaceElementWithKey
  137.                             (void const*, ICursorImpl&); // = 0
  138.  
  139.   virtual
  140.   void     AddAllFrom       (IACollectionImpl const&);
  141.  
  142.   virtual
  143.   IBoolean AllElementsDo    (IApplFunc, void*);
  144.  
  145.   virtual
  146.   void*    Any              () const = 0;
  147.  
  148.   static
  149.   void*    CheckPointer     (void*);
  150.  
  151.   virtual
  152.   char const*
  153.            ClassName        () const = 0;
  154.  
  155.   virtual
  156.   IACollectionImpl*
  157.            Clone            () const = 0;
  158.  
  159.   virtual
  160.   IBoolean Contains         (void const*) const; // = 0
  161.  
  162.   virtual
  163.   IBoolean ContainsAllFrom  (IACollectionImpl const&) const; // = 0
  164.  
  165.   virtual
  166.   IBoolean ContainsAllKeysFrom
  167.                             (IACollectionImpl const&) const; // = 0
  168.  
  169.   virtual
  170.   IBoolean ContainsElementWithKey
  171.                             (void const*) const; // = 0
  172.  
  173.   virtual
  174.   void     Copy             (IACollectionImpl const&);
  175.  
  176.   virtual
  177.   ICursorImpl*
  178.            CreateCursor     () const = 0;
  179.  
  180.   virtual
  181.   ICursorImpl*
  182.            CreateMngCursor  () const = 0;
  183.  
  184.   void     Delete           ();
  185.  
  186.   virtual
  187.   void*    ElementAt        (ICursorImpl const&) const = 0;
  188.  
  189.   virtual
  190.   void*    ElementAtPosition
  191.                             (IPosition) const; // = 0
  192.  
  193.   virtual
  194.   void*    ElementWithKey   (void const*) const; // = 0
  195.  
  196.   virtual
  197.   void*    First            () const;
  198.  
  199.   void     Initialize       ();
  200.  
  201.   virtual
  202.   IBoolean IsBounded        () const = 0;
  203.  
  204.   virtual
  205.   IBoolean IsConsistent     () const = 0;
  206.  
  207.   virtual
  208.   IBoolean IsEmpty          () const;
  209.  
  210.   virtual
  211.   IBoolean IsFirstAt        (ICursorImpl const&) const;
  212.  
  213.   virtual
  214.   IBoolean IsFull           () const = 0;
  215.  
  216.   virtual
  217.   IBoolean IsLastAt         (ICursorImpl const&) const;
  218.  
  219.   virtual
  220.   void*    Key              (void const*) const; // = 0
  221.  
  222.   virtual
  223.   void*    Last             () const;
  224.  
  225.   virtual
  226.   IBoolean Locate           (void const*, ICursorImpl&) const; // = 0
  227.  
  228.   virtual
  229.   IBoolean LocateElementWithKey
  230.                             (void const*, ICursorImpl&) const; // = 0
  231.  
  232.   virtual
  233.   IBoolean LocateNext       (void const*, ICursorImpl&) const; // = 0
  234.  
  235.   virtual
  236.   IBoolean LocateNextElementWithKey
  237.                             (void const*, ICursorImpl&) const; // = 0
  238.  
  239.   IBoolean LocateOrAdd      (void const*);
  240.  
  241.   virtual
  242.   IBoolean LocateOrAdd      (void const*, ICursorImpl&); // = 0
  243.   
  244.   IBoolean LocateOrAddElementWithKey
  245.                             (void const*);
  246.  
  247.   virtual
  248.   IBoolean LocateOrAddElementWithKey
  249.                             (void const*, ICursorImpl&); // = 0
  250.  
  251.   virtual
  252.   void     LockBeforeReading
  253.                             (long = -1);
  254.  
  255.   virtual
  256.   void     LockBeforeWriting
  257.                             (long = -1);
  258.  
  259.   virtual
  260.   INumber  MaxNumberOfElements
  261.                             () const;
  262.  
  263.   virtual
  264.   INumber  NumberOfDifferentKeys
  265.                             () const; // = 0
  266.  
  267.   virtual    
  268.   INumber  NumberOfElements () const = 0;
  269.  
  270.   virtual
  271.   INumber  NumberOfElementsWithKey
  272.                             (void const*) const; // = 0
  273.  
  274.   virtual
  275.   INumber  NumberOfOccurrences
  276.                             (void const*) const; // = 0
  277.  
  278.   virtual
  279.   IPosition
  280.            PositionAt       (ICursorImpl const&) const; // = 0
  281.  
  282.   virtual
  283.   IBoolean Remove           (void const*); // = 0
  284.  
  285.   virtual
  286.   INumber  RemoveAll        () = 0;
  287.  
  288.   virtual
  289.   INumber  RemoveAll        (IPredFunc, void*) = 0;
  290.  
  291.   virtual
  292.   INumber  RemoveAllElementsWithKey
  293.                             (void const*); // = 0
  294.  
  295.   virtual
  296.   INumber  RemoveAllOccurrences
  297.                             (void const*); // = 0
  298.  
  299.   virtual
  300.   void     RemoveAt         (ICursorImpl&) = 0;
  301.  
  302.  
  303.   virtual
  304.   void     RemoveAtPosition (IPosition); // = 0
  305.  
  306.   virtual
  307.   IBoolean RemoveElementWithKey
  308.                             (void const*); // = 0
  309.  
  310.   virtual
  311.   void     RemoveFirst      ();
  312.  
  313.   virtual
  314.   void     RemoveLast       ();
  315.  
  316.   virtual
  317.   void     ReplaceAt        (ICursorImpl const&, void const*) = 0;
  318.  
  319.   virtual
  320.   void     ReplaceAtPosition
  321.                             (IPosition, void const*);
  322.  
  323.   IBoolean ReplaceElementWithKey
  324.                             (void const*);
  325.  
  326.   virtual
  327.   IBoolean ReplaceElementWithKey
  328.                             (void const*, ICursorImpl&); // = 0
  329.  
  330.   virtual
  331.   void     Reverse          (); // = 0
  332.  
  333.   virtual
  334.   IBoolean SetToFirst       (ICursorImpl&) const = 0;
  335.  
  336.   virtual
  337.   IBoolean SetToLast        (ICursorImpl&) const; // = 0
  338.  
  339.   virtual
  340.   IBoolean SetToNext        (ICursorImpl&) const = 0;
  341.  
  342.   virtual
  343.   IBoolean SetToNextWithDifferentKey
  344.                             (ICursorImpl&) const; // = 0
  345.  
  346.   virtual
  347.   void     SetToPosition    (IPosition, ICursorImpl&) const; // = 0
  348.  
  349.   virtual
  350.   IBoolean SetToPrevious    (ICursorImpl&) const; // = 0
  351.  
  352.   virtual
  353.   void     Sort             (ICompFunc, void*); // = 0
  354.  
  355.   virtual
  356.   void     UnlockAfterReading
  357.                             ();
  358.  
  359.   virtual
  360.   void     UnlockAfterWriting
  361.                             ();
  362.  
  363.   virtual
  364.   TStream& operator<<=      (TStream&) = 0;
  365.  
  366.   virtual
  367.   TStream& operator>>=      (TStream&) const = 0;
  368.  
  369. protected:
  370.  
  371. #pragma SOMAsDefault (off)
  372.  
  373.   struct Predicate {
  374.  
  375.     static
  376.     IBoolean IsContained      (void const*, void*);
  377.  
  378.     static
  379.     IBoolean IsNotContained   (void const*, void*);
  380.  
  381.   };
  382.  
  383. #pragma SOMAsDefault (pop)
  384.  
  385.            IACollectionImpl (Ops&);
  386.  
  387.            IACollectionImpl (IACollectionImpl const&);
  388.  
  389.   static
  390.   inline
  391.   ICursorImpl&
  392.            CursorOf         (IACollectionImpl const&);
  393.  
  394.   static
  395.   Ops&     OpsOf            (IACollectionImpl const&);
  396.  
  397. private:
  398.  
  399.   static
  400.   ICollectionExceptionText
  401.            cvExceptionText;
  402.  
  403.   Ops*     ivOps;
  404.  
  405.   INumber  ivReferenceCount;
  406.  
  407.   ICursorImpl*
  408.            ivDummyCursor;
  409.  
  410.  
  411. };
  412.  
  413. class IACollectionOps {
  414. public:
  415.  
  416.   virtual ~IACollectionOps  ();
  417.  
  418. protected:
  419.  
  420. private:
  421.  
  422.  
  423. };
  424.  
  425. #pragma SOMAsDefault (pop)
  426.  
  427. #include <iiacllct.inl>
  428.  
  429. #pragma info (restore)
  430. #pragma pack ()
  431.  
  432. #endif
  433.