diff --git a/src/Expr.cc b/src/Expr.cc index 4d92224d64..5d289b92ea 100644 --- a/src/Expr.cc +++ b/src/Expr.cc @@ -62,6 +62,54 @@ Expr::Expr(BroExprTag arg_tag) : tag(arg_tag), type(nullptr), paren(false) SetLocationInfo(&start_location, &end_location); } +const ListExpr* Expr::AsListExpr() const + { + CHECK_TAG(tag, EXPR_LIST, "ExprVal::AsListExpr", expr_name) + return (const ListExpr*) this; + } + +ListExpr* Expr::AsListExpr() + { + CHECK_TAG(tag, EXPR_LIST, "ExprVal::AsListExpr", expr_name) + return (ListExpr*) this; + } + +const NameExpr* Expr::AsNameExpr() const + { + CHECK_TAG(tag, EXPR_NAME, "ExprVal::AsNameExpr", expr_name) + return (const NameExpr*) this; + } + +NameExpr* Expr::AsNameExpr() + { + CHECK_TAG(tag, EXPR_NAME, "ExprVal::AsNameExpr", expr_name) + return (NameExpr*) this; + } + +const AssignExpr* Expr::AsAssignExpr() const + { + CHECK_TAG(tag, EXPR_ASSIGN, "ExprVal::AsAssignExpr", expr_name) + return (const AssignExpr*) this; + } + +AssignExpr* Expr::AsAssignExpr() + { + CHECK_TAG(tag, EXPR_ASSIGN, "ExprVal::AsAssignExpr", expr_name) + return (AssignExpr*) this; + } + +const IndexExpr* Expr::AsIndexExpr() const + { + CHECK_TAG(tag, EXPR_INDEX, "ExprVal::AsIndexExpr", expr_name) + return (const IndexExpr*) this; + } + +IndexExpr* Expr::AsIndexExpr() + { + CHECK_TAG(tag, EXPR_INDEX, "ExprVal::AsIndexExpr", expr_name) + return (IndexExpr*) this; + } + bool Expr::CanAdd() const { return false; diff --git a/src/Expr.h b/src/Expr.h index 67fad1a9d5..d70fbf1635 100644 --- a/src/Expr.h +++ b/src/Expr.h @@ -161,53 +161,17 @@ public: void MarkParen() { paren = true; } bool IsParen() const { return paren; } - const ListExpr* AsListExpr() const - { - CHECK_TAG(tag, EXPR_LIST, "ExprVal::AsListExpr", expr_name) - return (const ListExpr*) this; - } + const ListExpr* AsListExpr() const; + ListExpr* AsListExpr(); - ListExpr* AsListExpr() - { - CHECK_TAG(tag, EXPR_LIST, "ExprVal::AsListExpr", expr_name) - return (ListExpr*) this; - } + const NameExpr* AsNameExpr() const; + NameExpr* AsNameExpr(); - const NameExpr* AsNameExpr() const - { - CHECK_TAG(tag, EXPR_NAME, "ExprVal::AsNameExpr", expr_name) - return (const NameExpr*) this; - } + const AssignExpr* AsAssignExpr() const; + AssignExpr* AsAssignExpr(); - NameExpr* AsNameExpr() - { - CHECK_TAG(tag, EXPR_NAME, "ExprVal::AsNameExpr", expr_name) - return (NameExpr*) this; - } - - const AssignExpr* AsAssignExpr() const - { - CHECK_TAG(tag, EXPR_ASSIGN, "ExprVal::AsAssignExpr", expr_name) - return (const AssignExpr*) this; - } - - AssignExpr* AsAssignExpr() - { - CHECK_TAG(tag, EXPR_ASSIGN, "ExprVal::AsAssignExpr", expr_name) - return (AssignExpr*) this; - } - - const IndexExpr* AsIndexExpr() const - { - CHECK_TAG(tag, EXPR_INDEX, "ExprVal::AsIndexExpr", expr_name) - return (const IndexExpr*) this; - } - - IndexExpr* AsIndexExpr() - { - CHECK_TAG(tag, EXPR_INDEX, "ExprVal::AsIndexExpr", expr_name) - return (IndexExpr*) this; - } + const IndexExpr* AsIndexExpr() const; + IndexExpr* AsIndexExpr(); void Describe(ODesc* d) const override final;