Page MenuHomePhorge

DeluxeExecutionPolicy.h
No OneTemporary

Size
2 KB
Referenced Files
None
Subscribers
None

DeluxeExecutionPolicy.h

//===-- rosa/deluxe/DeluxeExecutionPolicy.h ---------------------*- C++ -*-===//
//
// The RoSA Framework
//
//===----------------------------------------------------------------------===//
///
/// \file rosa/deluxe/DeluxeExecutionPolicy.h
///
/// \author David Juhasz (david.juhasz@tuwien.ac.at)
///
/// \date 2019
///
/// \brief Public interface of *execution policies* in the *deluxe interface*.
///
//===----------------------------------------------------------------------===//
#ifndef ROSA_DELUXE_DELUXEEXECUTIONPOLICY_H
#define ROSA_DELUXE_DELUXEEXECUTIONPOLICY_H
#include "rosa/core/AgentHandle.hpp"
#include <memory>
#include <set>
#include <vector>
namespace rosa {
namespace deluxe {
// Forward declaration of DeluxeSystem. Do not include the corresponding header
// in this file because of cyclic dependency.
class DeluxeSystem;
/// \todo Extend the interface with query functions about what kind of execution
/// policy is behind the interface. This can be done in relation to the existing
/// factory functions; for example, if the actual object is decimation and with
/// what rate.
class DeluxeExecutionPolicy {
protected:
DeluxeExecutionPolicy(void) noexcept = default;
private:
DeluxeExecutionPolicy(const DeluxeExecutionPolicy &) = delete;
DeluxeExecutionPolicy(DeluxeExecutionPolicy &&) = delete;
DeluxeExecutionPolicy &operator=(const DeluxeExecutionPolicy &) = delete;
DeluxeExecutionPolicy &operator=(DeluxeExecutionPolicy &&) = delete;
public:
virtual ~DeluxeExecutionPolicy(void) noexcept = default;
static std::unique_ptr<DeluxeExecutionPolicy> decimation(const size_t D);
static std::unique_ptr<DeluxeExecutionPolicy>
awaitAll(const std::set<size_t> &S);
static std::unique_ptr<DeluxeExecutionPolicy>
awaitAny(const std::set<size_t> &S);
virtual bool canHandle(const AgentHandle H, const DeluxeSystem &S) const
noexcept = 0;
virtual bool doExecute(const std::vector<bool> &InputChanged) noexcept = 0;
virtual std::string dump(void) const noexcept = 0;
protected:
bool isDeluxeAgent(const AgentHandle H, const DeluxeSystem &S) const noexcept;
size_t numberOfDeluxeAgentInputs(const AgentHandle H,
const DeluxeSystem &S) const noexcept;
};
} // End namespace deluxe
} // End namespace rosa
#endif // ROSA_DELUXE_DELUXEEXECUTIONPOLICY_H

File Metadata

Mime Type
text/x-c++
Expires
Sun, Mar 1, 9:36 PM (1 d, 20 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
286741
Default Alt Text
DeluxeExecutionPolicy.h (2 KB)

Event Timeline