File indexing completed on 2024-09-22 04:53:11
0001 /* 0002 * SPDX-FileCopyrightText: 2008 Trevor Pounds 0003 * SPDX-License-Identifier: MIT 0004 */ 0005 0006 #ifndef __MOCKITOPP_MATCHER_EQ_HPP__ 0007 #define __MOCKITOPP_MATCHER_EQ_HPP__ 0008 0009 #include <mockitopp/matchers/Matcher.hpp> 0010 #include <string> 0011 0012 namespace mockitopp 0013 { 0014 namespace matcher 0015 { 0016 namespace detail 0017 { 0018 template <typename T> 0019 struct EqualT : public Matcher<T> 0020 { 0021 EqualT(typename mockitopp::detail::tr1::add_reference< 0022 typename mockitopp::detail::tr1::add_const<T>::type>::type element) 0023 : element_(element) 0024 {} 0025 0026 Matcher<T>* clone() const override 0027 { return new EqualT(element_); } 0028 0029 bool operator== (typename mockitopp::detail::tr1::add_reference< 0030 typename mockitopp::detail::tr1::add_const<T>::type>::type rhs) const override 0031 { return element_ == rhs; } 0032 0033 private: 0034 0035 T element_; 0036 }; 0037 } // namespace detail 0038 0039 template <typename T> 0040 detail::EqualT<T> equal(typename mockitopp::detail::tr1::add_reference< 0041 typename mockitopp::detail::tr1::add_const<T>::type>::type element) 0042 { return detail::EqualT<T>(element); } 0043 0044 inline detail::EqualT<std::string> equal(const char* element) 0045 { return detail::EqualT<std::string>(element); } 0046 } // namespace matcher 0047 } // namespace mockitopp 0048 0049 #endif //__MOCKITOPP_MATCHER_EQ_HPP__