-private:
- int resourceUsed(void *resource_id);
- /* Share the resources to the actions and return in how much time
- the next action may terminate */
- double shareResources(double now);
- /* Update the actions' state */
- void updateActionsState(double now, double delta);
- void updateResourceState(void *id, tmgr_trace_event_t event_type,
- double value, double time);
+/** @ingroup SURF_interface
+ * @brief SURF model interface class
+ * @details A model is an object which handle the interactions between its Resources and its Actions
+ */
+XBT_PUBLIC_CLASS Model {
+public:
+ Model();
+ virtual ~Model();
+
+ /** @brief Get the set of [actions](@ref Action) in *ready* state */
+ virtual ActionList* getReadyActionSet() {return readyActionSet_;}
+
+ /** @brief Get the set of [actions](@ref Action) in *running* state */
+ virtual ActionList* getRunningActionSet() {return runningActionSet_;}
+
+ /** @brief Get the set of [actions](@ref Action) in *failed* state */
+ virtual ActionList* getFailedActionSet() {return failedActionSet_;}
+
+ /** @brief Get the set of [actions](@ref Action) in *done* state */
+ virtual ActionList* getDoneActionSet() {return doneActionSet_;}
+
+ /** @brief Get the set of modified [actions](@ref Action) */
+ virtual ActionLmmListPtr getModifiedSet() {return modifiedSet_;}
+
+ /** @brief Get the maxmin system of the current Model */
+ lmm_system_t getMaxminSystem() {return maxminSystem_;}
+
+ /**
+ * @brief Get the update mechanism of the current Model
+ * @see e_UM_t
+ */
+ e_UM_t getUpdateMechanism() {return updateMechanism_;}
+
+ /** @brief Get Action heap */
+ xbt_heap_t getActionHeap() {return actionHeap_;}
+
+ /**
+ * @brief Share the resources between the actions
+ *
+ * @param now The current time of the simulation
+ * @return The delta of time till the next action will finish
+ */
+ virtual double nextOccuringEvent(double now);
+ virtual double nextOccuringEventLazy(double now);
+ virtual double nextOccuringEventFull(double now);
+
+ /**
+ * @brief Update action to the current time
+ *
+ * @param now The current time of the simulation
+ * @param delta The delta of time since the last update
+ */
+ virtual void updateActionsState(double now, double delta);
+ virtual void updateActionsStateLazy(double now, double delta);
+ virtual void updateActionsStateFull(double now, double delta);