ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/repos/FeepingCreaturism/Matcher.cpp
Revision: 203
Committed: 2004-09-01T02:10:19-07:00 (20 years, 9 months ago) by Douglas Thrift
File size: 1080 byte(s)
Log Message:
What now?

File Contents

# User Rev Content
1 Douglas Thrift 191 // Feeping Creaturism
2     //
3     // Douglas Thrift
4     //
5     // $Id$
6    
7     #include "Matcher.hpp"
8    
9 Douglas Thrift 203 bool Matcher::match(const ext::String& stuff)
10 Douglas Thrift 191 {
11     substrings.clear();
12    
13     if (expression != NULL)
14     {
15     int length;
16    
17     pcre_fullinfo(expression, NULL, PCRE_INFO_CAPTURECOUNT, &length);
18    
19     int* substrings(new int[(++length *= 3)]);
20     int count(pcre_exec(expression, NULL, stuff.c_str(), stuff.length(), 0,
21     0, substrings, length));
22    
23     if (count > 0)
24     {
25     char* substring(new char[stuff.length() + 1]);
26    
27     for (int index(0); index < count; ++index)
28     {
29     pcre_copy_substring(stuff.c_str(), substrings, count, index,
30     substring, stuff.length() + 1);
31    
32     this->substrings.push_back(substring);
33     }
34    
35     delete [] substring;
36     delete [] substrings;
37    
38     return true;
39     }
40    
41     delete [] substrings;
42     }
43    
44     return false;
45     }
46    
47 Douglas Thrift 203 Matcher& Matcher::operator()(const ext::String& expression)
48 Douglas Thrift 191 {
49     substrings.clear();
50    
51     if (this->expression != NULL) pcre_free(this->expression);
52    
53     const char* error;
54     int offset;
55    
56     this->expression = pcre_compile(expression.c_str(), 0, &error, &offset,
57     NULL);
58    
59     return *this;
60     }

Properties

Name Value
svn:eol-style native
svn:keywords Id