+double surf_parse_get_time(const char *string) {
+ size_t len = strlen(string);
+ char* tmp = xbt_malloc(sizeof(char) * (len + 1));
+ strcpy(tmp, string);
+ if (!strcmp(tmp + len - 2, "ps")) {
+ tmp[len-2] = 0;
+ return surf_parse_get_double(tmp) * 1E-12;
+ }
+ if (!strcmp(tmp + len - 2, "ns")) {
+ tmp[len-2] = 0;
+ return surf_parse_get_double(tmp) * 1E-9;
+ }
+ if (!strcmp(tmp + len - 2, "us")) {
+ tmp[len-2] = 0;
+ return surf_parse_get_double(tmp) * 1E-6;
+ }
+ if (!strcmp(tmp + len - 2, "ms")) {
+ tmp[len-2] = 0;
+ return surf_parse_get_double(tmp) * 1E-3;
+ }
+ if (!strcmp(tmp + len - 1, "s")) {
+ tmp[len-1] = 0;
+ return surf_parse_get_double(tmp);
+ }
+ if (!strcmp(tmp + len - 1, "m")) {
+ tmp[len-1] = 0;
+ return surf_parse_get_double(tmp) * 60;
+ }
+ if (!strcmp(tmp + len - 1, "h")) {
+ tmp[len-1] = 0;
+ return surf_parse_get_double(tmp) * 3600;
+ }
+ if (!strcmp(tmp + len - 1, "d")) {
+ tmp[len-1] = 0;
+ return surf_parse_get_double(tmp) * 86400;
+ }
+ if (!strcmp(tmp + len - 1, "w")) {
+ tmp[len-1] = 0;
+ return surf_parse_get_double(tmp) * 604800;
+ }
+ return surf_parse_get_double(tmp);
+}
+
+double surf_parse_get_bandwidth(const char *string) {
+ size_t len = strlen(string);
+ char* tmp = xbt_malloc(sizeof(char) * (len + 1));
+ strcpy(tmp, string);
+ if (!strcmp(tmp + len - 4, "KBps")) {
+ tmp[len-4] = 0;
+ return surf_parse_get_double(tmp) * 1E3;
+ }
+ if (!strcmp(tmp + len - 4, "MBps")) {
+ tmp[len-4] = 0;
+ return surf_parse_get_double(tmp) * 1E6;
+ }
+ if (!strcmp(tmp + len - 4, "GBps")) {
+ tmp[len-4] = 0;
+ return surf_parse_get_double(tmp) * 1E9;
+ }
+ if (!strcmp(tmp + len - 4, "TBps")) {
+ tmp[len-4] = 0;
+ return surf_parse_get_double(tmp) * 1E12;
+ }
+ if (!strcmp(tmp + len - 3, "Bps")) {
+ tmp[len-3] = 0;
+ return surf_parse_get_double(tmp);
+ }
+ if (!strcmp(tmp + len - 4, "kbps")) {
+ tmp[len-4] = 0;
+ return surf_parse_get_double(tmp) * 0.125 * 1E3;
+ }
+ if (!strcmp(tmp + len - 4, "mbps")) {
+ tmp[len-4] = 0;
+ return surf_parse_get_double(tmp) * 0.125 * 1E6;
+ }
+ if (!strcmp(tmp + len - 4, "gbps")) {
+ tmp[len-4] = 0;
+ return surf_parse_get_double(tmp) * 0.125 * 1E9;
+ }
+ if (!strcmp(tmp + len - 4, "tbps")) {
+ tmp[len-4] = 0;
+ return surf_parse_get_double(tmp) * 0.125 * 1E12;
+ }
+ if (!strcmp(tmp + len - 3, "bps")) {
+ tmp[len-3] = 0;
+ return surf_parse_get_double(tmp) * 0.125;
+ }
+ return surf_parse_get_double(tmp);
+}
+
+double surf_parse_get_power(const char *string) {
+ size_t len = strlen(string);
+ char* tmp = xbt_malloc(sizeof(char) * (len + 1));
+ strcpy(tmp, string);
+ if (!strcmp(tmp + len - 9, "kiloflops")) {
+ tmp[len-9] = 0;
+ return surf_parse_get_double(tmp) * 1E3;
+ }
+ if (!strcmp(tmp + len - 9, "megaflops")) {
+ tmp[len-9] = 0;
+ return surf_parse_get_double(tmp) * 1E6;
+ }
+ if (!strcmp(tmp + len - 9, "gigaflops")) {
+ tmp[len-9] = 0;
+ return surf_parse_get_double(tmp) * 1E9;
+ }
+ if (!strcmp(tmp + len - 9, "teraflops")) {
+ tmp[len-9] = 0;
+ return surf_parse_get_double(tmp) * 1E12;
+ }
+ if (!strcmp(tmp + len - 9, "petaflops")) {
+ tmp[len-9] = 0;
+ return surf_parse_get_double(tmp) * 1E15;
+ }
+ if (!strcmp(tmp + len - 9, "exaflops")) {
+ tmp[len-9] = 0;
+ return surf_parse_get_double(tmp) * 1E18;
+ }
+ if (!strcmp(tmp + len - 9, "zettaflops")) {
+ tmp[len-9] = 0;
+ return surf_parse_get_double(tmp) * 1E21;
+ }
+ if (!strcmp(tmp + len - 9, "yottaflops")) {
+ tmp[len-9] = 0;
+ return surf_parse_get_double(tmp) * 1E24;
+ }
+ if (!strcmp(tmp + len - 5, "flops")) {
+ tmp[len-5] = 0;
+ return surf_parse_get_double(tmp);
+ }
+ if (!strcmp(tmp + len - 2, "kf")) {
+ tmp[len-2] = 0;
+ return surf_parse_get_double(tmp) * 1E3;
+ }
+ if (!strcmp(tmp + len - 2, "mf")) {
+ tmp[len-2] = 0;
+ return surf_parse_get_double(tmp) * 1E6;
+ }
+ if (!strcmp(tmp + len - 2, "gf")) {
+ tmp[len-2] = 0;
+ return surf_parse_get_double(tmp) * 1E9;
+ }
+ if (!strcmp(tmp + len - 2, "tf")) {
+ tmp[len-2] = 0;
+ return surf_parse_get_double(tmp) * 1E12;
+ }
+ if (!strcmp(tmp + len - 2, "pf")) {
+ tmp[len-2] = 0;
+ return surf_parse_get_double(tmp) * 1E15;
+ }
+ if (!strcmp(tmp + len - 2, "ef")) {
+ tmp[len-2] = 0;
+ return surf_parse_get_double(tmp) * 1E18;
+ }
+ if (!strcmp(tmp + len - 2, "zf")) {
+ tmp[len-2] = 0;
+ return surf_parse_get_double(tmp) * 1E21;
+ }
+ if (!strcmp(tmp + len - 2, "yf")) {
+ tmp[len-2] = 0;
+ return surf_parse_get_double(tmp) * 1E24;
+ }
+ if (!strcmp(tmp + len - 1, "f")) {
+ tmp[len-1] = 0;
+ return surf_parse_get_double(tmp);
+ }
+ return surf_parse_get_double(tmp);
+}