This opnum API allows us to check the type of nodes without using
dynamic_cast.
Signed-off-by: Jonghyun Park <jh1302.park@samsung.com>
{
virtual ~CanonicalNodeImpl() = default;
+ uint32_t opnum(void) const final { return static_cast<uint32_t>(Code); }
CanonicalOpcode opcode(void) const final { return Code; }
};
*/
virtual const Dialect *dialect(void) const = 0;
+ virtual uint32_t opnum(void) const = 0;
+
public:
/// @brief Return the number of arguments
virtual uint32_t arity(void) const = 0;
public:
const loco::Dialect *dialect(void) const final { return MockDialect::get(); }
+ uint32_t opnum(void) const final { return 0; }
uint32_t arity(void) const final { return 1; }
Node *arg(uint32_t N) const final { return _arg.node(); }
struct DerivedNode final : public loco::FixedArityNode<1, loco::Node>
{
loco::Dialect *dialect(void) const final { return MockDialect::get(); }
+ uint32_t opnum(void) const final { return 0; }
};
DerivedNode node;