Spicy
generic.h
1 // Copyright (c) 2020-now by the Zeek Project. See LICENSE for details.
2 
3 #pragma once
4 
5 #include <string>
6 
7 #include <hilti/ast/operators/common.h>
8 
9 namespace hilti {
10 
11 namespace operator_ {
12 HILTI_NODE_OPERATOR(generic, CastedCoercion);
13 HILTI_NODE_OPERATOR(generic, Pack)
14 HILTI_NODE_OPERATOR(generic, Unpack)
15 HILTI_NODE_OPERATOR(generic, Begin)
16 HILTI_NODE_OPERATOR(generic, End)
17 HILTI_NODE_OPERATOR(generic, New)
18 } // namespace operator_
19 
20 namespace generic {
21 
27 class CastedCoercion final : public Operator {
28 public:
29  CastedCoercion() : Operator(Meta(), false) {}
30  ~CastedCoercion() final;
31 
32  operator_::Signature signature(Builder* builder) const final;
33  QualifiedType* result(Builder* builder, const Expressions& operands, const Meta& meta) const final;
34  Result<expression::ResolvedOperator*> instantiate(Builder* builder, Expressions operands, Meta meta) const final;
35 
36  std::string name() const final { return "generic::CastedCoercion"; }
37 };
38 
39 } // namespace generic
40 } // namespace hilti
Definition: builder.h:36
Definition: meta.h:30
Definition: operator.h:269
Operator(Meta meta=Meta(), bool builtin=true)
Definition: operator.h:281
auto operands() const
Definition: operator.h:318
const auto & signature() const
Definition: operator.h:303
const auto & meta() const
Definition: operator.h:330
Definition: type.h:362
Definition: generic.h:27
std::string name() const final
Definition: generic.h:36
Result< expression::ResolvedOperator * > instantiate(Builder *builder, Expressions operands, Meta meta) const final
Definition: generic.cc:47
QualifiedType * result(Builder *builder, const Expressions &operands, const Meta &meta) const final
Definition: generic.cc:43
Definition: result.h:71
Definition: operator.h:184