summaryrefslogtreecommitdiff
path: root/boost/vmd/not_equal.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/vmd/not_equal.hpp')
-rw-r--r--boost/vmd/not_equal.hpp94
1 files changed, 94 insertions, 0 deletions
diff --git a/boost/vmd/not_equal.hpp b/boost/vmd/not_equal.hpp
new file mode 100644
index 0000000000..2480cdc00a
--- /dev/null
+++ b/boost/vmd/not_equal.hpp
@@ -0,0 +1,94 @@
+
+// (C) Copyright Edward Diener 2011-2015
+// Use, modification and distribution are subject to 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(BOOST_VMD_NOT_EQUAL_HPP)
+#define BOOST_VMD_NOT_EQUAL_HPP
+
+#include <boost/vmd/detail/setup.hpp>
+
+#if BOOST_PP_VARIADICS
+
+#include <boost/preprocessor/logical/compl.hpp>
+#include <boost/vmd/equal.hpp>
+
+/*
+
+ The succeeding comments in this file are in doxygen format.
+
+*/
+
+/** \file
+*/
+
+/** \def BOOST_VMD_NOT_EQUAL(sequence,...)
+
+ \brief Tests any two sequences for inequality.
+
+ sequence = First sequence.
+ ... = variadic parameters, maximum of 2.
+
+ The first variadic parameter is required and is the second sequence to test.
+ The optional second variadic parameter is a VMD type as a filter.
+
+ The macro tests any two sequences for inequality. For sequences to be unequal
+ either the VMD types of each sequence must be unequal or the individual elements of the
+ sequence must be unequal.
+
+ The single optional parameter is a filter. The filter is a VMD type which specifies
+ that both sequences to test must be of that VMD type, as well as being equal to
+ each other, for the test to fail, else it succeeds.
+
+ returns = 1 upon success or 0 upon failure. Success means that the sequences are
+ unequal or, if the optional parameter is specified, that the sequences are
+ not of the optional VMD type; otherwise 0 is returned if the sequences
+ are equal.
+
+ The macro is implemented as the complement of BOOST_VMD_EQUAL, so that whenever
+ BOOST_VMD_EQUAL would return 1 the macro returns 0 and whenever BOOST_VMD_EQUAL
+ would return 0 the macro would return 1.
+
+*/
+
+#define BOOST_VMD_NOT_EQUAL(sequence,...) \
+ BOOST_PP_COMPL(BOOST_VMD_EQUAL(sequence,__VA_ARGS__)) \
+/**/
+
+/** \def BOOST_VMD_NOT_EQUAL_D(d,sequence,...)
+
+ \brief Tests any two sequences for inequality. Re-entrant version.
+
+ d = The next available BOOST_PP_WHILE iteration.
+ sequence = First sequence.
+ ... = variadic parameters, maximum of 2.
+
+ The first variadic parameter is required and is the second sequence to test.
+ The optional second variadic parameter is a VMD type as a filter.
+
+ The macro tests any two sequences for inequality. For sequences to be unequal
+ either the VMD types of each sequence must be unequal or the individual elements of the
+ sequence must be unequal.
+
+ The single optional parameter is a filter. The filter is a VMD type which specifies
+ that both sequences to test must be of that VMD type, as well as being equal to
+ each other, for the test to fail, else it succeeds.
+
+ returns = 1 upon success or 0 upon failure. Success means that the sequences are
+ unequal or, if the optional parameter is specified, that the sequences are
+ not of the optional VMD type; otherwise 0 is returned if the sequences
+ are equal.
+
+ The macro is implemented as the complement of BOOST_VMD_EQUAL, so that whenever
+ BOOST_VMD_EQUAL would return 1 the macro returns 0 and whenever BOOST_VMD_EQUAL
+ would return 0 the macro would return 1.
+
+*/
+
+#define BOOST_VMD_NOT_EQUAL_D(d,sequence,...) \
+ BOOST_PP_COMPL(BOOST_VMD_EQUAL_D(d,sequence,__VA_ARGS__)) \
+/**/
+
+#endif /* BOOST_PP_VARIADICS */
+#endif /* BOOST_VMD_NOT_EQUAL_HPP */