13#if !defined(ULTRA_FUNCTION_H)
14#define ULTRA_FUNCTION_H
57 function(
const std::string &, std::size_t);
62 [[nodiscard]]
std::
size_t arity() const noexcept;
91 [[nodiscard]]
bool is_valid() const override;
Definition function.h:108
virtual value_t fetch_opaque_arg(std::size_t) const =0
value_t operator[](std::size_t i) const
Definition function.h:130
virtual value_t fetch_arg(std::size_t) const =0
const param_data_types & categories() const noexcept
Definition function.cc:83
bool is_valid() const override
Definition function.cc:110
std::vector< category_t > param_data_types
Definition function.h:49
function(const std::string &, return_type, param_data_types)
Definition function.cc:27
category_t return_type
Type used to describe the return category of the function.
Definition function.h:52
std::size_t arity() const noexcept
Definition function.cc:55
virtual value_t eval(const params &) const =0
category_t param_category(std::size_t) const noexcept
Definition function.cc:69
virtual std::string to_string(format=c_format) const override
Definition function.cc:96
format
Supported rendering formats for symbol stringification.
Definition symbol.h:72
unsigned category_t
Definition symbol.h:55
symbol(const std::string &, category_t=default_category)
Definition symbol.cc:30
std::variant< D_VOID, D_INT, D_DOUBLE, D_STRING, const D_NULLARY *, D_ADDRESS, const D_VARIABLE *, D_IVECTOR > value_t
Definition value.h:54