
#ifndef AWA_STRING_H
#define AWA_STRING_H

class AwaString
{
public:
	AwaString();
	AwaString(const AwaString& rhs);
	AwaString(const char* c);

private:
	AwaString(char* data, unsigned int size);

public:
	~AwaString();

	AwaString& operator = (const AwaString& rhs);
	AwaString& operator = (const char* c);

	AwaString& operator += (const AwaString& rhs);
	AwaString& operator += (const char* c);
	AwaString operator + (const AwaString& rhs) const;
	AwaString operator + (const char* c) const;
	AwaString& operator -= (const char* c);
	AwaString operator - (const char* c) const;
	bool operator == (const char* c) const;
	bool operator != (const char* c) const;
	char& operator [] (const unsigned int offset);

	AwaString suppressFromEnd(const AwaString& s) const;
	AwaString& upperCase();

	unsigned int size() const;

	bool startWith(const char* c) const;
	bool endWith(const char* c) const;

	operator char*() const;

	class AwaStringException {};

private:
	char* _data;
	unsigned int _size;
};

#endif