+template <class AnyResource> class Resource_T : public Resource {
+ Model* model_ = nullptr;
+ lmm::Constraint* constraint_ = nullptr;
+
+public:
+ using Resource::Resource;
+ AnyResource* set_model(Model* model)
+ {
+ model_ = model;
+ return static_cast<AnyResource*>(this);
+ }
+
+ Model* get_model() const { return model_; }
+
+ AnyResource* set_constraint(lmm::Constraint* constraint)
+ {
+ constraint_ = constraint;
+ return static_cast<AnyResource*>(this);
+ }
+
+ lmm::Constraint* get_constraint() const { return constraint_; }
+
+ /** @brief returns the current load due to activities (in flops per second, byte per second or similar)
+ *
+ * The load due to external usages modeled by profile files is ignored.*/
+ virtual double get_load() const { return constraint_->get_usage(); }