accessors / friends needed for compiling-to-C++

This commit is contained in:
Vern Paxson 2021-04-19 14:58:06 -07:00
parent 66fb3e0f56
commit 1ede6a8424
3 changed files with 17 additions and 5 deletions

View file

@ -747,12 +747,15 @@ 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);
void CheckAndAddName(const std::string& module_name,
const char* name, bro_int_t val, bool is_export,
detail::Expr* deprecation = nullptr,

View file

@ -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<class T, class... Ts>
friend IntrusivePtr<T> make_intrusive(Ts&&... args);

View file

@ -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)