#pragma once class regexp; class Regexp { public: enum { NSUBEXP = 40 }; Regexp(); Regexp( const char * exp, bool iCase = 0 ); Regexp( const Regexp &r ); ~Regexp(); const Regexp & operator=( const Regexp & r ); bool Match( const char * s ); int SubStrings() const; const ivy::string operator[]( size_t i ) const; size_t SubStart( size_t i ) const; size_t SubLength( size_t i ) const; ivy::string GetReplaceString( const char * source ) const; ivy::string GetErrorString() const; bool CompiledOK() const; #if defined( _RE_DEBUG ) void Dump(); #endif private: const char * str; /* used to return substring offsets only */ mutable ivy::string m_szError; regexp * rc; void ClearErrorString() const; size_t safeIndex( size_t i ) const; };