331 |
|
|
332 |
|
|
333 |
#include <string> |
#include <string> |
|
#include <pcrecpparg.h> // defines the Arg class |
|
|
// These aren't technically needed here, but we include them |
|
|
// anyway so folks who include pcrecpp.h don't have to include |
|
|
// all these other header files as well. |
|
334 |
#include <pcre.h> |
#include <pcre.h> |
335 |
|
#include <pcrecpparg.h> // defines the Arg class |
336 |
|
// This isn't technically needed here, but we include it |
337 |
|
// anyway so folks who include pcrecpp.h don't have to. |
338 |
#include <pcre_stringpiece.h> |
#include <pcre_stringpiece.h> |
339 |
|
|
340 |
namespace pcrecpp { |
namespace pcrecpp { |
347 |
(all_options_ & o) == o |
(all_options_ & o) == o |
348 |
|
|
349 |
// We convert user-passed pointers into special Arg objects |
// We convert user-passed pointers into special Arg objects |
350 |
extern Arg no_arg; |
PCRECPP_EXP_DECL Arg no_arg; |
351 |
|
|
352 |
/***** Compiling regular expressions: the RE class *****/ |
/***** Compiling regular expressions: the RE class *****/ |
353 |
|
|
355 |
// along with other options we put on top of pcre. |
// along with other options we put on top of pcre. |
356 |
// Only 9 modifiers, plus match_limit and match_limit_recursion, |
// Only 9 modifiers, plus match_limit and match_limit_recursion, |
357 |
// are supported now. |
// are supported now. |
358 |
class RE_Options { |
class PCRECPP_EXP_DEFN RE_Options { |
359 |
public: |
public: |
360 |
// constructor |
// constructor |
361 |
RE_Options() : match_limit_(0), match_limit_recursion_(0), all_options_(0) {} |
RE_Options() : match_limit_(0), match_limit_recursion_(0), all_options_(0) {} |
487 |
// Interface for regular expression matching. Also corresponds to a |
// Interface for regular expression matching. Also corresponds to a |
488 |
// pre-compiled regular expression. An "RE" object is safe for |
// pre-compiled regular expression. An "RE" object is safe for |
489 |
// concurrent use by multiple threads. |
// concurrent use by multiple threads. |
490 |
class RE { |
class PCRECPP_EXP_DEFN RE { |
491 |
public: |
public: |
492 |
// We provide implicit conversions from strings so that users can |
// We provide implicit conversions from strings so that users can |
493 |
// pass in a string or a "const char*" wherever an "RE" is expected. |
// pass in a string or a "const char*" wherever an "RE" is expected. |
|
RE(const char* pat) { Init(pat, NULL); } |
|
|
RE(const char *pat, const RE_Options& option) { Init(pat, &option); } |
|
494 |
RE(const string& pat) { Init(pat, NULL); } |
RE(const string& pat) { Init(pat, NULL); } |
495 |
RE(const string& pat, const RE_Options& option) { Init(pat, &option); } |
RE(const string& pat, const RE_Options& option) { Init(pat, &option); } |
496 |
|
RE(const char* pat) { Init(pat, NULL); } |
497 |
|
RE(const char* pat, const RE_Options& option) { Init(pat, &option); } |
498 |
|
RE(const unsigned char* pat) { |
499 |
|
Init(reinterpret_cast<const char*>(pat), NULL); |
500 |
|
} |
501 |
|
RE(const unsigned char* pat, const RE_Options& option) { |
502 |
|
Init(reinterpret_cast<const char*>(pat), &option); |
503 |
|
} |
504 |
|
|
505 |
// Copy constructor & assignment - note that these are expensive |
// Copy constructor & assignment - note that these are expensive |
506 |
// because they recompile the expression. |
// because they recompile the expression. |