$#include "Str.h" class String { String(); String(const String& str); String(const char* str); String(const char* str, unsigned length); ~String(); String operator + (const String& rhs) const; String operator + (const char* rhs) const; bool operator == (const String& rhs) const; bool operator == (const char* rhs) const; tolua_outside bool StringEq @ Eq(const String& rhs) const; tolua_outside bool StringEq @ Eq(const char*& rhs) const; void Replace(const String& replaceThis, const String& replaceWith); void Replace(const char* replaceThis, const char* replaceWith); void Replace(unsigned pos, unsigned length, const String& replaceWith); void Replace(unsigned pos, unsigned length, const char* replaceWith); String Replaced(const String& replaceThis, const String& replaceWith) const; String Replaced(const char* replaceThis, const char* replaceWith) const; String& Append(const String& str); String& Append(const char* str); String& Append(const char* str, unsigned length); void Insert(unsigned pos, const String& str); void Insert(unsigned pos, char c); void Erase(unsigned pos, unsigned length = 1); void Resize(unsigned newLength); void Reserve(unsigned newCapacity); void Compact(); void Clear(); String Substring(unsigned pos) const; String Substring(unsigned pos, unsigned length) const; String Trimmed() const; String ToUpper() const; String ToLower() const; unsigned Find(const String& str, unsigned startPos = 0) const; unsigned Find(const char* str, unsigned startPos = 0) const; unsigned FindLast(const String& str, unsigned startPos = String::NPOS) const; unsigned FindLast(const char* str, unsigned startPos = String::NPOS) const; bool StartsWith(const String& str) const; bool StartsWith(const char* str) const; bool EndsWith(const String& str) const; bool EndsWith(const char* str) const; const char* CString() const; unsigned Length() const; unsigned Capacity() const; bool Empty() const; int Compare(const String& str, bool caseSensitive = true) const; int Compare(const char* str, bool caseSensitive = true) const; bool Contains(const String& str) const; unsigned ToHash() const; static int Compare(const char* str1, const char* str2, bool caseSensitive); static const unsigned NPOS; static const String EMPTY; tolua_readonly tolua_property__no_prefix unsigned length; tolua_readonly tolua_property__no_prefix unsigned capacity; tolua_readonly tolua_property__no_prefix bool empty; }; ${ static bool StringEq(const String* lhs, const char* rhs) { return (*lhs) == rhs; } static bool StringEq(const String* lhs, const String& rhs) { return (*lhs) == rhs; } $}