summaryrefslogtreecommitdiff
path: root/src/script.cpp
blob: cf87bc22d8325a75a070e3bca5bbc9c3907c13a4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include "script.hpp"

#include <stdlib.h>
#include <string.h>


/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 * Texo String Exporter
 */
TexoString::TexoString(char *&str): str(str)
{
    str  = (char *)malloc(1);
    *str = 0;
    len  = 0;
    size = 1;
}


bool TexoString::Put(char c)
{
    if (len + 1 == size) {
        size *= 2;
        str  = (char *)realloc(str, size);
    }
    if (!str) {
        return false;
    }
    str[len] = c;
    ++len;
    str[len] = 0;
    return true;
}

bool TexoString::Put(const char *addon)
{
    int alen = strlen(addon);
    if (len + alen >= size) {
        size = len + alen + 1;
        str  = (char *)realloc(str, size);
    }
    if (!str) {
        return false;
    }
    memcpy(str + len, addon, alen + 1);
    len += alen;
    return true;
}