diff options
Diffstat (limited to 'src/str.cpp')
-rw-r--r-- | src/str.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/str.cpp b/src/str.cpp new file mode 100644 index 0000000..a0792c8 --- /dev/null +++ b/src/str.cpp @@ -0,0 +1,32 @@ +#include "str.hpp" + +#include "utils.hpp" +#include <stdlib.h> +#include <string.h> + + +XiftString::XiftString(char *&str): str(str) +{ + str = (char *)malloc(1); + *str = 0; + len = 0; + size = 1; +} + +void XiftString::Put(char c) +{ + xift_str_add(str, len, size, c); +} + +void XiftString::Put(const char *addon) +{ + int alen = strlen(addon); + if (len + alen >= size) { + size = len + alen + 1; + str = (char *)realloc(str, size); + } + if (str) { + memcpy(str + len, addon, alen + 1); + len += alen; + } +} |