mirror of
https://github.com/zeek/zeek.git
synced 2025-10-06 16:48:19 +00:00
Remove unused FlattenExpr
This commit is contained in:
parent
6147804b36
commit
40ee59f0c3
2 changed files with 1 additions and 63 deletions
51
src/Expr.cc
51
src/Expr.cc
|
@ -37,7 +37,7 @@ const char* expr_name(BroExprTag t)
|
||||||
"$=", "in", "<<>>",
|
"$=", "in", "<<>>",
|
||||||
"()", "function()", "event", "schedule",
|
"()", "function()", "event", "schedule",
|
||||||
"coerce", "record_coerce", "table_coerce", "vector_coerce",
|
"coerce", "record_coerce", "table_coerce", "vector_coerce",
|
||||||
"sizeof", "flatten", "cast", "is", "[:]="
|
"sizeof", "cast", "is", "[:]="
|
||||||
};
|
};
|
||||||
|
|
||||||
if ( int(t) >= NUM_EXPRS )
|
if ( int(t) >= NUM_EXPRS )
|
||||||
|
@ -410,8 +410,6 @@ void UnaryExpr::ExprDescribe(ODesc* d) const
|
||||||
{
|
{
|
||||||
if ( is_coerce )
|
if ( is_coerce )
|
||||||
d->Add("(coerce ");
|
d->Add("(coerce ");
|
||||||
else if ( Tag() == EXPR_FLATTEN )
|
|
||||||
d->Add("flatten ");
|
|
||||||
else if ( Tag() != EXPR_REF )
|
else if ( Tag() != EXPR_REF )
|
||||||
d->Add(expr_name(Tag()));
|
d->Add(expr_name(Tag()));
|
||||||
}
|
}
|
||||||
|
@ -3787,53 +3785,6 @@ IntrusivePtr<Val> VectorCoerceExpr::Fold(Val* v) const
|
||||||
return make_intrusive<VectorVal>(GetType<VectorType>());
|
return make_intrusive<VectorVal>(GetType<VectorType>());
|
||||||
}
|
}
|
||||||
|
|
||||||
FlattenExpr::FlattenExpr(IntrusivePtr<Expr> arg_op)
|
|
||||||
: UnaryExpr(EXPR_FLATTEN, std::move(arg_op))
|
|
||||||
{
|
|
||||||
if ( IsError() )
|
|
||||||
return;
|
|
||||||
|
|
||||||
const auto& t = op->GetType();
|
|
||||||
|
|
||||||
if ( t->Tag() != TYPE_RECORD )
|
|
||||||
Internal("bad type in FlattenExpr::FlattenExpr");
|
|
||||||
|
|
||||||
RecordType* rt = t->AsRecordType();
|
|
||||||
num_fields = rt->NumFields();
|
|
||||||
|
|
||||||
auto tl = make_intrusive<TypeList>();
|
|
||||||
|
|
||||||
for ( int i = 0; i < num_fields; ++i )
|
|
||||||
tl->Append(rt->GetFieldType(i));
|
|
||||||
|
|
||||||
Unref(rt);
|
|
||||||
SetType(std::move(tl));
|
|
||||||
}
|
|
||||||
|
|
||||||
IntrusivePtr<Val> FlattenExpr::Fold(Val* v) const
|
|
||||||
{
|
|
||||||
RecordVal* rv = v->AsRecordVal();
|
|
||||||
auto l = make_intrusive<ListVal>(TYPE_ANY);
|
|
||||||
|
|
||||||
for ( int i = 0; i < num_fields; ++i )
|
|
||||||
{
|
|
||||||
if ( Val* fv = rv->Lookup(i) )
|
|
||||||
{
|
|
||||||
l->Append({NewRef{}, fv});
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
const RecordType* rv_t = rv->GetType()->AsRecordType();
|
|
||||||
if ( const Attr* fa = rv_t->FieldDecl(i)->FindAttr(ATTR_DEFAULT) )
|
|
||||||
l->Append(fa->AttrExpr()->Eval(nullptr));
|
|
||||||
|
|
||||||
else
|
|
||||||
RuntimeError("missing field value");
|
|
||||||
}
|
|
||||||
|
|
||||||
return l;
|
|
||||||
}
|
|
||||||
|
|
||||||
ScheduleTimer::ScheduleTimer(const EventHandlerPtr& arg_event, zeek::Args arg_args,
|
ScheduleTimer::ScheduleTimer(const EventHandlerPtr& arg_event, zeek::Args arg_args,
|
||||||
double t)
|
double t)
|
||||||
: Timer(t, TIMER_SCHEDULE),
|
: Timer(t, TIMER_SCHEDULE),
|
||||||
|
|
13
src/Expr.h
13
src/Expr.h
|
@ -50,7 +50,6 @@ enum BroExprTag : int {
|
||||||
EXPR_TABLE_COERCE,
|
EXPR_TABLE_COERCE,
|
||||||
EXPR_VECTOR_COERCE,
|
EXPR_VECTOR_COERCE,
|
||||||
EXPR_SIZE,
|
EXPR_SIZE,
|
||||||
EXPR_FLATTEN,
|
|
||||||
EXPR_CAST,
|
EXPR_CAST,
|
||||||
EXPR_IS,
|
EXPR_IS,
|
||||||
EXPR_INDEX_SLICE_ASSIGN,
|
EXPR_INDEX_SLICE_ASSIGN,
|
||||||
|
@ -735,18 +734,6 @@ protected:
|
||||||
IntrusivePtr<Val> Fold(Val* v) const override;
|
IntrusivePtr<Val> Fold(Val* v) const override;
|
||||||
};
|
};
|
||||||
|
|
||||||
// An internal operator for flattening array indices that are records
|
|
||||||
// into a list of individual values.
|
|
||||||
class FlattenExpr final : public UnaryExpr {
|
|
||||||
public:
|
|
||||||
explicit FlattenExpr(IntrusivePtr<Expr> op);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
IntrusivePtr<Val> Fold(Val* v) const override;
|
|
||||||
|
|
||||||
int num_fields;
|
|
||||||
};
|
|
||||||
|
|
||||||
class ScheduleTimer final : public Timer {
|
class ScheduleTimer final : public Timer {
|
||||||
public:
|
public:
|
||||||
ScheduleTimer(const EventHandlerPtr& event, zeek::Args args, double t);
|
ScheduleTimer(const EventHandlerPtr& event, zeek::Args args, double t);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue