#ifndef __FORENSICS_INTERDATASOURCE_HH__
#define __FORENSICS_INTERDATASOURCE_HH__

#include "forensics.hh"
#include "datasource.hh"


class InterDataSource : public DataSource 
{
protected:
  DataSource& m_parent;
  Gecode::IntVar m_unavailable;

public:
  InterDataSource (Gecode::Space& home, DataSource& parent, Gecode::IntSet domain_restriction);

  InterDataSource (bool share, Gecode::Space& home, DataSource& parent, InterDataSource& ds);

  virtual Gecode::IntVar& unavailable ();

  virtual unsigned char read (int64_t offset) const;

  virtual void read (int64_t block, unsigned char* buffer) const;

  virtual void print (std::ostream& os) const;
};

#endif

