mirror of
https://github.com/zeek/zeek.git
synced 2025-10-09 01:58:20 +00:00
additional converters and accessors for Expr subclasses
This commit is contained in:
parent
64eb229880
commit
9b549e4034
3 changed files with 48 additions and 0 deletions
|
@ -159,6 +159,12 @@ EventExprPtr Expr::AsEventExprPtr()
|
||||||
return {NewRef{}, (EventExpr*) this};
|
return {NewRef{}, (EventExpr*) this};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const RefExpr* Expr::AsRefExpr() const
|
||||||
|
{
|
||||||
|
CHECK_TAG(tag, EXPR_REF, "ExprVal::AsRefExpr", expr_name)
|
||||||
|
return (const RefExpr*) this;
|
||||||
|
}
|
||||||
|
|
||||||
RefExprPtr Expr::AsRefExprPtr()
|
RefExprPtr Expr::AsRefExprPtr()
|
||||||
{
|
{
|
||||||
CHECK_TAG(tag, EXPR_REF, "ExprVal::AsRefExpr", expr_name)
|
CHECK_TAG(tag, EXPR_REF, "ExprVal::AsRefExpr", expr_name)
|
||||||
|
|
12
src/Expr.h
12
src/Expr.h
|
@ -84,14 +84,19 @@ enum BroExprTag : int {
|
||||||
|
|
||||||
extern const char* expr_name(BroExprTag t);
|
extern const char* expr_name(BroExprTag t);
|
||||||
|
|
||||||
|
class AddToExpr;
|
||||||
class AssignExpr;
|
class AssignExpr;
|
||||||
class CallExpr;
|
class CallExpr;
|
||||||
class ConstExpr;
|
class ConstExpr;
|
||||||
class EventExpr;
|
class EventExpr;
|
||||||
class FieldAssignExpr;
|
class FieldAssignExpr;
|
||||||
class FieldExpr;
|
class FieldExpr;
|
||||||
|
class FieldLHSAssignExpr;
|
||||||
class ForExpr;
|
class ForExpr;
|
||||||
|
class HasFieldExpr;
|
||||||
|
class IndexAssignExpr;
|
||||||
class IndexExpr;
|
class IndexExpr;
|
||||||
|
class InlineExpr;
|
||||||
class ListExpr;
|
class ListExpr;
|
||||||
class NameExpr;
|
class NameExpr;
|
||||||
class RefExpr;
|
class RefExpr;
|
||||||
|
@ -200,14 +205,19 @@ public:
|
||||||
ctype* As ## ctype (); \
|
ctype* As ## ctype (); \
|
||||||
IntrusivePtr<ctype> As ## ctype ## Ptr ();
|
IntrusivePtr<ctype> As ## ctype ## Ptr ();
|
||||||
|
|
||||||
|
ZEEK_EXPR_ACCESSOR_DECLS(AddToExpr)
|
||||||
ZEEK_EXPR_ACCESSOR_DECLS(AssignExpr)
|
ZEEK_EXPR_ACCESSOR_DECLS(AssignExpr)
|
||||||
ZEEK_EXPR_ACCESSOR_DECLS(CallExpr)
|
ZEEK_EXPR_ACCESSOR_DECLS(CallExpr)
|
||||||
ZEEK_EXPR_ACCESSOR_DECLS(ConstExpr)
|
ZEEK_EXPR_ACCESSOR_DECLS(ConstExpr)
|
||||||
ZEEK_EXPR_ACCESSOR_DECLS(EventExpr)
|
ZEEK_EXPR_ACCESSOR_DECLS(EventExpr)
|
||||||
ZEEK_EXPR_ACCESSOR_DECLS(FieldAssignExpr)
|
ZEEK_EXPR_ACCESSOR_DECLS(FieldAssignExpr)
|
||||||
ZEEK_EXPR_ACCESSOR_DECLS(FieldExpr)
|
ZEEK_EXPR_ACCESSOR_DECLS(FieldExpr)
|
||||||
|
ZEEK_EXPR_ACCESSOR_DECLS(FieldLHSAssignExpr)
|
||||||
ZEEK_EXPR_ACCESSOR_DECLS(ForExpr)
|
ZEEK_EXPR_ACCESSOR_DECLS(ForExpr)
|
||||||
|
ZEEK_EXPR_ACCESSOR_DECLS(HasFieldExpr)
|
||||||
|
ZEEK_EXPR_ACCESSOR_DECLS(IndexAssignExpr)
|
||||||
ZEEK_EXPR_ACCESSOR_DECLS(IndexExpr)
|
ZEEK_EXPR_ACCESSOR_DECLS(IndexExpr)
|
||||||
|
ZEEK_EXPR_ACCESSOR_DECLS(InlineExpr)
|
||||||
ZEEK_EXPR_ACCESSOR_DECLS(ListExpr)
|
ZEEK_EXPR_ACCESSOR_DECLS(ListExpr)
|
||||||
ZEEK_EXPR_ACCESSOR_DECLS(NameExpr)
|
ZEEK_EXPR_ACCESSOR_DECLS(NameExpr)
|
||||||
ZEEK_EXPR_ACCESSOR_DECLS(RefExpr)
|
ZEEK_EXPR_ACCESSOR_DECLS(RefExpr)
|
||||||
|
@ -1303,6 +1313,8 @@ public:
|
||||||
LambdaExpr(std::unique_ptr<function_ingredients> ingredients,
|
LambdaExpr(std::unique_ptr<function_ingredients> ingredients,
|
||||||
IDPList outer_ids);
|
IDPList outer_ids);
|
||||||
|
|
||||||
|
IDPList OuterIDs() const { return outer_ids; }
|
||||||
|
|
||||||
ValPtr Eval(Frame* f) const override;
|
ValPtr Eval(Frame* f) const override;
|
||||||
TraversalCode Traverse(TraversalCallback* cb) const override;
|
TraversalCode Traverse(TraversalCallback* cb) const override;
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,12 @@ ConstExpr* Expr::AsConstExpr()
|
||||||
return (ConstExpr*) this;
|
return (ConstExpr*) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const FieldExpr* Expr::AsFieldExpr() const
|
||||||
|
{
|
||||||
|
CHECK_TAG(tag, EXPR_FIELD, "ExprVal::AsFieldExpr", expr_name)
|
||||||
|
return (const FieldExpr*) this;
|
||||||
|
}
|
||||||
|
|
||||||
FieldExpr* Expr::AsFieldExpr()
|
FieldExpr* Expr::AsFieldExpr()
|
||||||
{
|
{
|
||||||
CHECK_TAG(tag, EXPR_FIELD, "ExprVal::AsFieldExpr", expr_name)
|
CHECK_TAG(tag, EXPR_FIELD, "ExprVal::AsFieldExpr", expr_name)
|
||||||
|
@ -37,6 +43,30 @@ IntrusivePtr<FieldAssignExpr> Expr::AsFieldAssignExprPtr()
|
||||||
return {NewRef{}, (FieldAssignExpr*) this};
|
return {NewRef{}, (FieldAssignExpr*) this};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const IndexAssignExpr* Expr::AsIndexAssignExpr() const
|
||||||
|
{
|
||||||
|
CHECK_TAG(tag, EXPR_INDEX_ASSIGN, "ExprVal::AsIndexAssignExpr", expr_name)
|
||||||
|
return (const IndexAssignExpr*) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
const FieldLHSAssignExpr* Expr::AsFieldLHSAssignExpr() const
|
||||||
|
{
|
||||||
|
CHECK_TAG(tag, EXPR_FIELD_LHS_ASSIGN, "ExprVal::AsFieldLHSAssignExpr", expr_name)
|
||||||
|
return (const FieldLHSAssignExpr*) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
const HasFieldExpr* Expr::AsHasFieldExpr() const
|
||||||
|
{
|
||||||
|
CHECK_TAG(tag, EXPR_HAS_FIELD, "ExprVal::AsHasFieldExpr", expr_name)
|
||||||
|
return (const HasFieldExpr*) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
const AddToExpr* Expr::AsAddToExpr() const
|
||||||
|
{
|
||||||
|
CHECK_TAG(tag, EXPR_ADD_TO, "ExprVal::AsAddToExpr", expr_name)
|
||||||
|
return (const AddToExpr*) this;
|
||||||
|
}
|
||||||
|
|
||||||
ExprPtr Expr::GetOp1() const { return nullptr; }
|
ExprPtr Expr::GetOp1() const { return nullptr; }
|
||||||
ExprPtr Expr::GetOp2() const { return nullptr; }
|
ExprPtr Expr::GetOp2() const { return nullptr; }
|
||||||
ExprPtr Expr::GetOp3() const { return nullptr; }
|
ExprPtr Expr::GetOp3() const { return nullptr; }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue