projects
/
wxWidgets.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix undefined variable color to colour
[wxWidgets.git]
/
src
/
common
/
regex.cpp
diff --git
a/src/common/regex.cpp
b/src/common/regex.cpp
index 33458574c99247dfdfbb12b874af393c0e846746..f6ca8782913e64e3ec4ddfe6bf99610974e299b8 100644
(file)
--- a/
src/common/regex.cpp
+++ b/
src/common/regex.cpp
@@
-1,11
+1,11
@@
///////////////////////////////////////////////////////////////////////////////
// Name: src/common/regex.cpp
// Purpose: regular expression matching
///////////////////////////////////////////////////////////////////////////////
// Name: src/common/regex.cpp
// Purpose: regular expression matching
-// Author: Karsten Ball
ü
der and Vadim Zeitlin
+// Author: Karsten Ball
ue
der and Vadim Zeitlin
// Modified by:
// Created: 13.07.01
// RCS-ID: $Id$
// Modified by:
// Created: 13.07.01
// RCS-ID: $Id$
-// Copyright: (c) 2000 Karsten Ball
ü
der <ballueder@gmx.net>
+// Copyright: (c) 2000 Karsten Ball
ue
der <ballueder@gmx.net>
// 2001 Vadim Zeitlin <vadim@wxwindows.org>
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
// 2001 Vadim Zeitlin <vadim@wxwindows.org>
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
@@
-32,6
+32,7
@@
#include "wx/string.h"
#include "wx/log.h"
#include "wx/intl.h"
#include "wx/string.h"
#include "wx/log.h"
#include "wx/intl.h"
+ #include "wx/crt.h"
#endif //WX_PRECOMP
// FreeBSD, Watcom and DMars require this, CW doesn't have nor need it.
#endif //WX_PRECOMP
// FreeBSD, Watcom and DMars require this, CW doesn't have nor need it.
@@
-56,7
+57,11
@@
#ifdef __REG_NOFRONT
# define WXREGEX_USING_BUILTIN
# define WXREGEX_IF_NEED_LEN(x) ,x
#ifdef __REG_NOFRONT
# define WXREGEX_USING_BUILTIN
# define WXREGEX_IF_NEED_LEN(x) ,x
-# define WXREGEX_CHAR(x) x
+# if wxUSE_UNICODE
+# define WXREGEX_CHAR(x) (x).wc_str()
+# else
+# define WXREGEX_CHAR(x) (x).mb_str()
+# endif
#else
# ifdef HAVE_RE_SEARCH
# define WXREGEX_IF_NEED_LEN(x) ,x
#else
# ifdef HAVE_RE_SEARCH
# define WXREGEX_IF_NEED_LEN(x) ,x
@@
-67,7
+72,7
@@
# if wxUSE_UNICODE
# define WXREGEX_CONVERT_TO_MB
# endif
# if wxUSE_UNICODE
# define WXREGEX_CONVERT_TO_MB
# endif
-# define WXREGEX_CHAR(x)
wxConvertWX2MB(x
)
+# define WXREGEX_CHAR(x)
(x).mb_str(
)
# define wx_regfree regfree
# define wx_regerror regerror
#endif
# define wx_regfree regfree
# define wx_regerror regerror
#endif
@@
-277,12
+282,14
@@
bool wxRegExImpl::Compile(const wxString& expr, int flags)
// translate our flags to regcomp() ones
int flagsRE = 0;
if ( !(flags & wxRE_BASIC) )
// translate our flags to regcomp() ones
int flagsRE = 0;
if ( !(flags & wxRE_BASIC) )
+ {
#ifndef WX_NO_REGEX_ADVANCED
if (flags & wxRE_ADVANCED)
flagsRE |= REG_ADVANCED;
else
#endif
flagsRE |= REG_EXTENDED;
#ifndef WX_NO_REGEX_ADVANCED
if (flags & wxRE_ADVANCED)
flagsRE |= REG_ADVANCED;
else
#endif
flagsRE |= REG_EXTENDED;
+ }
if ( flags & wxRE_ICASE )
flagsRE |= REG_ICASE;
if ( flags & wxRE_NOSUB )
if ( flags & wxRE_ICASE )
flagsRE |= REG_ICASE;
if ( flags & wxRE_NOSUB )
@@
-293,8
+300,11
@@
bool wxRegExImpl::Compile(const wxString& expr, int flags)
// compile it
#ifdef WXREGEX_USING_BUILTIN
bool conv = true;
// compile it
#ifdef WXREGEX_USING_BUILTIN
bool conv = true;
- int errorcode = wx_re_comp(&m_RegEx, expr, expr.length(), flagsRE);
+ // FIXME-UTF8: use wc_str() after removing ANSI build
+ int errorcode = wx_re_comp(&m_RegEx, expr.c_str(), expr.length(), flagsRE);
#else
#else
+ // FIXME-UTF8: this is potentially broken, we shouldn't even try it
+ // and should always use builtin regex library (or PCRE?)
const wxWX2MBbuf conv = expr.mbc_str();
int errorcode = conv ? regcomp(&m_RegEx, conv, flagsRE) : REG_BADPAT;
#endif
const wxWX2MBbuf conv = expr.mbc_str();
int errorcode = conv ? regcomp(&m_RegEx, conv, flagsRE) : REG_BADPAT;
#endif
@@
-505,7
+515,11
@@
int wxRegExImpl::Replace(wxString *text,
// note that "^" shouldn't match after the first call to Matches() so we
// use wxRE_NOTBOL to prevent it from happening
while ( (!maxMatches || countRepl < maxMatches) &&
// note that "^" shouldn't match after the first call to Matches() so we
// use wxRE_NOTBOL to prevent it from happening
while ( (!maxMatches || countRepl < maxMatches) &&
+#ifndef WXREGEX_CONVERT_TO_MB
Matches(textstr + matchStart,
Matches(textstr + matchStart,
+#else
+ Matches(textstr.data() + matchStart,
+#endif
countRepl ? wxRE_NOTBOL : 0
WXREGEX_IF_NEED_LEN(textlen - matchStart)) )
{
countRepl ? wxRE_NOTBOL : 0
WXREGEX_IF_NEED_LEN(textlen - matchStart)) )
{
@@
-551,7
+565,12
@@
int wxRegExImpl::Replace(wxString *text,
}
else
{
}
else
{
+#ifndef WXREGEX_CONVERT_TO_MB
textNew += wxString(textstr + matchStart + start,
textNew += wxString(textstr + matchStart + start,
+#else
+ textNew += wxString(textstr.data() + matchStart +
+ start,
+#endif
*wxConvCurrent, len);
mayHaveBackrefs = true;
*wxConvCurrent, len);
mayHaveBackrefs = true;
@@
-581,7
+600,8
@@
int wxRegExImpl::Replace(wxString *text,
#ifndef WXREGEX_CONVERT_TO_MB
result.append(*text, matchStart, start);
#else
#ifndef WXREGEX_CONVERT_TO_MB
result.append(*text, matchStart, start);
#else
- result.append(wxString(textstr + matchStart, *wxConvCurrent, start));
+ result.append(wxString(textstr.data() + matchStart, *wxConvCurrent,
+ start));
#endif
matchStart += start;
result.append(textNew);
#endif
matchStart += start;
result.append(textNew);
@@
-594,7
+614,7
@@
int wxRegExImpl::Replace(wxString *text,
#ifndef WXREGEX_CONVERT_TO_MB
result.append(*text, matchStart, wxString::npos);
#else
#ifndef WXREGEX_CONVERT_TO_MB
result.append(*text, matchStart, wxString::npos);
#else
- result.append(wxString(textstr + matchStart, *wxConvCurrent));
+ result.append(wxString(textstr
.data()
+ matchStart, *wxConvCurrent));
#endif
*text = result;
#endif
*text = result;