#pragma once #ifdef WIN32 #ifdef IVY_EXPORTS class _declspec(dllexport) string; #else #pragma comment(lib,"Ivy.LIB" ) class _declspec(dllimport) string; #endif #endif class string { public: string(); string( const char * s); int length(); bool empty(); void erase(int start=0, int len = -1); void append( const char *s , int len ); void insert(int index, const char * s); string substr( int start, int len = -1 ); int find_first_of( const char* s ); int rfind( char c ); operator +=(string s); string operator +(string s); // Nondestructive typecast operator operator const char*() const; const char *c_str() const; // remove this ugly thing }; template class Iterator { public: T & operator !=(Iterator i); T & operator ++(); operator const T*() const; T & second; }; template class list { public: void clear(); bool empty(); T front(); pop_front(); void push_back( T data ); typedef Iterator iterator; iterator begin(); iterator end(); void remove( T data ); }; template class vector { public: void clear(); int size(); // Nondestructive typecast operator operator const T*() const; // Accesses indexed component of vector T & operator [](int i); // Accesses indexed component of vector const T & operator [](int i) const; void push_back( T data ); void remove( T data ); }; template class map { public: void clear(); int size(); bool empty(); find(I i ); typedef Iterator iterator; iterator begin(); iterator end(); void erase( I i ); // Accesses indexed component of vector const T & operator [](I i) const; };