summaryrefslogtreecommitdiff
path: root/Bus/Ivy/Regexp.h
blob: b41d88e133300b6f3ca876fc7d3b3c2fc79ed9fe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#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;

};