/* * Copyright © 2007 Pippijn van Steenhoven / The Ermyth Team * Rights to this code are as documented in doc/pod/gplicense.pod. * * Various string structures and functions. * * $Id: string.h,v 1.3 2007/08/30 19:56:20 pippijn Exp $ */ #ifndef ERMYTH_STRING_H #define ERMYTH_STRING_H void assign (char *dst, char const *src, size_t maxlen); template inline void assign (char (&dst)[N], char const *src) { assign ((char *)&dst, src, N); } /* 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 (); } friend std::ostream &operator << (std::ostream &os, ststr const &rhs) { os << rhs.c_str (); return os; } private: char const * const m_rep; }; #endif