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

nci/suif/suif2b/basesuif/iokernel/virtual_iterator.h

Go to the documentation of this file.
00001 #ifndef IOKERNEL__VIRTUAL_ITERATOR_H
00002 #define IOKERNEL__VIRTUAL_ITERATOR_H
00003 
00004 #include "iokernel_forwarders.h"
00005 #include "meta_class.h"
00006 
00007 class VirtualNode {
00008 public:
00009   virtual ~VirtualNode();
00010   virtual const MetaClass* current_meta_class( const VirtualIterator* state ) const;
00011   virtual const String current_name( const VirtualIterator* state ) const;
00012   virtual void* current( const VirtualIterator* state ) const;  
00013   virtual bool first( VirtualIterator* state, ConstAddress address ) = 0;
00014 
00015   virtual bool next( VirtualIterator* state );
00016   virtual void delete_state( IteratorState& state );
00017 };
00018 
00019 
00020 class VirtualIterator : public Iterator {
00021 public:
00022   VirtualIterator( ConstAddress address, VirtualNode* start_node );
00023 
00024   virtual const MetaClass* current_meta_class() const;
00025   virtual const LString& current_name() const;
00026 
00027   virtual Address current() const;
00028 
00029   virtual bool is_valid() const;
00030 
00031   virtual void next();
00032 
00033   virtual void previous();
00034 
00035   virtual void first();
00036 
00037   virtual void set_to( size_t index );
00038 
00039   virtual IteratorState& top() const;
00040 
00041   virtual bool pop();
00042 
00043   virtual void push( const IteratorState& state ) ;
00044   virtual VirtualNode* current_node() const;
00045 
00046   virtual ~VirtualIterator();
00047 
00048   virtual Iterator *clone() const;  
00049 protected:
00050   bool _is_valid;
00051 
00052   suif_vector<IteratorState>* _state;
00053   VirtualNode* _start_node;
00054 private:
00055   VirtualIterator(const VirtualIterator &);
00056   VirtualIterator &operator=(const VirtualIterator &);
00057 
00058 };
00059 
00060 
00061 
00062 #endif

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