forked from boostorg/regex
Config updates/patches
[SVN r13973]
This commit is contained in:
@ -239,9 +239,11 @@ message_data<char>::message_data(const std::locale& l, const std::string& regex_
|
|||||||
//
|
//
|
||||||
// for some reason Borland C++ Builder 6 won't let us use
|
// for some reason Borland C++ Builder 6 won't let us use
|
||||||
// std::isspace(char, std::locale) unless we call it
|
// std::isspace(char, std::locale) unless we call it
|
||||||
// unqualifed - weird.
|
// unqualifed - weird. This seems to be affecting other
|
||||||
|
// STLport users as well (gcc3.1+STLport5), so enable the
|
||||||
|
// workaround for all STLport users...
|
||||||
//
|
//
|
||||||
#if defined(__BORLANDC__) && (__BORLANDC__ == 0x560)
|
#if defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
|
||||||
using namespace std;
|
using namespace std;
|
||||||
# define BOOST_REGEX_STD
|
# define BOOST_REGEX_STD
|
||||||
#else
|
#else
|
||||||
|
@ -78,16 +78,28 @@ public:
|
|||||||
};
|
};
|
||||||
regex e;
|
regex e;
|
||||||
cmatch m;
|
cmatch m;
|
||||||
|
#ifndef BOOST_REGEX_NO_FILEITER
|
||||||
match_results<mapfile::iterator, regex::allocator_type> fm;
|
match_results<mapfile::iterator, regex::allocator_type> fm;
|
||||||
|
#endif
|
||||||
type t;
|
type t;
|
||||||
const char* pbase;
|
const char* pbase;
|
||||||
unsigned line;
|
unsigned line;
|
||||||
|
#ifndef BOOST_REGEX_NO_FILEITER
|
||||||
mapfile::iterator fbase;
|
mapfile::iterator fbase;
|
||||||
|
#endif
|
||||||
std::map<int, std::string, std::less<int> > strings;
|
std::map<int, std::string, std::less<int> > strings;
|
||||||
std::map<int, std::ptrdiff_t, std::less<int> > positions;
|
std::map<int, std::ptrdiff_t, std::less<int> > positions;
|
||||||
void update();
|
void update();
|
||||||
void clean();
|
void clean();
|
||||||
RegExData() : e(), m(), fm(), t(type_copy), pbase(0), line(0), fbase(), strings(), positions() {}
|
RegExData() : e(), m(),
|
||||||
|
#ifndef BOOST_REGEX_NO_FILEITER
|
||||||
|
fm(),
|
||||||
|
#endif
|
||||||
|
t(type_copy), pbase(0), line(0),
|
||||||
|
#ifndef BOOST_REGEX_NO_FILEITER
|
||||||
|
fbase(),
|
||||||
|
#endif
|
||||||
|
strings(), positions() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
void RegExData::update()
|
void RegExData::update()
|
||||||
@ -104,6 +116,7 @@ void RegExData::update()
|
|||||||
}
|
}
|
||||||
line = m.line();
|
line = m.line();
|
||||||
}
|
}
|
||||||
|
#ifndef BOOST_REGEX_NO_FILEITER
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for(unsigned int i = 0; i < fm.size(); ++i)
|
for(unsigned int i = 0; i < fm.size(); ++i)
|
||||||
@ -113,14 +126,17 @@ void RegExData::update()
|
|||||||
}
|
}
|
||||||
line = fm.line();
|
line = fm.line();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
t = type_copy;
|
t = type_copy;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegExData::clean()
|
void RegExData::clean()
|
||||||
{
|
{
|
||||||
BOOST_RE_GUARD_STACK
|
BOOST_RE_GUARD_STACK
|
||||||
|
#ifndef BOOST_REGEX_NO_FILEITER
|
||||||
fbase = mapfile::iterator();
|
fbase = mapfile::iterator();
|
||||||
fm = match_results<mapfile::iterator, regex::allocator_type>();
|
fm = match_results<mapfile::iterator, regex::allocator_type>();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
@ -310,6 +326,7 @@ unsigned int RegEx::Grep(std::vector<std::size_t>& v, const char* p, unsigned in
|
|||||||
pdata->update();
|
pdata->update();
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
#ifndef BOOST_REGEX_NO_FILEITER
|
||||||
namespace re_detail{
|
namespace re_detail{
|
||||||
struct pred4
|
struct pred4
|
||||||
{
|
{
|
||||||
@ -431,6 +448,7 @@ unsigned int RegEx::FindFiles(FindFilesCallback cb, const char* files, bool recu
|
|||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
std::string RegEx::Merge(const std::string& in, const std::string& fmt,
|
std::string RegEx::Merge(const std::string& in, const std::string& fmt,
|
||||||
bool copy, unsigned int flags)
|
bool copy, unsigned int flags)
|
||||||
@ -472,8 +490,10 @@ std::size_t RegEx::Position(int i)const
|
|||||||
{
|
{
|
||||||
case re_detail::RegExData::type_pc:
|
case re_detail::RegExData::type_pc:
|
||||||
return pdata->m[i].matched ? pdata->m[i].first - pdata->pbase : RegEx::npos;
|
return pdata->m[i].matched ? pdata->m[i].first - pdata->pbase : RegEx::npos;
|
||||||
|
#ifndef BOOST_REGEX_NO_FILEITER
|
||||||
case re_detail::RegExData::type_pf:
|
case re_detail::RegExData::type_pf:
|
||||||
return pdata->fm[i].matched ? pdata->fm[i].first - pdata->fbase : RegEx::npos;
|
return pdata->fm[i].matched ? pdata->fm[i].first - pdata->fbase : RegEx::npos;
|
||||||
|
#endif
|
||||||
case re_detail::RegExData::type_copy:
|
case re_detail::RegExData::type_copy:
|
||||||
{
|
{
|
||||||
std::map<int, std::ptrdiff_t, std::less<int> >::iterator pos = pdata->positions.find(i);
|
std::map<int, std::ptrdiff_t, std::less<int> >::iterator pos = pdata->positions.find(i);
|
||||||
@ -492,8 +512,10 @@ unsigned int RegEx::Line()const
|
|||||||
{
|
{
|
||||||
case re_detail::RegExData::type_pc:
|
case re_detail::RegExData::type_pc:
|
||||||
return pdata->m[0].matched ? pdata->m.line() : RegEx::npos;
|
return pdata->m[0].matched ? pdata->m.line() : RegEx::npos;
|
||||||
|
#ifndef BOOST_REGEX_NO_FILEITER
|
||||||
case re_detail::RegExData::type_pf:
|
case re_detail::RegExData::type_pf:
|
||||||
return pdata->fm[0].matched ? pdata->fm.line() : RegEx::npos;
|
return pdata->fm[0].matched ? pdata->fm.line() : RegEx::npos;
|
||||||
|
#endif
|
||||||
case re_detail::RegExData::type_copy:
|
case re_detail::RegExData::type_copy:
|
||||||
{
|
{
|
||||||
return pdata->line;
|
return pdata->line;
|
||||||
@ -516,8 +538,10 @@ std::size_t RegEx::Length(int i)const
|
|||||||
{
|
{
|
||||||
case re_detail::RegExData::type_pc:
|
case re_detail::RegExData::type_pc:
|
||||||
return pdata->m[i].matched ? pdata->m[i].second - pdata->m[i].first : RegEx::npos;
|
return pdata->m[i].matched ? pdata->m[i].second - pdata->m[i].first : RegEx::npos;
|
||||||
|
#ifndef BOOST_REGEX_NO_FILEITER
|
||||||
case re_detail::RegExData::type_pf:
|
case re_detail::RegExData::type_pf:
|
||||||
return pdata->fm[i].matched ? pdata->fm[i].second - pdata->fm[i].first : RegEx::npos;
|
return pdata->fm[i].matched ? pdata->fm[i].second - pdata->fm[i].first : RegEx::npos;
|
||||||
|
#endif
|
||||||
case re_detail::RegExData::type_copy:
|
case re_detail::RegExData::type_copy:
|
||||||
{
|
{
|
||||||
std::map<int, std::string, std::less<int> >::iterator pos = pdata->strings.find(i);
|
std::map<int, std::string, std::less<int> >::iterator pos = pdata->strings.find(i);
|
||||||
@ -536,8 +560,10 @@ bool RegEx::Matched(int i)const
|
|||||||
{
|
{
|
||||||
case re_detail::RegExData::type_pc:
|
case re_detail::RegExData::type_pc:
|
||||||
return pdata->m[i].matched;
|
return pdata->m[i].matched;
|
||||||
|
#ifndef BOOST_REGEX_NO_FILEITER
|
||||||
case re_detail::RegExData::type_pf:
|
case re_detail::RegExData::type_pf:
|
||||||
return pdata->fm[i].matched;
|
return pdata->fm[i].matched;
|
||||||
|
#endif
|
||||||
case re_detail::RegExData::type_copy:
|
case re_detail::RegExData::type_copy:
|
||||||
{
|
{
|
||||||
std::map<int, std::string, std::less<int> >::iterator pos = pdata->strings.find(i);
|
std::map<int, std::string, std::less<int> >::iterator pos = pdata->strings.find(i);
|
||||||
|
@ -27,6 +27,8 @@
|
|||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
#include <boost/regex/detail/fileiter.hpp>
|
#include <boost/regex/detail/fileiter.hpp>
|
||||||
|
|
||||||
|
#ifndef BOOST_REGEX_NO_FILEITER
|
||||||
|
|
||||||
#if defined(__CYGWIN__) || defined(__CYGWIN32__)
|
#if defined(__CYGWIN__) || defined(__CYGWIN32__)
|
||||||
#include <sys/cygwin.h>
|
#include <sys/cygwin.h>
|
||||||
#endif
|
#endif
|
||||||
@ -76,7 +78,7 @@ void mapfile::open(const char* file)
|
|||||||
if(hfile != INVALID_HANDLE_VALUE)
|
if(hfile != INVALID_HANDLE_VALUE)
|
||||||
{
|
{
|
||||||
hmap = CreateFileMapping(hfile, 0, PAGE_READONLY, 0, 0, 0);
|
hmap = CreateFileMapping(hfile, 0, PAGE_READONLY, 0, 0, 0);
|
||||||
if(hmap == INVALID_HANDLE_VALUE)
|
if((hmap == INVALID_HANDLE_VALUE) || (hmap == NULL))
|
||||||
{
|
{
|
||||||
CloseHandle(hfile);
|
CloseHandle(hfile);
|
||||||
hmap = 0;
|
hmap = 0;
|
||||||
@ -888,6 +890,7 @@ bool _fi_FindClose(_fi_find_handle dat)
|
|||||||
} // namespace re_detail
|
} // namespace re_detail
|
||||||
} // namspace boost
|
} // namspace boost
|
||||||
|
|
||||||
|
#endif // BOOST_REGEX_NO_FILEITER
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user