OWLNext    7.0
Borland's Object Windows Library for the modern age
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
regexp.h
Go to the documentation of this file.
1/*------------------------------------------------------------------------*/
2/* */
3/* REGEXP.H */
4/* */
5/*------------------------------------------------------------------------*/
6
7/*
8 * C/C++ Run Time Library - Version 7.0
9 *
10 * Copyright (c) 1987, 1996 by Borland International
11 * All Rights Reserved.
12 *
13 */
14
15
16#ifndef __cplusplus
17#error Must use C++ for REGEXP.H
18#endif
19
20#ifndef __REGEXP_H
21#define __REGEXP_H
22
23#include <owl/defs.h>
24#if defined(BI_HAS_PRAGMA_ONCE)
25# pragma once
26#endif
27
28namespace owl {
29
30#include <owl/preclass.h>
31
32
33/// \class TRegexp
34//
35/// This class represents regular expressions. TRegexp is a support class used by
36/// the string class for string searches.
37/// Regular expressions use these special characters:
38/// \code
39/// . [ ] - ^ * ? + $
40/// \endcode
41///
42/// General Rules
43///
44/// Characters other than the special characters match themselves. For example
45/// "yardbird" matches "yardbird".
46/// A backslash (\\‍) followed by a special character, matches the special character
47/// itself. For example "Pardon\\?" matches "Pardon?".
48/// The following escape codes can be used to match control characters:
49/// \code
50/// \b backspace
51/// \e Esc
52/// \f formfeed
53/// \n newline
54/// \r carriage return
55/// \t tab
56/// \xddd the literal hex number 0xddd
57/// \^x where x matches some control-code (for example \^c, \^c)
58/// \endcode
59///
60/// One-Character Regular Expressions
61/// - The . special character matches any single character except a newline character.
62/// For example ".ive" would match "jive" or "five".
63/// - The [ and ] special characters are used to denote one-character regular
64/// expressions that will match any of the characters within the brackets. For
65/// example, "[aeiou]" would match either "a", "e", "i", "o", or "u".
66/// - The - special character is used within the [ ] special characters to denote a
67/// range of characters to match. For example, "[ a-z ]" would match on any
68/// lowercase alphabetic character between a and z.
69/// - The ^ special character is used to specify search for any character but those
70/// specified. For example, "[ ^g-v ]" would match on any lowercase alphabetic
71/// character NOT between g and v.
72///
73/// Multiple-Character Regular Expressions
74/// - The * special character following a one-character regular expression matches
75/// zero or more occurrences of that regular expression. For example, "[ a-z ]*"
76/// matches zero or more occurrences of lowercase alphabetic characters.
77/// - The + special character following a one-character regular expression matches one
78/// or more occurrences of that regular expression. For example, "[ 0-9 ]+" matches
79/// one or more occurrences of lowercase alphabetic characters.
80/// - The ? special character specifies that the following character is optional. For
81/// example "xy?z" matches on "xy" or "xyz".
82///
83/// Regular expressions can be concatentated. For example, "[ A-Z ][ a-z ]*" matches
84/// capitalized words.
85///
86/// Matching at the Beginning and End of a Line
87/// If the ^ special character is at the beginning of a regular expression, then a
88/// match occurs only if the string is at the beginning of a line. For example, "^[
89/// A-Z ][ a-z ]*" matches capitalized words at the beginning of a line.
90/// If the $ special character is at the end of a regular expression, the then a
91/// match occurs only if the string is at the end of a line. For example, "[ A-Z ][
92/// a-z ]*$" matches capitalized words at the end of a line.
93
95 public:
96/// StatVal enumerates the status conditions returned by TRegexp::status
97 enum StatVal {
98 OK=0, ///< Means the given regular expression is legal
99 ILLEGAL, ///< Means the pattern was illegal
101 TOOLONG ///< Means the pattern exceeded maximum length (128)
102 };
103
104 TRegexp( const tchar *cp );
105 TRegexp( const TRegexp &r );
106 ~TRegexp();
107
108 TRegexp & operator = ( const TRegexp &r );
109 TRegexp & operator = ( const tchar *cp );
110 size_t find( const tstring &s,
111 size_t *len,
112 size_t start = 0 ) const;
113 StatVal status() noexcept;
114
115private:
116
117 void copy_pattern( const TRegexp &r );
118 void gen_pattern( const tchar *cp );
119
120 _TUCHAR *the_pattern;
121 StatVal stat;
122 static const unsigned maxpat;
123};
124
125#include <owl/posclass.h>
126
127} // OWL namespace
128
129#endif /* __REGEXP_H */
This class represents regular expressions.
Definition regexp.h:94
StatVal
StatVal enumerates the status conditions returned by TRegexp::status.
Definition regexp.h:97
@ ILLEGAL
Means the pattern was illegal.
Definition regexp.h:99
unsigned char _TUCHAR
Definition cygwin.h:44
Object Windows Library (OWLNext Core)
Definition animctrl.h:22
char tchar
Definition defs.h:77
std::string tstring
Definition defs.h:79
General definitions used by all ObjectWindows programs.
#define _OWLCLASS
Definition defs.h:338