Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
add XBT_PUBLIC_CLASS macro, and a bunch of XBT_PUBLIC declarations
[simgrid.git] / src / surf / surf_interface.hpp
index 7dac341..e5e44a6 100644 (file)
@@ -115,7 +115,7 @@ XBT_PUBLIC_DATA(xbt_dynar_t) model_list;
  * @brief SURF model interface class
  * @details A model is an object which handle the interactions between its Resources and its Actions
  */
-class Model {
+XBT_PUBLIC_CLASS Model {
 public:
   /** 
    * @brief Model constructor
@@ -252,7 +252,7 @@ typedef struct {
  * @brief SURF resource interface class
  * @details A resource represent an element of a component (e.g.: a link for the network)
  */
-class Resource {
+XBT_PUBLIC_CLASS Resource {
 public:
   /** 
    * @brief Resource constructor
@@ -365,7 +365,6 @@ private:
   const char *p_name;
   xbt_dict_t p_properties;
   ModelPtr p_model;
-  void *p_resource;
   bool m_running;
   e_surf_resource_state_t m_stateCurrent;
 
@@ -390,13 +389,15 @@ void surf_action_lmm_update_index_heap(void *action, int i);
  * @brief SURF action interface class
  * @details An action is an event generated by a resource (e.g.: a communication for the network)
  */
-class Action : public actionHook, public actionLmmHook {
-public:
+XBT_PUBLIC_CLASS Action : public actionHook, public actionLmmHook {
+private:
   /**
-   * @brief Action constructor
+   * @brief Common initializations for the constructors
    */
-  Action();
+  void initialize(ModelPtr model, double cost, bool failed,
+                  lmm_variable_t var = NULL);
 
+public:
   /**
    * @brief Action constructor
    * 
@@ -515,14 +516,14 @@ public:
    * 
    * @param delta [TODO]
    */
-  void updateMaxDuration(double delta) {double_update(&m_maxDuration, delta);}
+  void updateMaxDuration(double delta) {double_update(&m_maxDuration, delta,sg_surf_precision);}
 
   /**
    * @brief Update the remaining time of the current action
    * 
    * @param delta [TODO]
    */
-  void updateRemains(double delta) {double_update(&m_remains, delta);}
+  void updateRemains(double delta) {double_update(&m_remains, delta, sg_maxmin_precision*sg_surf_precision);}
 
   /**
    * @brief Set the remaining time of the current action
@@ -632,6 +633,8 @@ public:
 
   s_xbt_swag_hookup_t p_stateHookup;
 
+  ModelPtr getModel() {return p_model;}
+
 protected:
   ActionListPtr p_stateSet;
   double m_priority; /**< priority (1.0 by default) */
@@ -640,8 +643,6 @@ protected:
   double m_maxDuration; /*< max_duration (may fluctuate until the task is completed) */
   double m_finish; /**< finish time : this is modified during the run and fluctuates until the task is completed */
 
-  ModelPtr getModel() {return p_model;}
-
 private:
   int resourceUsed(void *resource_id);