Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r50080 - trunk/boost/spirit/home/karma/operator
From: hartmut.kaiser_at_[hidden]
Date: 2008-12-02 18:27:11


Author: hkaiser
Date: 2008-12-02 18:27:11 EST (Tue, 02 Dec 2008)
New Revision: 50080
URL: http://svn.boost.org/trac/boost/changeset/50080

Log:
Spirit.Karma: Fixed optional operator
Text files modified:
   trunk/boost/spirit/home/karma/operator/optional.hpp | 74 ++++++++++++++++++---------------------
   1 files changed, 34 insertions(+), 40 deletions(-)

Modified: trunk/boost/spirit/home/karma/operator/optional.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/operator/optional.hpp (original)
+++ trunk/boost/spirit/home/karma/operator/optional.hpp 2008-12-02 18:27:11 EST (Tue, 02 Dec 2008)
@@ -22,44 +22,44 @@
     namespace detail
     {
         template <typename Parameter>
- struct optional_attribute
+ inline bool
+ optional_is_valid(boost::optional<Parameter> const& opt)
         {
- static inline bool
- is_valid(boost::optional<Parameter> const& opt)
- {
- return opt;
- }
+ return opt;
+ }
 
- static inline bool
- is_valid(Parameter const&)
- {
- return true;
- }
+ template <typename Parameter>
+ inline bool
+ optional_is_valid(Parameter const& opt)
+ {
+ return true;
+ }
 
- static inline bool
- is_valid(unused_type)
- {
- return true;
- }
+ inline bool
+ optional_is_valid(unused_type)
+ {
+ return true;
+ }
 
- static inline Parameter const&
- get(boost::optional<Parameter> const& opt)
- {
- return boost::get(opt);
- }
+ template <typename Parameter>
+ inline Parameter const&
+ optional_get(boost::optional<Parameter> const& opt)
+ {
+ return get(opt);
+ }
 
- static inline Parameter const&
- get(Parameter const& p)
- {
- return p;
- }
+ template <typename Parameter>
+ inline Parameter const&
+ optional_get(Parameter const& opt)
+ {
+ return opt;
+ }
 
- static inline unused_type
- get(unused_type)
- {
- return unused;
- }
- };
+ inline unused_type
+ optional_get(unused_type)
+ {
+ return unused;
+ }
     }
 
     struct optional
@@ -86,16 +86,10 @@
                 result_of::subject<Component>::type::director
             director;
 
- typedef typename traits::attribute_of<
- karma::domain, typename result_of::subject<Component>::type,
- Context, unused_type
- >::type attribute_type;
-
- typedef detail::optional_attribute<attribute_type> optional_type;
- if (optional_type::is_valid(param))
+ if (detail::optional_is_valid(param))
             {
                 director::generate(subject(component), sink, ctx, d,
- optional_type::get(param));
+ detail::optional_get(param));
             }
             return true;
         }


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