#pragma once
#include "common/cast.h"
#include "common/enums/clause_type.h"
namespace lbug {
namespace binder {
class BoundUpdatingClause {
public:
explicit BoundUpdatingClause(common::ClauseType clauseType) : clauseType{clauseType} {}
virtual ~BoundUpdatingClause() = default;
common::ClauseType getClauseType() const { return clauseType; }
template<class TARGET>
TARGET& cast() const {
return common::dynamic_cast_checked<TARGET&>(*this);
}
template<class TARGET>
const TARGET& constCast() const {
return common::dynamic_cast_checked<const TARGET&>(*this);
}
private:
common::ClauseType clauseType;
};
} }