Update of /cvsroot/boost/boost/boost/xpressive
In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv1955

Modified Files:
        regex_actions.hpp 
Log Message:
more stl-ish actions, bug fixes

Index: regex_actions.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/xpressive/regex_actions.hpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- regex_actions.hpp   22 Mar 2007 17:37:16 -0000      1.1
+++ regex_actions.hpp   22 Mar 2007 22:15:29 -0000      1.2
@@ -30,6 +30,17 @@
             return const_cast<T &>(t);
         }
 
+        struct push_impl
+        {
+            typedef void result_type;
+
+            template<typename Sequence, typename Value>
+            void operator()(Sequence &seq, Value const &val) const
+            {
+                detail::unconst(seq).push(val);
+            }
+        };
+
         struct push_back_impl
         {
             typedef void result_type;
@@ -52,6 +63,93 @@
             }
         };
 
+        struct pop_impl
+        {
+            typedef void result_type;
+
+            template<typename Sequence>
+            void operator()(Sequence &seq) const
+            {
+                detail::unconst(seq).pop();
+            }
+        };
+
+        struct pop_back_impl
+        {
+            typedef void result_type;
+
+            template<typename Sequence>
+            void operator()(Sequence &seq) const
+            {
+                detail::unconst(seq).pop_back();
+            }
+        };
+
+        struct pop_front_impl
+        {
+            typedef void result_type;
+
+            template<typename Sequence>
+            void operator()(Sequence &seq) const
+            {
+                detail::unconst(seq).pop_front();
+            }
+        };
+
+        struct front_impl
+        {
+            template<typename Sig>
+            struct result;
+
+            template<typename This, typename Sequence>
+            struct result<This(Sequence &)>
+            {
+                typedef typename Sequence::value_type type;
+            };
+
+            template<typename Sequence>
+            typename Sequence::value_type operator()(Sequence &seq) const
+            {
+                return seq.front();
+            }
+        };
+
+        struct back_impl
+        {
+            template<typename Sig>
+            struct result;
+
+            template<typename This, typename Sequence>
+            struct result<This(Sequence &)>
+            {
+                typedef typename Sequence::value_type type;
+            };
+
+            template<typename Sequence>
+            typename Sequence::value_type operator()(Sequence &seq) const
+            {
+                return seq.back();
+            }
+        };
+
+        struct top_impl
+        {
+            template<typename Sig>
+            struct result;
+
+            template<typename This, typename Sequence>
+            struct result<This(Sequence &)>
+            {
+                typedef typename Sequence::value_type type;
+            };
+
+            template<typename Sequence>
+            typename Sequence::value_type operator()(Sequence &seq) const
+            {
+                return seq.top();
+            }
+        };
+
         template<typename T>
         struct as_impl
         {
@@ -65,8 +163,15 @@
         };
     }
 
+    proto::terminal<detail::push_impl>::type const push = {{}};
     proto::terminal<detail::push_back_impl>::type const push_back = {{}};
     proto::terminal<detail::push_front_impl>::type const push_front = {{}};
+    proto::terminal<detail::pop_impl>::type const pop = {{}};
+    proto::terminal<detail::pop_back_impl>::type const pop_back = {{}};
+    proto::terminal<detail::pop_front_impl>::type const pop_front = {{}};
+    proto::terminal<detail::top_impl>::type const top = {{}};
+    proto::terminal<detail::back_impl>::type const back = {{}};
+    proto::terminal<detail::front_impl>::type const front = {{}};
 
     template<typename T, typename D>
     typename proto::function<


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Boost-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/boost-cvs

Reply via email to