static int factor_cmp(const void *pa, const void *pb)
{
- return (((s_smpi_factor_t*)pa)->factor > ((s_smpi_factor_t*)pb)->factor);
+ return (((s_smpi_factor_t*)pa)->factor > ((s_smpi_factor_t*)pb)->factor) ? 1 :
+ (((s_smpi_factor_t*)pa)->factor < ((s_smpi_factor_t*)pb)->factor) ? -1 : 0;
}
xbt_cfg_setdefault_double(_sg_cfg_set, "network/weight_S", 8775);
}
-void NetworkSmpiModel::gapAppend(double size, const NetworkCm02LinkLmmPtr link, NetworkCm02ActionLmmPtr action)
+NetworkSmpiModel::NetworkSmpiModel()
+ : NetworkCm02Model() {
+ m_haveGap=true;
+}
+
+NetworkSmpiModel::~NetworkSmpiModel(){
+ if (gap_lookup) {
+ xbt_dict_free(&gap_lookup);
+ }
+ if (smpi_bw_factor) {
+ xbt_dynar_free(&smpi_bw_factor);
+ smpi_bw_factor = NULL;
+ }
+ if (smpi_lat_factor) {
+ xbt_dynar_free(&smpi_lat_factor);
+ smpi_lat_factor = NULL;
+ }
+}
+
+void NetworkSmpiModel::gapAppend(double size, const NetworkLinkLmmPtr link, NetworkActionLmmPtr action)
{
const char *src = link->m_name;
xbt_fifo_t fifo;