# define XBT_EXPORT_NO_IMPORT(type) __declspec(dllexport) type
# define XBT_IMPORT_NO_EXPORT(type) type
# define XBT_PUBLIC_DATA(type) extern __declspec(dllexport) type
+# define XBT_PUBLIC_CLASS class __declspec(dllexport)
+
/* Pack everything up statically */
#elif defined(DLL_STATIC)
# define XBT_EXPORT_NO_IMPORT(type) type
# define XBT_IMPORT_NO_EXPORT(type) type
# define XBT_PUBLIC_DATA(type) extern type
+# define XBT_PUBLIC_CLASS class
+
/* Link against the DLL */
#elif (defined(_XBT_WIN32) && !defined(DLL_EXPORT) && !defined(DLL_STATIC))
# define XBT_EXPORT_NO_IMPORT(type) type
# define XBT_IMPORT_NO_EXPORT(type) __declspec(dllimport) type
# define XBT_PUBLIC_DATA(type) extern __declspec(dllimport) type
+# define XBT_PUBLIC_CLASS class __declspec(dllimport)
+
/* UNIX build */
#else
# define XBT_EXPORT_NO_IMPORT(type) type
# define XBT_IMPORT_NO_EXPORT(type) type
# define XBT_PUBLIC_DATA(type) extern type
+# define XBT_PUBLIC_CLASS class
+
#endif
#if !defined (max) && !defined(__cplusplus)
*
* @param cnst The constraint to share
*/
-void lmm_constraint_shared(lmm_constraint_t cnst);
+XBT_PUBLIC(void) lmm_constraint_shared(lmm_constraint_t cnst);
/**
* @brief Check if a constraint is shared (shared by default)
* @param cnst The constraint to share
* @return 1 if shared, 0 otherwise
*/
-int lmm_constraint_is_shared(lmm_constraint_t cnst);
+XBT_PUBLIC(int) lmm_constraint_is_shared(lmm_constraint_t cnst);
/**
* @brief Free a constraint
* @param sys The system associated to the constraint
* @param cnst The constraint to free
*/
-void lmm_constraint_free(lmm_system_t sys, lmm_constraint_t cnst);
+XBT_PUBLIC(void) lmm_constraint_free(lmm_system_t sys, lmm_constraint_t cnst);
/**
* @brief Get the usage of the constraint after the last lmm solve
* @param cnst A constraint
* @return The usage of the constraint
*/
-double lmm_constraint_get_usage(lmm_constraint_t cnst);
+XBT_PUBLIC(double) lmm_constraint_get_usage(lmm_constraint_t cnst);
/**
* @brief Create a new Linear MaxMin variable
* @param var A variable
* @param value The value to add to the coefficient associated to the variable in the constraint
*/
-void lmm_expand_add(lmm_system_t sys, lmm_constraint_t cnst,
+XBT_PUBLIC(void) lmm_expand_add(lmm_system_t sys, lmm_constraint_t cnst,
lmm_variable_t var, double value);
/**
* @param num The rank of constraint we want to get
* @return The numth constraint
*/
-lmm_constraint_t lmm_get_cnst_from_var(lmm_system_t sys,
+XBT_PUBLIC(lmm_constraint_t) lmm_get_cnst_from_var(lmm_system_t sys,
lmm_variable_t var, int num);
/**
* @param num The rank of constraint we want to get
* @return The numth constraint
*/
-double lmm_get_cnst_weight_from_var(lmm_system_t sys, lmm_variable_t var,
+XBT_PUBLIC(double) lmm_get_cnst_weight_from_var(lmm_system_t sys, lmm_variable_t var,
int num);
/**
* @param var A variable
* @return The number of constraint associated to the variable
*/
-int lmm_get_number_of_cnst_from_var(lmm_system_t sys, lmm_variable_t var);
+XBT_PUBLIC(int) lmm_get_number_of_cnst_from_var(lmm_system_t sys, lmm_variable_t var);
/**
* @brief Get a var associated to a constraint
* @param elem A element of constraint of the constraint or NULL
* @return A variable associated to a constraint
*/
-lmm_variable_t lmm_get_var_from_cnst(lmm_system_t sys,
+XBT_PUBLIC(lmm_variable_t) lmm_get_var_from_cnst(lmm_system_t sys,
lmm_constraint_t cnst,
lmm_element_t * elem);
* @param sys A system
* @return The first active constraint
*/
-lmm_constraint_t lmm_get_first_active_constraint(lmm_system_t sys);
+XBT_PUBLIC(lmm_constraint_t) lmm_get_first_active_constraint(lmm_system_t sys);
/**
* @brief Get the next active constraint of a constraint in a system
*
* @return The next active constraint
*/
-lmm_constraint_t lmm_get_next_active_constraint(lmm_system_t sys,
+XBT_PUBLIC(lmm_constraint_t) lmm_get_next_active_constraint(lmm_system_t sys,
lmm_constraint_t cnst);
#ifdef HAVE_LATENCY_BOUND_TRACKING
* @param cnst A constraint
* @return The data associated to the constraint
*/
-void *lmm_constraint_id(lmm_constraint_t cnst);
+XBT_PUBLIC(void *) lmm_constraint_id(lmm_constraint_t cnst);
/**
* @brief Get the data associated to a variable
* @param var A variable
* @return The data associated to the variable
*/
-void *lmm_variable_id(lmm_variable_t var);
+XBT_PUBLIC(void *) lmm_variable_id(lmm_variable_t var);
/**
* @brief Update the value of element linking the constraint and the variable
* @param var A variable
* @param value The new value
*/
-void lmm_update(lmm_system_t sys, lmm_constraint_t cnst,
+XBT_PUBLIC(void) lmm_update(lmm_system_t sys, lmm_constraint_t cnst,
lmm_variable_t var, double value);
/**
* @param var A constraint
* @param bound The new bound
*/
-void lmm_update_variable_bound(lmm_system_t sys, lmm_variable_t var,
+XBT_PUBLIC(void) lmm_update_variable_bound(lmm_system_t sys, lmm_variable_t var,
double bound);
/**
* @param var A variable
* @return The weight of the variable
*/
-double lmm_get_variable_weight(lmm_variable_t var);
+XBT_PUBLIC(double) lmm_get_variable_weight(lmm_variable_t var);
/**
* @brief Update a constraint bound
* @param cnst A constraint
* @return [description]
*/
-int lmm_constraint_used(lmm_system_t sys, lmm_constraint_t cnst);
+XBT_PUBLIC(int) lmm_constraint_used(lmm_system_t sys, lmm_constraint_t cnst);
/**
* @brief Solve the lmm system
#ifdef __cplusplus
extern "C" {
#endif
-void SIMIX_clean(void);
+XBT_PUBLIC(void) SIMIX_clean(void);
#ifdef __cplusplus
}
#endif
/*************
* Callbacks *
*************/
-CpuPtr getActionCpu(CpuActionPtr action);
+XBT_PUBLIC(CpuPtr) getActionCpu(CpuActionPtr action);
/** @ingroup SURF_callbacks
* @brief Callbacks handler which emit the callbacks after Cpu creation *
* @details Callback functions have the following signature: `void(CpuPtr)`
*/
-extern surf_callback(void, CpuPtr) cpuCreatedCallbacks;
+XBT_PUBLIC_DATA( surf_callback(void, CpuPtr)) cpuCreatedCallbacks;
/** @ingroup SURF_callbacks
* @brief Callbacks handler which emit the callbacks after Cpu destruction *
* @details Callback functions have the following signature: `void(CpuPtr)`
*/
-extern surf_callback(void, CpuPtr) cpuDestructedCallbacks;
+XBT_PUBLIC_DATA( surf_callback(void, CpuPtr)) cpuDestructedCallbacks;
/** @ingroup SURF_callbacks
* @brief Callbacks handler which emit the callbacks after Cpu State changed *
* @details Callback functions have the following signature: `void(CpuActionPtr action, e_surf_resource_state_t old, e_surf_resource_state_t current)`
*/
-extern surf_callback(void, CpuPtr, e_surf_resource_state_t, e_surf_resource_state_t) cpuStateChangedCallbacks;
+XBT_PUBLIC_DATA( surf_callback(void, CpuPtr, e_surf_resource_state_t, e_surf_resource_state_t)) cpuStateChangedCallbacks;
/** @ingroup SURF_callbacks
* @brief Callbacks handler which emit the callbacks after CpuAction State changed *
* @details Callback functions have the following signature: `void(CpuActionPtr action, e_surf_action_state_t old, e_surf_action_state_t current)`
*/
-extern surf_callback(void, CpuActionPtr, e_surf_action_state_t, e_surf_action_state_t) cpuActionStateChangedCallbacks;
+XBT_PUBLIC_DATA( surf_callback(void, CpuActionPtr, e_surf_action_state_t, e_surf_action_state_t)) cpuActionStateChangedCallbacks;
/*********
* Model *
* @brief Callbacks handler which emit the callbacks after NetworkLink creation
* @details Callback functions have the following signature: `void(NetworkLinkPtr)`
*/
-extern surf_callback(void, NetworkLinkPtr) networkLinkCreatedCallbacks;
+XBT_PUBLIC_DATA( surf_callback(void, NetworkLinkPtr)) networkLinkCreatedCallbacks;
/** @ingroup SURF_callbacks
* @brief Callbacks handler which emit the callbacks after NetworkLink destruction
* @details Callback functions have the following signature: `void(NetworkLinkPtr)`
*/
-extern surf_callback(void, NetworkLinkPtr) networkLinkDestructedCallbacks;
+XBT_PUBLIC_DATA( surf_callback(void, NetworkLinkPtr)) networkLinkDestructedCallbacks;
/** @ingroup SURF_callbacks
* @brief Callbacks handler which emit the callbacks after NetworkLink State changed
* @details Callback functions have the following signature: `void(NetworkLinkActionPtr action, e_surf_resource_state_t old, e_surf_resource_state_t current)`
*/
-extern surf_callback(void, NetworkLinkPtr, e_surf_resource_state_t, e_surf_resource_state_t) networkLinkStateChangedCallbacks;
+XBT_PUBLIC_DATA( surf_callback(void, NetworkLinkPtr, e_surf_resource_state_t, e_surf_resource_state_t)) networkLinkStateChangedCallbacks;
/** @ingroup SURF_callbacks
* @brief Callbacks handler which emit the callbacks after NetworkAction State changed
* @details Callback functions have the following signature: `void(NetworkActionPtr action, e_surf_action_state_t old, e_surf_action_state_t current)`
*/
-extern surf_callback(void, NetworkActionPtr, e_surf_action_state_t, e_surf_action_state_t) networkActionStateChangedCallbacks;
+XBT_PUBLIC_DATA( surf_callback(void, NetworkActionPtr, e_surf_action_state_t, e_surf_action_state_t)) networkActionStateChangedCallbacks;
/** @ingroup SURF_callbacks
* @brief Callbacks handler which emit the callbacks after communication created
* @details Callback functions have the following signature: `void(NetworkActionPtr action, RoutingEdgePtr src, RoutingEdgePtr dst, double size, double rate)`
*/
-extern surf_callback(void, NetworkActionPtr, RoutingEdgePtr src, RoutingEdgePtr dst, double size, double rate) networkCommunicateCallbacks;
+XBT_PUBLIC_DATA( surf_callback(void, NetworkActionPtr, RoutingEdgePtr src, RoutingEdgePtr dst, double size, double rate)) networkCommunicateCallbacks;
/*********
* Tools *
* @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
* @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
* @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 {
+XBT_PUBLIC_CLASS Action : public actionHook, public actionLmmHook {
private:
/**
* @brief Common initializations for the constructors
/** @ingroup SURF_routing_interface
* @brief The class representing a whole routing platform
*/
-class RoutingPlatf {
+XBT_PUBLIC_CLASS RoutingPlatf {
public:
~RoutingPlatf();
AsPtr p_root;