Fix for UBSan build
[platform/upstream/doxygen.git] / qtools / qregexp.h
1 /****************************************************************************
2 ** 
3 **
4 ** Definition of QRegExp class
5 **
6 ** Created : 950126
7 **
8 ** Copyright (C) 1992-2000 Trolltech AS.  All rights reserved.
9 **
10 ** This file is part of the tools module of the Qt GUI Toolkit.
11 **
12 ** This file may be distributed under the terms of the Q Public License
13 ** as defined by Trolltech AS of Norway and appearing in the file
14 ** LICENSE.QPL included in the packaging of this file.
15 **
16 ** This file may be distributed and/or modified under the terms of the
17 ** GNU General Public License version 2 as published by the Free Software
18 ** Foundation and appearing in the file LICENSE.GPL included in the
19 ** packaging of this file.
20 **
21 ** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
22 ** licenses may use this file in accordance with the Qt Commercial License
23 ** Agreement provided with the Software.
24 **
25 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
26 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
27 **
28 ** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
29 **   information about Qt Commercial License Agreements.
30 ** See http://www.trolltech.com/qpl/ for QPL licensing information.
31 ** See http://www.trolltech.com/gpl/ for GPL licensing information.
32 **
33 ** Contact info@trolltech.com if any conditions of this licensing are
34 ** not clear to you.
35 **
36 **********************************************************************/
37
38 #ifndef QREGEXP_H
39 #define QREGEXP_H
40
41 #ifndef QT_H
42 #include "qcstring.h"
43 #endif // QT_H
44
45
46 class Q_EXPORT QRegExp
47 {
48 public:
49     QRegExp();
50     QRegExp( const QCString &, bool caseSensitive=TRUE, bool wildcard=FALSE );
51     QRegExp( const QRegExp & );
52    ~QRegExp();
53     QRegExp    &operator=( const QRegExp & );
54     QRegExp    &operator=( const QCString &pattern );
55
56     bool        operator==( const QRegExp & )  const;
57     bool        operator!=( const QRegExp &r ) const
58                                         { return !(this->operator==(r)); }
59
60     bool        isEmpty()       const   { return rxdata == 0; }
61     bool        isValid()       const   { return error == 0; }
62
63     bool        caseSensitive() const   { return cs; }
64     void        setCaseSensitive( bool );
65
66     bool        wildcard()      const   { return wc; }
67     void        setWildcard( bool );
68
69     QCString    pattern()       const   { return rxstring; }
70     // ### in Qt 3.0, provide a real implementation
71     void        setPattern( const QCString& pattern )
72                                         { operator=( pattern ); }
73
74     int         match( const QCString &str, int index=0, int *len=0,
75                        bool indexIsStart = TRUE ) const;
76     int         find( const QCString& str, int index )
77                                         { return match( str, index ); }
78
79 protected:
80     void        compile();
81     const char *matchstr( uint *, const char *, uint, const char * ) const;
82
83 private:
84     QCString    rxstring;                       // regular expression pattern
85     uint        *rxdata;                        // compiled regexp pattern
86     int         error;                          // error status
87     bool        cs;                             // case sensitive
88     bool        wc;                             // wildcard
89 };
90
91
92 #endif // QREGEXP_H