Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Examples  

Iterator.hpp

00001 #if   !defined(__ITERATOR_HPP)
00002 #define  __ITERATOR_HPP
00003 
00004 /*
00005   CoreLinux++ 
00006   Copyright (C) 2000 CoreLinux Consortium
00007   
00008    The CoreLinux++ Library is free software; you can redistribute it and/or
00009    modify it under the terms of the GNU Library General Public License as
00010    published by the Free Software Foundation; either version 2 of the
00011    License, or (at your option) any later version.
00012 
00013    The CoreLinux++ Library Library is distributed in the hope that it will 
00014    be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
00015    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00016    Library General Public License for more details.
00017 
00018    You should have received a copy of the GNU Library General Public
00019    License along with the GNU C Library; see the file COPYING.LIB.  If not,
00020    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
00021    Boston, MA 02111-1307, USA.  
00022 */   
00023 
00024 #if   !defined(__COMMON_HPP)
00025 #include <Common.hpp>
00026 #endif
00027 
00028 #include <IteratorBoundsException.hpp>
00029 
00030 namespace   corelinux
00031 {
00032 
00033    DECLARE_CLASS( IteratorBoundsException );
00034    DECLARE_CLASS( InvalidIteratorException );
00035 
00043    template< class ElementType >
00044       class Iterator : public CoreLinuxObject
00045       {
00046       public:
00047 
00048          //
00049          // Constructors and destructor
00050          //
00051 
00053 
00054                      Iterator( void )
00055                         :
00056                         CoreLinuxObject()
00057                      {
00058                         ;  // do nothing
00059                      }
00060 
00066                      Iterator( const Iterator &aRef )
00067                         :
00068                         CoreLinuxObject( aRef )
00069                      {
00070                         ;  // do nothing
00071                      }
00072 
00074 
00075          virtual     ~Iterator( void )
00076          {
00077             ;  // do nothing
00078          }
00079 
00080          //
00081          // Operator overloads
00082          //
00083 
00090                   Iterator & operator=( const Iterator & )
00091                   {
00092                      return (*this);
00093                   }
00094 
00101                   bool  operator==( const Iterator & aRef ) const
00102                   {
00103                      return (this == &aRef);
00104                   }
00105                   
00106 
00107          //
00108          // Accessors
00109          //
00117          virtual  bool  isValid( void ) const = 0;
00118 
00127          virtual  ElementType  getElement( void ) 
00128                          const throw(IteratorBoundsException) = 0;
00129 
00130          //
00131          // Mutators
00132          //
00133 
00135 
00136          virtual  void  setFirst( void ) = 0;
00137 
00144          virtual  void  setNext( void ) 
00145                            throw(IteratorBoundsException) = 0;
00146 
00153          virtual  void  setPrevious( void ) 
00154                            throw(IteratorBoundsException) = 0;
00155 
00162          virtual  void  setLast( void ) 
00163                            throw(IteratorBoundsException) = 0;
00164 
00165    
00166       };
00167 }
00168 
00169 #endif   // if !defined(__ITERATOR_HPP)
00170 
00171 /*
00172    Common rcs information do not modify
00173    $Author: prudhomm $
00174    $Revision: 1.2 $
00175    $Date: 2000/08/31 22:52:20 $
00176    $Locker:  $
00177 */
00178 

This is the CoreLinux++ reference manual
Provided by The CoreLinux Consortium