Newer
Older

Clemens Paumgarten
committed
#include <string.h>
char *mcc_tac_new_temporary_string(struct mcc_tac *tac) {
size_t num_digits = (size_t) mcc_get_number_of_digits(tac -> temporary_count) + 2 + 1;
// +2 for character t and for \0
char *t = malloc(num_digits + 2);
if (t == NULL) {
return NULL;
}
sprintf(t, "t%d", tac -> temporary_count);
tac -> temporary_count++;
tac -> last_temporary = t;
return t;
}
char *mcc_tac_new_label_string(struct mcc_tac *tac) {
size_t num_digits = (size_t) mcc_get_number_of_digits(tac -> label_count);
// +2 for character t and for \0
char *t = malloc(num_digits + 2);
if (t == NULL) {
return NULL;
}
sprintf(t, "L%d", tac -> label_count);
tac -> label_count++;
tac -> last_label = t;
return t;
}

Clemens Paumgarten
committed
char *concat_strs(char *prefix, char *infix, char *suffix)
{
size_t p_len = strlen(prefix);
size_t i_len = strlen(infix);
size_t s_len = strlen(suffix);
char *str = malloc(sizeof(char) * (p_len + i_len + s_len + 1));
strcpy(str, prefix);
strcpy(str + p_len, infix);
strcpy(str + p_len + i_len, suffix);
str[p_len + i_len + s_len] = '\0';
return str;
}

Clemens Paumgarten
committed
char *mcc_tac_new_return_function_name(char* function_name) {