7 #include <hilti/ast/declarations/parameter.h> 8 #include <hilti/ast/expression.h> 9 #include <hilti/ast/node.h> 10 #include <hilti/ast/type.h> 27 const std::vector<declaration::Parameter>& parameters, std::vector<Expression> arguments,
29 :
NodeBase(nodes(
std::move(type), parameters,
std::move(arguments)),
std::move(m)),
30 _name(
std::move(name)),
31 _cxxname(
std::move(cxxname)),
32 _num_parameters(static_cast<int>(parameters.size())) {}
34 auto arguments()
const {
return children<Expression>(_num_parameters + 1, -1); }
35 auto parameters()
const {
return children<declaration::Parameter>(1, _num_parameters); }
36 const auto& cxxname()
const {
return _cxxname; }
37 const auto& name()
const {
return _name; }
39 void setArguments(std::vector<hilti::Expression> args) {
42 for (
auto& a : args )
43 children().emplace_back(std::move(a));
47 return lhs._cxxname == rhs._cxxname && lhs.
type() == rhs.
type() && lhs.parameters() == rhs.parameters() &&
48 lhs.arguments() == rhs.arguments();
52 const Type&
type()
const {
return child<hilti::Type>(0); };
56 auto isEqual(
const Expression& other)
const {
return node::isEqual(
this, other); }
58 auto isLhs()
const {
return false; }
67 int _num_parameters = 0;
Definition: builtin-function.h:15
const Type & type() const
Definition: builtin-function.h:52
Definition: optional.h:79
auto properties() const
Definition: builtin-function.h:62
const auto & children() const
Definition: node.h:472
Definition: expression.h:18
BuiltinFunction(std::string name, std::string cxxname, hilti::Type type, const std::vector< declaration::Parameter > ¶meters, std::vector< Expression > arguments, Meta m=Meta())
Definition: builtin-function.h:26
std::map< std::string, node::detail::PropertyValue > Properties
Definition: node.h:98
auto isEqual(const Expression &other) const
Definition: builtin-function.h:56
auto isLhs() const
Definition: builtin-function.h:58
auto isTemporary() const
Definition: builtin-function.h:60
bool isConstant() const
Definition: builtin-function.h:54
Definition: expression.h:21