Refactoring to avoid checking expression types via type enum.
This commit is contained in:
@@ -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++;
|
||||
|
Reference in New Issue
Block a user