Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Remove all dynamic casts
[simgrid.git] / src / surf / cpu_interface.hpp
index b60bf13..6b8c405 100644 (file)
@@ -1,8 +1,8 @@
-#include "surf.hpp"
-#include "maxmin_private.h"
+#include "surf_interface.hpp"
+#include "maxmin_private.hpp"
 
-#ifndef SURF_MODEL_CPU_H_
-#define SURF_MODEL_CPU_H_
+#ifndef SURF_CPU_INTERFACE_HPP_
+#define SURF_CPU_INTERFACE_HPP_
 
 /***********
  * Classes *
@@ -13,21 +13,15 @@ typedef CpuModel *CpuModelPtr;
 class Cpu;
 typedef Cpu *CpuPtr;
 
-class CpuLmm;
-typedef CpuLmm *CpuLmmPtr;
-
 class CpuAction;
 typedef CpuAction *CpuActionPtr;
 
-class CpuActionLmm;
-typedef CpuActionLmm *CpuActionLmmPtr;
-
 /*********
  * Model *
  *********/
 class CpuModel : public Model {
 public:
-  CpuModel(string name) : Model(name) {};
+  CpuModel(const char *name) : Model(name) {};
   CpuPtr createResource(string name);
   void updateActionsStateLazy(double now, double delta);
   void updateActionsStateFull(double now, double delta);
@@ -38,14 +32,17 @@ public:
 /************
  * Resource *
  ************/
-class Cpu : virtual public Resource {
+class Cpu : public Resource {
 public:
   Cpu(){};
-  Cpu(CpuModelPtr model, const char* name, xbt_dict_t properties, int core, double powerPeak, double powerScale)
-   : Resource(model, name, properties), m_core(core), m_powerPeak(powerPeak), m_powerScale(powerScale)
-   {};
-  virtual ActionPtr execute(double size)=0;
-  virtual ActionPtr sleep(double duration)=0;
+  /*Cpu(lmm_constraint_t constraint);*/
+  Cpu(ModelPtr model, const char *name, xbt_dict_t props,
+         lmm_constraint_t constraint, int core, double powerPeak, double powerScale);
+  Cpu(ModelPtr model, const char *name, xbt_dict_t props,
+         int core, double powerPeak, double powerScale);
+  ~Cpu();
+  virtual CpuActionPtr execute(double size)=0;
+  virtual CpuActionPtr sleep(double duration)=0;
   virtual int getCore();
   virtual double getSpeed(double load);
   virtual double getAvailableSpeed();
@@ -60,46 +57,28 @@ public:
   int m_core;
   double m_powerPeak;            /*< CPU power peak */
   double m_powerScale;           /*< Percentage of CPU disponible */
-protected:
 
-  //virtual boost::shared_ptr<Action> execute(double size) = 0;
-  //virtual boost::shared_ptr<Action> sleep(double duration) = 0;
-};
-
-class CpuLmm : public ResourceLmm, public Cpu {
-public:
-  CpuLmm() : p_constraintCore(NULL), p_constraintCoreId(NULL) {};
-  CpuLmm(CpuModelPtr model, const char* name, xbt_dict_t properties, int core, double powerPeak, double powerScale);
-  ~CpuLmm();
   /* Note (hypervisor): */
   lmm_constraint_t *p_constraintCore;
   void **p_constraintCoreId;
-
 };
 
 /**********
  * Action *
  **********/
-class CpuAction : virtual public Action {
+class CpuAction : public Action {
 public:
   CpuAction(){};
   CpuAction(ModelPtr model, double cost, bool failed)
-  : Action(model, cost, failed) {};
-  virtual void setAffinity(CpuPtr cpu, unsigned long mask)=0;
-  virtual void setBound(double bound)=0;
-};
+  : Action(model, cost, failed) {} //FIXME:REMOVE
+  CpuAction(ModelPtr model, double cost, bool failed, lmm_variable_t var)
+  : Action(model, cost, failed, var) {}
+  virtual void setAffinity(CpuPtr cpu, unsigned long mask);
+  virtual void setBound(double bound);
 
-class CpuActionLmm : public ActionLmm, public CpuAction {
-public:
-  CpuActionLmm(){};
-  CpuActionLmm(ModelPtr model, double cost, bool failed)
-  : Action(model, cost, failed), ActionLmm(model, cost, failed), CpuAction(model, cost, failed) {};
   void updateRemainingLazy(double now);
   virtual void updateEnergy()=0;
-  void setAffinity(CpuPtr cpu, unsigned long mask);
-  void setBound(double bound);
   double m_bound;
 };
 
-
-#endif /* SURF_MODEL_CPU_H_ */
+#endif /* SURF_CPU_INTERFACE_HPP_ */