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> 13 namespace expression {
28 std::vector<declaration::Parameter> parameters, std::vector<Expression> arguments,
Meta m =
Meta())
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(parameters.size()) {}
35 auto type()
const {
return child<hilti::Type>(0); };
41 auto isEqual(
const Expression& other)
const {
return node::isEqual(
this, other); }
44 auto isLhs()
const {
return false; }
52 const auto& name()
const {
return _name; }
54 const auto& cxxname()
const {
return _cxxname; }
56 auto arguments()
const {
return childs<Expression>(_num_parameters + 1, -1); }
58 const auto parameters()
const {
return childs<declaration::Parameter>(1, _num_parameters); }
72 for (
auto& a : args )
73 x.childs().emplace_back(std::move(a));
79 return lhs._cxxname == rhs._cxxname && lhs.
type() == rhs.
type() && lhs.parameters() == rhs.parameters() &&
80 lhs.arguments() == rhs.arguments();
86 size_t _num_parameters = 0;
Definition: builtin-function.h:16
std::vector< T > childs(int begin, int end) const
Definition: node.h:373
static BuiltinFunction setArguments(const BuiltinFunction &d, std::vector< hilti::Expression > args)
Definition: builtin-function.h:67
Definition: optional.h:79
auto properties() const
Definition: builtin-function.h:50
Definition: expression.h:16
auto type() const
Definition: builtin-function.h:35
std::map< std::string, node::detail::PropertyValue > Properties
Definition: node.h:83
BuiltinFunction(std::string name, std::string cxxname, hilti::Type type, std::vector< declaration::Parameter > parameters, std::vector< Expression > arguments, Meta m=Meta())
Definition: builtin-function.h:27
auto isEqual(const Expression &other) const
Definition: builtin-function.h:41
auto isLhs() const
Definition: builtin-function.h:44
auto isTemporary() const
Definition: builtin-function.h:47
bool isConstant() const
Definition: builtin-function.h:38