Refactoring to avoid checking expression types via type enum.

This commit is contained in:
2016-12-07 02:11:54 +01:00
parent 3b110c0b8a
commit 692d3fe83a
5 changed files with 137 additions and 133 deletions

View File

@@ -130,6 +130,9 @@ class Expression
virtual Type expressionType() const = 0;
template<class T>
bool is() const;
virtual ExpressionPointer copy();
// Transform into a normal form as used for the translation to ASP
@@ -161,6 +164,14 @@ class Expression
////////////////////////////////////////////////////////////////////////////////////////////////////
template<class T>
bool Expression::is() const
{
return expressionType() == T::ExpressionType;
}
////////////////////////////////////////////////////////////////////////////////////////////////////
inline void intrusive_ptr_add_ref(Expression *expression)
{
expression->m_referenceCount++;