Program Listing for File baseCFGIterator.h

Program Listing for File baseCFGIterator.h#

Return to documentation for file (src/midend/programAnalysis/genericDataflow/cfgUtils/baseCFGIterator.h)

#include <featureTests.h>
#ifdef ROSE_ENABLE_SOURCE_ANALYSIS

#ifndef BASE_CFG_ITERATOR
#define BASE_CFG_ITERATOR

#include "virtualCFG.h"
#include "DataflowCFG.h"

#include <list>
#include <set>

namespace BaseCFG{

class iterator : public printable
{
        //protected:
        public:

        std::list<DataflowNode> remainingNodes;
        //map<DataflowNode, bool> visited;
        std::set<DataflowNode> visited;

        public:
        virtual void operator ++ (int)=0;

        virtual bool eq(const iterator& other_it) const=0;

        virtual bool operator==(const iterator& other_it) const=0;

        virtual bool operator!=(const iterator& it) const=0;

        virtual DataflowNode& operator * ()=0;

        //virtual static iterator begin(DataflowNode n)=0;

        //virtual static iterator end()=0;

        // Contains the state of an iterator, allowing iterators to be
        // checkpointed and restarted.
        class checkpoint : public printable
        {
                // string str(string indent="");
        };

        // Returns a checkpoint of this iterator's progress.
        virtual checkpoint* getChkpt()=0;

        // Loads this iterator's state from the given checkpoint.
        virtual void restartFromChkpt(checkpoint& chkpt)=0;

        // string str(string indent="");
};

class back_iterator : public virtual iterator
{
};

class dataflow : public virtual iterator
{
        virtual void add(const DataflowNode &next)=0;
};

class back_dataflow : public back_iterator, public dataflow
{
};
}
#endif
#endif