Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Unified Diff: third_party/boost/boost/fusion/iterator/detail/advance.hpp

Issue 113163: Add gmock into our dependencies. (Closed)
Patch Set: Making gmock work with windows. Requires adding boost. Created 11 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/boost/boost/fusion/iterator/detail/advance.hpp
diff --git a/third_party/boost/boost/fusion/iterator/detail/advance.hpp b/third_party/boost/boost/fusion/iterator/detail/advance.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..900608fae17b8af4be278ab38ff08f228deb9730
--- /dev/null
+++ b/third_party/boost/boost/fusion/iterator/detail/advance.hpp
@@ -0,0 +1,102 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_ADVANCE_09172005_1149)
+#define FUSION_ADVANCE_09172005_1149
+
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/prior.hpp>
+
+namespace boost { namespace fusion { namespace advance_detail
+{
+ // Default advance implementation, perform next(i)
+ // or prior(i) N times.
+
+ template <typename Iterator, int N>
+ struct forward;
+
+ template <typename Iterator, int N>
+ struct next_forward
+ {
+ typedef typename
+ forward<
+ typename result_of::next<Iterator>::type
+ , N-1
+ >::type
+ type;
+ };
+
+ template <typename Iterator, int N>
+ struct forward
+ {
+ typedef typename
+ mpl::eval_if_c<
+ (N == 0)
+ , mpl::identity<Iterator>
+ , next_forward<Iterator, N>
+ >::type
+ type;
+
+ static type const&
+ call(type const& i)
+ {
+ return i;
+ }
+
+ template <typename I>
+ static type
+ call(I const& i)
+ {
+ return call(fusion::next(i));
+ }
+ };
+
+ template <typename Iterator, int N>
+ struct backward;
+
+ template <typename Iterator, int N>
+ struct next_backward
+ {
+ typedef typename
+ backward<
+ typename result_of::prior<Iterator>::type
+ , N+1
+ >::type
+ type;
+ };
+
+ template <typename Iterator, int N>
+ struct backward
+ {
+ typedef typename
+ mpl::eval_if_c<
+ (N == 0)
+ , mpl::identity<Iterator>
+ , next_backward<Iterator, N>
+ >::type
+ type;
+
+ static type const&
+ call(type const& i)
+ {
+ return i;
+ }
+
+ template <typename I>
+ static type
+ call(I const& i)
+ {
+ return call(fusion::prior(i));
+ }
+ };
+
+}}}
+
+#endif
« no previous file with comments | « third_party/boost/boost/fusion/iterator/deref.hpp ('k') | third_party/boost/boost/fusion/iterator/equal_to.hpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698