aboutsummaryrefslogtreecommitdiff
path: root/runtime/src/shed/strings.c
blob: 8ef25433ed1306635b1b6f2745731e9f222df3ae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "./gc.h"
#include "./strings.h"

ShedString shed__runtime__string_alloc(ShedStringLength length) {
    return shed__runtime__gc_alloc(sizeof(struct ShedString) + length, 0);
}

ShedString shed__runtime__string_add(ShedString left, ShedString right) {
    ShedStringLength length = left->length + right->length;
    ShedString string = shed__runtime__string_alloc(length);
    string->length = length;

    for(ShedStringLength i = 0; i < left->length; i++) {
        string->data[i] = left->data[i];
    }

    for(ShedStringLength i = 0; i < right->length; i++) {
        string->data[left->length + i] = right->data[i];
    }

    return string;
}