diff --git a/src/Type.h b/src/Type.h index 43eefdd4c9..d75168b9f2 100644 --- a/src/Type.h +++ b/src/Type.h @@ -747,11 +747,14 @@ public: const EnumValPtr& GetEnumVal(bro_int_t i); + // Only for use by C++-generated code. Non-protected because we + // don't know in advance the names of the functions that will + // access it. + void AddNameInternal(const std::string& full_name, bro_int_t val); + protected: void AddNameInternal(const std::string& module_name, - const char* name, bro_int_t val, bool is_export); - - void AddNameInternal(const std::string& full_name, bro_int_t val); + const char* name, bro_int_t val, bool is_export); void CheckAndAddName(const std::string& module_name, const char* name, bro_int_t val, bool is_export, diff --git a/src/Val.h b/src/Val.h index 979460cefa..27f0034260 100644 --- a/src/Val.h +++ b/src/Val.h @@ -450,10 +450,11 @@ public: // Returns a masked port number static uint32_t Mask(uint32_t port_num, TransportProto port_type); -protected: - friend class ValManager; + // Only meant for use by ValManager and compiled-to-C++ script + // functions. PortVal(uint32_t p); +protected: void ValDescribe(ODesc* d) const override; ValPtr DoClone(CloneState* state) override; @@ -1435,6 +1436,8 @@ protected: friend class Val; friend class EnumType; + friend EnumValPtr make_enum__CPP(TypePtr t, int i); + template friend IntrusivePtr make_intrusive(Ts&&... args); diff --git a/src/script_opt/Expr.cc b/src/script_opt/Expr.cc index d77f20ea22..a18c9fac74 100644 --- a/src/script_opt/Expr.cc +++ b/src/script_opt/Expr.cc @@ -85,6 +85,12 @@ const AnyIndexExpr* Expr::AsAnyIndexExpr() const return (const AnyIndexExpr*) this; } +LambdaExpr* Expr::AsLambdaExpr() + { + CHECK_TAG(tag, EXPR_LAMBDA, "ExprVal::AsLambdaExpr", expr_name) + return (LambdaExpr*) this; + } + const LambdaExpr* Expr::AsLambdaExpr() const { CHECK_TAG(tag, EXPR_LAMBDA, "ExprVal::AsLambdaExpr", expr_name)