Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
* Cleanup the DTD by renaming:
[simgrid.git] / src / include / surf / surf.h
index eace0c2..d05507d 100644 (file)
@@ -140,9 +140,14 @@ typedef struct surf_model_public {
   int (*is_suspended) (surf_action_t action); /**< Return whether an action is suspended */
   void (*set_max_duration) (surf_action_t action, double duration); /**< Set the max duration of an action*/
   void (*set_priority) (surf_action_t action, double priority); /**< Set the priority of an action */
-  void (*set_callback) (void *resource, void value, void *function, void *arg);
-  int (*get_callback)  (void **resource, void *value, void **function, void **arg);
   const char *name; /**< Name of this model */
+
+  /*for the properties of the link*/
+  xbt_dict_t (*get_link_properties) (void* link);
+
+  /*for the properties of the cpu*/
+  xbt_dict_t (*get_cpu_properties) (void* cpu);
+
 } s_surf_model_public_t, *surf_model_public_t;
 
 /** \brief Private data available on all models
@@ -243,11 +248,11 @@ XBT_PUBLIC_DATA(surf_cpu_model_t) surf_cpu_model;
  */
 XBT_PUBLIC(void) surf_cpu_model_init_Cas01(const char *filename);
 
-extern XBT_PUBLIC_DATA(int) surf_cpu_model_description_size;
+XBT_PUBLIC_DATA(int) surf_cpu_model_description_size;
 /** \brief The list of all available cpu model models
  *  \ingroup SURF_models
  */
-extern XBT_PUBLIC_DATA(s_surf_model_description_t) surf_cpu_model_description[];
+XBT_PUBLIC_DATA(s_surf_model_description_t) surf_cpu_model_description[];
 
 /* Network model */
 
@@ -362,11 +367,11 @@ XBT_PUBLIC(void) surf_network_model_init_SDP(const char *filename);
 
 
 
-extern XBT_PUBLIC_DATA(int) surf_network_model_description_size;
+XBT_PUBLIC_DATA(int) surf_network_model_description_size;
 /** \brief The list of all available network model models
  *  \ingroup SURF_models
  */
-extern XBT_PUBLIC_DATA(s_surf_model_description_t) surf_network_model_description[];
+XBT_PUBLIC_DATA(s_surf_model_description_t) surf_network_model_description[];
 
 /** \brief Workstation model extension public
  *  \ingroup SURF_models
@@ -383,6 +388,7 @@ typedef struct surf_workstation_model_extension_public {
   surf_action_t(*communicate) (void *workstation_src,                  /**< Execute a communication amount between two workstations */
                               void *workstation_dst, double size,
                               double max_rate);
+
   surf_action_t(*execute_parallel_task) (int workstation_nb,           /**< Execute a parallel task on several workstations */
                                         void **workstation_list,
                                         double *computation_amount,
@@ -465,11 +471,11 @@ XBT_PUBLIC(void) surf_workstation_model_init_KCCFLN05(const char *filename);
  */
 XBT_PUBLIC(void) surf_workstation_model_init_ptask_L07(const char *filename);
 
-extern XBT_PUBLIC_DATA(int) surf_workstation_model_description_size;
+XBT_PUBLIC_DATA(int) surf_workstation_model_description_size;
 /** \brief The list of all available workstation model models
  *  \ingroup SURF_models
  */
-extern XBT_PUBLIC_DATA(s_surf_model_description_t) surf_workstation_model_description[];
+XBT_PUBLIC_DATA(s_surf_model_description_t) surf_workstation_model_description[];
 
 /** \brief The network links
  *  \ingroup SURF_models
@@ -542,6 +548,31 @@ XBT_PUBLIC(double)surf_get_clock(void);
  */
 XBT_PUBLIC(void) surf_exit(void);
 
+/* Prototypes of the functions that handle the properties */
+void parse_properties(void);
+void free_string(void*);
+
+/*Add callback lists*/
+xbt_dynar_t STag_surfxml_platform_description_cb_list;
+xbt_dynar_t ETag_surfxml_platform_description_cb_list;
+xbt_dynar_t STag_surfxml_host_cb_list;
+xbt_dynar_t ETag_surfxml_host_cb_list;
+xbt_dynar_t STag_surfxml_router_cb_list;
+xbt_dynar_t ETag_surfxml_router_cb_list;
+xbt_dynar_t STag_surfxml_link_cb_list;
+xbt_dynar_t ETag_surfxml_link_cb_list;
+xbt_dynar_t STag_surfxml_route_cb_list;
+xbt_dynar_t ETag_surfxml_route_cb_list;
+xbt_dynar_t STag_surfxml_link_c_ctn_cb_list;
+xbt_dynar_t ETag_surfxml_link_c_ctn_cb_list;
+xbt_dynar_t STag_surfxml_process_cb_list;
+xbt_dynar_t ETag_surfxml_process_cb_list;
+xbt_dynar_t STag_surfxml_argument_cb_list;
+xbt_dynar_t ETag_surfxml_argument_cb_list;
+xbt_dynar_t STag_surfxml_prop_cb_list;
+xbt_dynar_t ETag_surfxml_prop_cb_list;
+
+XBT_PUBLIC(void) surfxml_add_callback(xbt_dynar_t cb_list, void_f_void_t function);
 
 SG_END_DECL()