mirror of
https://github.com/catchorg/Catch2.git
synced 2025-08-01 12:55:40 +02:00
Allow { NULL <op> T }to work
This commit is contained in:
@@ -395,65 +395,65 @@ private:
|
||||
const T& m_lhs;
|
||||
};
|
||||
|
||||
template<typename LhsT>
|
||||
class PtrExpression
|
||||
template<typename LhsT>
|
||||
class PtrExpression
|
||||
{
|
||||
public:
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
PtrExpression
|
||||
(
|
||||
MutableResultInfo& result,
|
||||
const LhsT* lhs
|
||||
)
|
||||
: m_result( result ),
|
||||
m_lhs( lhs )
|
||||
{}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
template<typename RhsT>
|
||||
MutableResultInfo& operator ==
|
||||
(
|
||||
const RhsT* rhs
|
||||
)
|
||||
{
|
||||
public:
|
||||
return m_result.captureExpression<Internal::IsEqualTo>( m_lhs, rhs );
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
PtrExpression
|
||||
(
|
||||
MutableResultInfo& result,
|
||||
const LhsT* lhs
|
||||
)
|
||||
: m_result( result ),
|
||||
m_lhs( lhs )
|
||||
{}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
template<typename RhsT>
|
||||
MutableResultInfo& operator ==
|
||||
(
|
||||
const RhsT* rhs
|
||||
)
|
||||
{
|
||||
return m_result.captureExpression<Internal::IsEqualTo>( m_lhs, rhs );
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// This catches NULL
|
||||
MutableResultInfo& operator ==
|
||||
(
|
||||
LhsT* rhs
|
||||
)
|
||||
{
|
||||
return m_result.captureExpression<Internal::IsEqualTo>( m_lhs, rhs );
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
template<typename RhsT>
|
||||
MutableResultInfo& operator !=
|
||||
(
|
||||
const RhsT* rhs
|
||||
)
|
||||
{
|
||||
return m_result.captureExpression<Internal::IsNotEqualTo>( m_lhs, rhs );
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// This catches NULL
|
||||
MutableResultInfo& operator !=
|
||||
(
|
||||
LhsT* rhs
|
||||
)
|
||||
{
|
||||
return m_result.captureExpression<Internal::IsNotEqualTo>( m_lhs, rhs );
|
||||
}
|
||||
|
||||
private:
|
||||
MutableResultInfo& m_result;
|
||||
const LhsT* m_lhs;
|
||||
};
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// This catches NULL
|
||||
MutableResultInfo& operator ==
|
||||
(
|
||||
LhsT* rhs
|
||||
)
|
||||
{
|
||||
return m_result.captureExpression<Internal::IsEqualTo>( m_lhs, rhs );
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
template<typename RhsT>
|
||||
MutableResultInfo& operator !=
|
||||
(
|
||||
const RhsT* rhs
|
||||
)
|
||||
{
|
||||
return m_result.captureExpression<Internal::IsNotEqualTo>( m_lhs, rhs );
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// This catches NULL
|
||||
MutableResultInfo& operator !=
|
||||
(
|
||||
LhsT* rhs
|
||||
)
|
||||
{
|
||||
return m_result.captureExpression<Internal::IsNotEqualTo>( m_lhs, rhs );
|
||||
}
|
||||
|
||||
private:
|
||||
MutableResultInfo& m_result;
|
||||
const LhsT* m_lhs;
|
||||
};
|
||||
|
||||
class ResultBuilder
|
||||
{
|
||||
|
@@ -216,6 +216,20 @@ namespace Internal
|
||||
{
|
||||
return applyEvaluator<Op>( static_cast<unsigned long>( lhs ), rhs, testLhsSign( lhs ) );
|
||||
}
|
||||
|
||||
template<Operator Op, typename T>
|
||||
bool compare( long lhs, const T* rhs )
|
||||
{
|
||||
return Evaluator<T*, T*, Op>::evaluate( reinterpret_cast<T*>( NULL ), rhs );
|
||||
|
||||
}
|
||||
|
||||
template<Operator Op, typename T>
|
||||
bool compare( long lhs, T* rhs )
|
||||
{
|
||||
return Evaluator<T*, T*, Op>::evaluate( reinterpret_cast<T*>( lhs ), rhs );
|
||||
|
||||
}
|
||||
|
||||
} // end of namespace Internal
|
||||
} // end of namespace Catch
|
||||
|
Reference in New Issue
Block a user