mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 06:38:20 +00:00
sundry accessors/cast-ers; RE_Matcher's track their construction values
This commit is contained in:
parent
17affdb858
commit
d53d2ac755
8 changed files with 50 additions and 3 deletions
|
@ -96,6 +96,7 @@ class IndexAssignExpr;
|
|||
class IndexExpr;
|
||||
class IsExpr;
|
||||
class InlineExpr;
|
||||
class LambdaExpr;
|
||||
class ListExpr;
|
||||
class NameExpr;
|
||||
class RefExpr;
|
||||
|
@ -216,6 +217,7 @@ public:
|
|||
ZEEK_EXPR_ACCESSOR_DECLS(IndexExpr)
|
||||
ZEEK_EXPR_ACCESSOR_DECLS(IsExpr)
|
||||
ZEEK_EXPR_ACCESSOR_DECLS(InlineExpr)
|
||||
ZEEK_EXPR_ACCESSOR_DECLS(LambdaExpr)
|
||||
ZEEK_EXPR_ACCESSOR_DECLS(ListExpr)
|
||||
ZEEK_EXPR_ACCESSOR_DECLS(NameExpr)
|
||||
ZEEK_EXPR_ACCESSOR_DECLS(RefExpr)
|
||||
|
@ -1304,7 +1306,9 @@ public:
|
|||
LambdaExpr(std::unique_ptr<function_ingredients> ingredients,
|
||||
IDPList outer_ids);
|
||||
|
||||
const std::string& Name() const { return my_name; }
|
||||
const IDPList& OuterIDs() const { return outer_ids; }
|
||||
const function_ingredients& Ingredients() const { return *ingredients; }
|
||||
|
||||
ValPtr Eval(Frame* f) const override;
|
||||
TraversalCode Traverse(TraversalCallback* cb) const override;
|
||||
|
@ -1427,7 +1431,7 @@ class IsExpr final : public UnaryExpr {
|
|||
public:
|
||||
IsExpr(ExprPtr op, TypePtr t);
|
||||
|
||||
TypePtr TestType() const { return t; }
|
||||
const TypePtr& TestType() const { return t; }
|
||||
|
||||
// Optimization-related:
|
||||
ExprPtr Duplicate() override;
|
||||
|
|
|
@ -479,7 +479,7 @@ RE_Matcher::RE_Matcher()
|
|||
re_exact = new detail::Specific_RE_Matcher(detail::MATCH_EXACTLY);
|
||||
}
|
||||
|
||||
RE_Matcher::RE_Matcher(const char* pat)
|
||||
RE_Matcher::RE_Matcher(const char* pat) : orig_text(pat)
|
||||
{
|
||||
re_anywhere = new detail::Specific_RE_Matcher(detail::MATCH_ANYWHERE);
|
||||
re_exact = new detail::Specific_RE_Matcher(detail::MATCH_EXACTLY);
|
||||
|
@ -511,6 +511,8 @@ void RE_Matcher::MakeCaseInsensitive()
|
|||
{
|
||||
re_anywhere->MakeCaseInsensitive();
|
||||
re_exact->MakeCaseInsensitive();
|
||||
|
||||
is_case_insensitive = true;
|
||||
}
|
||||
|
||||
bool RE_Matcher::Compile(bool lazy)
|
||||
|
|
9
src/RE.h
9
src/RE.h
|
@ -197,6 +197,7 @@ public:
|
|||
|
||||
// Makes the matcher as specified to date case-insensitive.
|
||||
void MakeCaseInsensitive();
|
||||
bool IsCaseInsensitive() const { return is_case_insensitive; }
|
||||
|
||||
bool Compile(bool lazy = false);
|
||||
|
||||
|
@ -227,6 +228,10 @@ public:
|
|||
const char* PatternText() const { return re_exact->PatternText(); }
|
||||
const char* AnywherePatternText() const { return re_anywhere->PatternText(); }
|
||||
|
||||
// Original text used to construct this matcher. Empty unless
|
||||
// the main ("explicit") constructor was used.
|
||||
const char* OrigText() const { return orig_text.c_str(); }
|
||||
|
||||
unsigned int MemoryAllocation() const
|
||||
{
|
||||
return padded_sizeof(*this)
|
||||
|
@ -235,8 +240,12 @@ public:
|
|||
}
|
||||
|
||||
protected:
|
||||
std::string orig_text;
|
||||
|
||||
detail::Specific_RE_Matcher* re_anywhere;
|
||||
detail::Specific_RE_Matcher* re_exact;
|
||||
|
||||
bool is_case_insensitive = false;
|
||||
};
|
||||
|
||||
} // namespace zeek
|
||||
|
|
12
src/Type.cc
12
src/Type.cc
|
@ -147,6 +147,18 @@ FuncType* Type::AsFuncType()
|
|||
return (FuncType*) this;
|
||||
}
|
||||
|
||||
const FileType* Type::AsFileType() const
|
||||
{
|
||||
CHECK_TYPE_TAG(TYPE_FILE, "Type::AsFileType");
|
||||
return (const FileType*) this;
|
||||
}
|
||||
|
||||
FileType* Type::AsFileType()
|
||||
{
|
||||
CHECK_TYPE_TAG(TYPE_FILE, "Type::AsFileType");
|
||||
return (FileType*) this;
|
||||
}
|
||||
|
||||
const EnumType* Type::AsEnumType() const
|
||||
{
|
||||
CHECK_TYPE_TAG(TYPE_ENUM, "Type::AsEnumType");
|
||||
|
|
|
@ -219,6 +219,9 @@ public:
|
|||
const FuncType* AsFuncType() const;
|
||||
FuncType* AsFuncType();
|
||||
|
||||
const FileType* AsFileType() const;
|
||||
FileType* AsFileType();
|
||||
|
||||
const EnumType* AsEnumType() const;
|
||||
EnumType* AsEnumType();
|
||||
|
||||
|
@ -595,7 +598,8 @@ public:
|
|||
// Given an offset, returns the field's name.
|
||||
const char* FieldName(int field) const;
|
||||
|
||||
type_decl_list* Types() { return types; }
|
||||
const type_decl_list* Types() const { return types; }
|
||||
type_decl_list* Types() { return types; }
|
||||
|
||||
// Given an offset, returns the field's TypeDecl.
|
||||
const TypeDecl* FieldDecl(int field) const;
|
||||
|
|
|
@ -71,6 +71,8 @@ Val::~Val()
|
|||
CONVERTER(tag, ctype, name) \
|
||||
CONST_CONVERTER(tag, ctype, name)
|
||||
|
||||
CONVERTERS(TYPE_FUNC, FuncVal*, Val::AsFuncVal)
|
||||
CONVERTERS(TYPE_FILE, FileVal*, Val::AsFileVal)
|
||||
CONVERTERS(TYPE_PATTERN, PatternVal*, Val::AsPatternVal)
|
||||
CONVERTERS(TYPE_PORT, PortVal*, Val::AsPortVal)
|
||||
CONVERTERS(TYPE_SUBNET, SubNetVal*, Val::AsSubNetVal)
|
||||
|
|
|
@ -61,6 +61,8 @@ class PortVal;
|
|||
class AddrVal;
|
||||
class SubNetVal;
|
||||
class IntervalVal;
|
||||
class FuncVal;
|
||||
class FileVal;
|
||||
class PatternVal;
|
||||
class TableVal;
|
||||
class RecordVal;
|
||||
|
@ -143,6 +145,12 @@ UNDERLYING_ACCESSOR_DECL(PatternVal, const RE_Matcher*, AsPattern)
|
|||
UNDERLYING_ACCESSOR_DECL(TableVal, const PDict<TableEntryVal>*, AsTable)
|
||||
UNDERLYING_ACCESSOR_DECL(TypeVal, zeek::Type*, AsType)
|
||||
|
||||
FuncVal* AsFuncVal();
|
||||
const FuncVal* AsFuncVal() const;
|
||||
|
||||
FileVal* AsFileVal();
|
||||
const FileVal* AsFileVal() const;
|
||||
|
||||
PatternVal* AsPatternVal();
|
||||
const PatternVal* AsPatternVal() const;
|
||||
|
||||
|
|
|
@ -85,6 +85,12 @@ const AnyIndexExpr* Expr::AsAnyIndexExpr() const
|
|||
return (const AnyIndexExpr*) this;
|
||||
}
|
||||
|
||||
const LambdaExpr* Expr::AsLambdaExpr() const
|
||||
{
|
||||
CHECK_TAG(tag, EXPR_LAMBDA, "ExprVal::AsLambdaExpr", expr_name)
|
||||
return (const LambdaExpr*) this;
|
||||
}
|
||||
|
||||
ExprPtr Expr::GetOp1() const { return nullptr; }
|
||||
ExprPtr Expr::GetOp2() const { return nullptr; }
|
||||
ExprPtr Expr::GetOp3() const { return nullptr; }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue