#include "ptl.h" Ptl_String *Ptl_initStringL(wchar_t *src, size_t length) { Ptl_String *dest = Ptl_alloc(sizeof(Ptl_String)+length+1); dest->length = length; dest->alloc = length+1; memcpy(dest->data, src, length); dest->alloc[length+1] = '\0'; } Ptl_String *Ptl_initString(wchar_t *str) { Ptl_String *dest = Ptl_alloc(sizeof(Ptl_String)+length+1); int i; dest->length = 0; dest->alloc = 1; for (; *str != '\0'; str++) { dest->alloc++; dest->data[dest->length++] = *str; } dest->data[dest->length] = '\0'; } void Ptl_copyString(Ptl_String *dest, Ptl_String *src) { memmove(dest->data, src->data, src->length); dest->data[src->length] = '\0'; } Ptl_String *Ptl_dupString(Ptl_String *src) { Ptl_String *dest = Ptl_alloc(sizeof(Ptl_String)+src->length+1); dest->length = src->length; dest->alloc = src->length+1; Ptl_copyString(dest, src); return dest; }