// Copyright (c) 2020-now by the Zeek Project. See LICENSE for details. #pragma once #include #include #include namespace hilti { namespace operator_ { HILTI_NODE_OPERATOR(struct_, HasMember) HILTI_NODE_OPERATOR(struct_, MemberCall); HILTI_NODE_OPERATOR(struct_, MemberConst) HILTI_NODE_OPERATOR(struct_, MemberNonConst) HILTI_NODE_OPERATOR(struct_, TryMember) HILTI_NODE_OPERATOR(struct_, Unset) } // namespace operator_ namespace struct_ { class MemberCall final : public Operator { public: MemberCall(declaration::Field* fdecl); ~MemberCall() final; auto declaration() const { return _fdecl.get(); } operator_::Signature signature(Builder* builder) const final; Result instantiate(Builder* builder, Expressions operands, Meta meta) const final; std::string name() const final { return "struct::MemberCall"; } private: node::RetainedPtr _fdecl = nullptr; }; } // namespace struct_ } // namespace hilti