Program Listing for File DepInfoSet.h

Program Listing for File DepInfoSet.h#

Return to documentation for file (src/midend/programTransformation/loopProcessing/depInfo/DepInfoSet.h)

#ifndef DEP_INFO_LIST_H
#define DEP_INFO_LIST_H

#include <DepInfo.h>
#include <CountRefHandle.h>
#include <LatticeElemList.h>

class DepInfoSetImpl : public LatticeElemList <DepInfo>
{
  void operator =(const DepInfoSetImpl& that) {}
 public:
  DepInfoSetImpl() {}
  DepInfoSetImpl( const DepInfoSetImpl &that)
    : LatticeElemList <DepInfo>(that) {}
  virtual ~DepInfoSetImpl() {}
  DepInfoSetImpl* Clone() const { return new DepInfoSetImpl(*this); }
 friend class CountRefHandle<DepInfoSetImpl>;
};

class DepInfoSet : protected CountRefHandle <DepInfoSetImpl>
{
 public:
   DepInfoSet();
   int NumOfDeps() const ;
   DepRel GetDepRel( int index1, int index2 ) const;

   bool IsTop() const;
   bool IsBottom(int commLevel = 0) const;
   std::string toString() const;

   bool AddDep( const DepInfo &c);
   bool operator |= (const DepInfoSet &that);
   bool operator &= (const DepInfoSet &that);

   void UpdateDepInfo( bool (*Update)(DepInfo &info) );

   DepInfoConstIterator GetConstIterator() const;
   DepInfoUpdateIterator GetUpdateIterator();

  friend class DepInfoSetGenerator;
};

class DepInfoSetGenerator
{
 public:
  static DepInfoSet GetTopInfoSet();
  static DepInfoSet GetBottomInfoSet(int nr, int nc, int commLevel = 0);
  static DepInfoSet GetIDInfoSet( int nr);
};

DepInfoSet  operator & ( const DepInfoSet &d1, const DepInfoSet &d2) ;
DepInfoSet  operator | ( const DepInfoSet &d1, const DepInfoSet &d2) ;
DepInfoSet  operator * ( const DepInfoSet &d1, const DepInfoSet &d2) ;
DepInfoSet Closure( DepInfoSet d);

#endif