+/** \brief Action states
+ * \ingroup SURF_actions
+ *
+ * Action states.
+ *
+ * \see surf_action_t, surf_action_state_t
+ */
+typedef enum {
+ SURF_ACTION_READY = 0, /**< Ready */
+ SURF_ACTION_RUNNING, /**< Running */
+ SURF_ACTION_FAILED, /**< Task Failure */
+ SURF_ACTION_DONE, /**< Completed */
+ SURF_ACTION_TO_FREE, /**< Action to free in next cleanup */
+ SURF_ACTION_NOT_IN_THE_SYSTEM /**< Not in the system anymore. Why did you ask ? */
+} e_surf_action_state_t;
+
+/** \brief Action state sets
+ * \ingroup SURF_actions
+ *
+ * This structure contains some sets of actions.
+ * It provides a fast access to the actions in each state.
+ *
+ * \see surf_action_t, e_surf_action_state_t
+ */
+typedef struct surf_action_state {
+ xbt_swag_t ready_action_set; /**< Actions in state SURF_ACTION_READY */
+ xbt_swag_t running_action_set; /**< Actions in state SURF_ACTION_RUNNING */
+ xbt_swag_t failed_action_set; /**< Actions in state SURF_ACTION_FAILED */
+ xbt_swag_t done_action_set; /**< Actions in state SURF_ACTION_DONE */
+} s_surf_action_state_t, *surf_action_state_t;
+