//
// Copyright (c) 2009 Froduald Kabanza and the Université de Sherbrooke.
// Use of this software is permitted for non-commercial research purposes, and
// it may be copied or applied only for that use. All copies must include this
// copyright message.
// 
// This is a research prototype and it has not gone through intensive tests and
// is delivered as is. It may still contain bugs. Froduald Kabanza and the
// Université de Sherbrooke disclaim any responsibility for damage that may be
// caused by using it.
//
// Implementation: Simon Chamberland
// Project Manager: Froduald Kabanza
//

#ifndef _I_CANCELLABLE_H
#define _I_CANCELLABLE_H

#include <stdexcept>

class ICancellable
{
public:
  ICancellable();

  static void start(ICancellable* cancellable);

  static void stop();

  void cancel();

  static ICancellable* current;

protected:
  bool m_cancelled;
};

class InterruptedException : public std::exception
{
};

#endif