Main Page   Class Hierarchy   Compound List   File List   Compound Members   File Members  

nci/suif/suif2b/basesuif/suifkernel/iter.h

Go to the documentation of this file.
00001 #ifndef SUIFKERNEL__ITER_H
00002 #define SUIFKERNEL__ITER_H
00003 
00004 #include "iokernel/meta_class.h"
00005 #include "iokernel/cast.h"
00006 #include "suifkernel/suifkernel_messages.h"
00007 
00019 class IterHelper {
00020   void clone_iter();
00021 public:
00023   ObjectWrapper current_object() const;
00024 
00025   const MetaClass* current_meta_class() const;
00026 
00027   const LString& current_name() const;
00028 
00030   bool is_valid() const;
00031 
00033   void next();
00034 
00036   void previous();
00037 
00039   void set_to( size_t index );
00040 
00042   size_t length() const;
00043 
00044   void *current() const;
00045 
00046   IterHelper( Iterator* iter );
00047   ~IterHelper();
00048 
00049   IterHelper(const IterHelper &x);
00050 
00051   IterHelper & operator =(const IterHelper &x);
00052 
00053 private:
00054   Iterator* _iter;
00055   bool _owned;
00056 };
00057 
00086 template<class T>
00087 class Iter : public IterHelper {
00088   // the current type
00089   public:
00090 
00091   virtual T& current() const {
00092     suif_assert( is_valid() );
00093     void *v = IterHelper::current();
00094     T& val = *(T*)v;
00095     return val;
00096   }
00097 
00098   Iter( Iterator* iter ) : IterHelper( iter ) {}
00099   Iter( const Iter &other ) : IterHelper( other ) {}
00100   virtual ~Iter(void) {};
00101 
00102 };
00103 
00104 
00105 #endif

Generated at Mon Jul 31 13:41:33 2000 for NCI SUIF by doxygen 1.1.2 written by Dimitri van Heesch, © 1997-2000