/** * string.h: Various string structures and functions. * * Copyright © 2007 Pippijn van Steenhoven / The Ermyth Team * Rights to this code are as documented in doc/pod/gplicense.pod. * * $Id: string.h,v 1.6 2007/09/22 14:27:26 pippijn dead $ */ #ifndef ERMYTH_STRING_H #define ERMYTH_STRING_H #include #include /* static string */ struct ststr { ststr (char const * const initstr) : m_rep (initstr) { } ststr (ststr &initstr) : m_rep (initstr) { } char const *c_str () const { return m_rep; } operator char const * () const { return c_str (); } private: char const * const m_rep; }; // dynamic string struct dynstr { dynstr (size_t initlength = 32) : m_rep (new char[initlength]), pos (0), length (initlength) { } ~dynstr () { delete[] m_rep; } void clear () { m_rep[0] = '\0'; pos = 0; } char const *c_str () const { return m_rep; } operator char const * () const { return c_str (); } size_t size () { return length; } dynstr &operator = (char const *rhs) { clear (); add (rhs, strlen (rhs)); return *this; } int add (char const c); int add (char const * const src, size_t size); int add (char const * const src) { return add (src, strlen (src)); } private: char *m_rep; size_t pos; size_t length; }; #endif