|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r55012 - in trunk/boost/spirit/home: qi/directive qi/operator support
From: joel_at_[hidden]
Date: 2009-07-18 00:26:53
Author: djowel
Date: 2009-07-18 00:26:51 EDT (Sat, 18 Jul 2009)
New Revision: 55012
URL: http://svn.boost.org/trac/boost/changeset/55012
Log:
loop parsers fixes
Text files modified:
trunk/boost/spirit/home/qi/directive/repeat.hpp | 2 ++
trunk/boost/spirit/home/qi/operator/kleene.hpp | 1 +
trunk/boost/spirit/home/qi/operator/list.hpp | 3 +--
trunk/boost/spirit/home/qi/operator/plus.hpp | 2 ++
trunk/boost/spirit/home/support/attributes.hpp | 6 +++++-
5 files changed, 11 insertions(+), 3 deletions(-)
Modified: trunk/boost/spirit/home/qi/directive/repeat.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/directive/repeat.hpp (original)
+++ trunk/boost/spirit/home/qi/directive/repeat.hpp 2009-07-18 00:26:51 EDT (Sat, 18 Jul 2009)
@@ -163,6 +163,7 @@
return false;
}
traits::push_back(attr, val);
+ traits::clear(val);
}
}
// parse some more up to the maximum specified
@@ -171,6 +172,7 @@
if (!subject.parse(first, last, context, skipper, val))
break;
traits::push_back(attr, val);
+ traits::clear(val);
}
return true;
}
Modified: trunk/boost/spirit/home/qi/operator/kleene.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/operator/kleene.hpp (original)
+++ trunk/boost/spirit/home/qi/operator/kleene.hpp 2009-07-18 00:26:51 EDT (Sat, 18 Jul 2009)
@@ -65,6 +65,7 @@
{
// push the parsed value into our attribute
traits::push_back(attr, val);
+ traits::clear(val);
}
return true;
}
Modified: trunk/boost/spirit/home/qi/operator/list.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/operator/list.hpp (original)
+++ trunk/boost/spirit/home/qi/operator/list.hpp 2009-07-18 00:26:51 EDT (Sat, 18 Jul 2009)
@@ -65,13 +65,12 @@
if (left.parse(first, last, context, skipper, val))
{
traits::push_back(attr, val);
- traits::clear(val);
Iterator i = first;
while (right.parse(i, last, context, skipper, unused)
+ && (traits::clear(val), true)
&& left.parse(i, last, context, skipper, val))
{
traits::push_back(attr, val);
- traits::clear(val);
first = i;
}
return true;
Modified: trunk/boost/spirit/home/qi/operator/plus.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/operator/plus.hpp (original)
+++ trunk/boost/spirit/home/qi/operator/plus.hpp 2009-07-18 00:26:51 EDT (Sat, 18 Jul 2009)
@@ -63,9 +63,11 @@
if (subject.parse(first, last, context, skipper, val))
{
traits::push_back(attr, val);
+ traits::clear(val);
while (subject.parse(first, last, context, skipper, val))
{
traits::push_back(attr, val);
+ traits::clear(val);
}
return true;
}
Modified: trunk/boost/spirit/home/support/attributes.hpp
==============================================================================
--- trunk/boost/spirit/home/support/attributes.hpp (original)
+++ trunk/boost/spirit/home/support/attributes.hpp 2009-07-18 00:26:51 EDT (Sat, 18 Jul 2009)
@@ -432,7 +432,7 @@
struct is_container;
namespace detail
- {
+ {
template <typename T>
void clear_impl(T& val, mpl::false_)
{
@@ -464,6 +464,10 @@
{
detail::clear_impl(val, typename is_container<T>::type());
}
+
+ void clear(unused_type)
+ {
+ }
}}}
#endif
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk