regex_compiler.h: Remove unnecessary bind() calls.

2011-02-14  Jonathan Wakely  <jwakely.gcc@gmail.com>

	* include/bits/regex_compiler.h: Remove unnecessary bind() calls.
	* include/bits/regex_nfa.h: Remove unnecessary base classes.

From-SVN: r170124
This commit is contained in:
Jonathan Wakely 2011-02-14 10:04:04 +00:00 committed by Jonathan Wakely
parent 1e26379233
commit 75eec5b611
3 changed files with 20 additions and 33 deletions

View File

@ -1,3 +1,8 @@
2011-02-14 Jonathan Wakely <jwakely.gcc@gmail.com>
* include/bits/regex_compiler.h: Remove unnecessary bind() calls.
* include/bits/regex_nfa.h: Remove unnecessary base classes.
2011-02-13 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
* configure: Regenerate.

View File

@ -1,6 +1,6 @@
// class template regex -*- C++ -*-
// Copyright (C) 2010 Free Software Foundation, Inc.
// Copyright (C) 2010, 2011 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@ -714,23 +714,18 @@ namespace __regex
: _M_traits(__traits), _M_scanner(__b, __e, __flags, _M_traits.getloc()),
_M_state_store(__flags)
{
using std::bind;
using std::placeholders::_1;
using std::placeholders::_2;
typedef _StartTagger<_InIter, _TraitsT> _Start;
typedef _EndTagger<_InIter, _TraitsT> _End;
_StateSeq __r(_M_state_store,
_M_state_store._M_insert_subexpr_begin(
bind(_Start(0), _1, _2)));
_M_state_store._M_insert_subexpr_begin(_Start(0)));
_M_disjunction();
if (!_M_stack.empty())
{
__r._M_append(_M_stack.top());
_M_stack.pop();
}
__r._M_append(_M_state_store.
_M_insert_subexpr_end(0, bind(_End(0), _1, _2)));
__r._M_append(_M_state_store._M_insert_subexpr_end(0, _End(0)));
__r._M_append(_M_state_store._M_insert_accept());
}
@ -905,9 +900,6 @@ namespace __regex
_Compiler<_InIter, _TraitsT>::
_M_atom()
{
using std::bind;
using std::placeholders::_1;
using std::placeholders::_2;
typedef _CharMatcher<_InIter, _TraitsT> _CMatcher;
typedef _StartTagger<_InIter, _TraitsT> _Start;
typedef _EndTagger<_InIter, _TraitsT> _End;
@ -915,26 +907,23 @@ namespace __regex
if (_M_match_token(_ScannerT::_S_token_anychar))
{
_M_stack.push(_StateSeq(_M_state_store,
_M_state_store.
_M_insert_matcher(bind(_AnyMatcher, _1))));
_M_state_store._M_insert_matcher
(_AnyMatcher)));
return true;
}
if (_M_match_token(_ScannerT::_S_token_ord_char))
{
_M_stack.push(_StateSeq
(_M_state_store, _M_state_store.
_M_insert_matcher
(bind(_CMatcher(_M_cur_value[0], _M_traits), _1))));
_M_stack.push(_StateSeq(_M_state_store,
_M_state_store._M_insert_matcher
(_CMatcher(_M_cur_value[0], _M_traits))));
return true;
}
if (_M_match_token(_ScannerT::_S_token_quoted_char))
{
// note that in the ECMA grammar, this case covers backrefs.
_M_stack.push(_StateSeq(_M_state_store,
_M_state_store.
_M_insert_matcher
(bind(_CMatcher(_M_cur_value[0], _M_traits),
_1))));
_M_state_store._M_insert_matcher
(_CMatcher(_M_cur_value[0], _M_traits))));
return true;
}
if (_M_match_token(_ScannerT::_S_token_backref))
@ -947,7 +936,7 @@ namespace __regex
int __mark = _M_state_store._M_sub_count();
_StateSeq __r(_M_state_store,
_M_state_store.
_M_insert_subexpr_begin(bind(_Start(__mark), _1, _2)));
_M_insert_subexpr_begin(_Start(__mark)));
this->_M_disjunction();
if (!_M_match_token(_ScannerT::_S_token_subexpr_end))
__throw_regex_error(regex_constants::error_paren);
@ -957,7 +946,7 @@ namespace __regex
_M_stack.pop();
}
__r._M_append(_M_state_store._M_insert_subexpr_end
(__mark, bind(_End(__mark), _1, _2)));
(__mark, _End(__mark)));
_M_stack.push(__r);
return true;
}
@ -969,8 +958,6 @@ namespace __regex
_Compiler<_InIter, _TraitsT>::
_M_bracket_expression()
{
using std::bind;
using std::placeholders::_1;
if (_M_match_token(_ScannerT::_S_token_bracket_begin))
{
_RMatcherT __matcher(_M_match_token(_ScannerT::_S_token_line_begin),
@ -979,8 +966,7 @@ namespace __regex
|| !_M_match_token(_ScannerT::_S_token_bracket_end))
__throw_regex_error(regex_constants::error_brack);
_M_stack.push(_StateSeq(_M_state_store,
_M_state_store._M_insert_matcher
(bind(__matcher, _1))));
_M_state_store._M_insert_matcher(__matcher)));
return true;
}
return false;

View File

@ -1,6 +1,6 @@
// class template regex -*- C++ -*-
// Copyright (C) 2010 Free Software Foundation, Inc.
// Copyright (C) 2010, 2011 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@ -82,7 +82,6 @@ namespace __regex
template<typename _FwdIterT, typename _TraitsT>
struct _StartTagger
: public _Tagger
{
explicit
_StartTagger(int __i)
@ -98,7 +97,6 @@ namespace __regex
template<typename _FwdIterT, typename _TraitsT>
struct _EndTagger
: public _Tagger
{
explicit
_EndTagger(int __i)
@ -123,7 +121,6 @@ namespace __regex
// Matches a single character
template<typename _InIterT, typename _TraitsT>
struct _CharMatcher
: public _Matcher
{
typedef typename _TraitsT::char_type char_type;
@ -147,7 +144,6 @@ namespace __regex
// Matches a character range (bracket expression)
template<typename _InIterT, typename _TraitsT>
struct _RangeMatcher
: public _Matcher
{
typedef typename _TraitsT::char_type _CharT;
typedef std::basic_string<_CharT> _StringT;
@ -208,7 +204,7 @@ namespace __regex
typedef int _OpcodeT;
_OpcodeT _M_opcode; // type of outgoing transition
_StateIdT _M_next; // outgoing tranition
_StateIdT _M_next; // outgoing transition
_StateIdT _M_alt; // for _S_opcode_alternative
unsigned int _M_subexpr; // for _S_opcode_subexpr_*
_Tagger _M_tagger; // for _S_opcode_subexpr_*