Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
code is now splint'able; add a MSG_task_get_name
[simgrid.git] / include / msg / datatypes.h
index fe6cf11..08bd974 100644 (file)
@@ -7,15 +7,17 @@
 
 #ifndef MSG_DATATYPE_H
 #define MSG_DATATYPE_H
+#include "xbt/misc.h"
+
+BEGIN_DECL()
+
+/** \defgroup m_datatypes_management MSG Data Types 
+    \brief This section describes the different datatypes provided by MSG.
+*/
 
 /********************************* Host **************************************/
 
-struct s_m_host {
-  char *name;                  /* host name if any */
-  void *simdata;               /* simulator data */
-  void *data;                  /* user data */
-};
-/** \brief Host datatype  
+/** @name Host datatype  
     \ingroup m_datatypes_management
 
     A <em>location</em> (or <em>host</em>) is any possible place where
@@ -27,16 +29,17 @@ struct s_m_host {
 
     \see m_host_management
 */
-typedef struct s_m_host *m_host_t;
-
+/* @{ */
+typedef struct simdata_host *simdata_host_t;
+typedef struct m_host {
+  char *name;                  /**< host name if any */
+  simdata_host_t simdata;      /**< simulator data */
+  void *data;                  /**< user data */
+} s_m_host_t, *m_host_t;
+/* @} */
 /********************************* Task **************************************/
 
-struct s_m_task {
-  char *name;                  /* host name if any */
-  void *simdata;               /* simulator data */
-  void *data;                  /* user data */
-};
-/** \brief Task datatype  
+/** @name Task datatype  
     \ingroup m_datatypes_management 
 
     A <em>task</em> may then be defined by a <em>computing
@@ -44,42 +47,59 @@ struct s_m_task {
     data</em>.
     \see m_task_management
 */
-typedef struct s_m_task *m_task_t;
+/* @{ */
+typedef struct simdata_task *simdata_task_t;
+typedef struct m_task {
+  char *name;                  /* host name if any */
+  simdata_task_t simdata;      /* simulator data */
+  void *data;                  /* user data */
+} s_m_task_t, *m_task_t;
 
 /** \brief Default value for an uninitialized #m_task_t.
     \ingroup m_datatypes_management 
 */
 #define MSG_TASK_UNINITIALIZED NULL
+
+/* @} */
+
 /******************************* Process *************************************/
 
-struct s_m_process {
-  char *name;                  /* process name if any */
-  void *simdata;               /* simulator data */
-  void *data;                  /* user data */
-};
-/** \brief Agent datatype  
+/** @name Agent datatype  
     \ingroup m_datatypes_management 
+
     An agent may be defined as a <em>code</em>, with some <em>private
     data</em>, executing in a <em>location</em>.
     \see m_process_management
 */
-typedef struct s_m_process *m_process_t;
-/** \brief Agent code datatype  
-    \ingroup m_datatypes_management 
+/* @{ */
+typedef struct simdata_process *simdata_process_t;
+typedef struct m_process {
+  /** A name */
+  /** process name if any */
+  char *name;                  
+  simdata_process_t simdata;   /* simulator data */
+  void *data;                  /* user data */
+} s_m_process_t, *m_process_t;
+
+/** 
     The code of an agent is a m_process_code_t, i.e. a function with no arguments 
     returning no value.
     \see m_process_management
 */
 typedef int(*m_process_code_t)(int argc,char *argv[]) ;
+/* @} */
 
 /********************************** Channel **********************************/
-/** \brief Channel datatype  
+/** @name Channel datatype  
     \ingroup m_datatypes_management 
+
     A <em>channel</em>  is a number and identifies a mailbox type (just as a 
     port number does).
     \see m_channel_management
 */
+/* @{ */
 typedef int m_channel_t;
+/* @} */
 
 /****************************** Error handling *******************************/
 /** \brief Error handling
@@ -102,27 +122,21 @@ typedef enum {
   MSG_VERBOSE
 } MSG_outputmode_t;
 
+/** \deprecated Network sharing mechanism
+    \ingroup m_datatypes_management*/
 typedef enum {
   MSG_STORE_AND_FORWARD = 1, /* 0 means uninitialized value */
   MSG_TCP
 } MSG_sharing_t;
 
-/************************ deprecated *****************************************/
-/* /\********************************* Link **************************************\/ */
-/* struct s_m_link { */
-/*   char *name;                       /\* link name if any *\/ */
-/*   void *simdata;            /\* simulator data *\/ */
-/*   void *data;                       /\* user data *\/ */
-/* }; */
-
-/* /\** \brief Link datatype   */
-/*     \ingroup m_datatypes_management */
-
-/*     A <em>link</em> is an agglomeration of communicating resources */
-/*     representing a set of physical network links. */
-
-/*     \see m_link_management */
-/* *\/ */
-/* typedef struct s_m_link *m_link_t; */
+/** \deprecated Link datatype  
+ *  \ingroup m_datatypes_management
+ *    The notion of <em>link</em> was present in the earliest versions of MSG.  
+ *    It was an agglomeration of communicating resources representing a set of
+ *    physical network links. This abstraction a disappeared because in real-life,
+ *    it is generally not possible to interact directly with a link...
+ */
+typedef struct m_link *m_link_t;
 
+END_DECL()
 #endif