Vita
function.cc
Go to the documentation of this file.
1
13#include "kernel/gp/function.h"
14
15namespace vita
16{
25function::function(const std::string &dis, category_t c, cvect args)
26 : symbol(dis, c), argt_(std::move(args))
27{
28 Ensures(is_valid());
29}
30
39function::function(const std::string &dis, std::size_t n_args)
40 : function(dis, 0, cvect(n_args, 0))
41{
42 Ensures(is_valid());
43}
44
52std::string function::display(format) const
53{
54 std::string args("%%1%%");
55 for (unsigned i(1); i < arity(); ++i)
56 args += ",%%" + std::to_string(i + 1) + "%%";
57
58 return name() + "(" + args + ")";
59}
60
65{
66 if (!arity()) // this is a function, we want some argument...
67 return false;
68
69 return symbol::is_valid();
70}
71
72} // namespace vita
A symbol with arity() > 0.
Definition: function.h:35
function(const std::string &, category_t, cvect)
Definition: function.cc:25
virtual std::string display(format=c_format) const
Definition: function.cc:52
unsigned arity() const final
Definition: function.h:59
bool is_valid() const override
Definition: function.cc:64
Together functions and terminals are referred to as symbols.
Definition: symbol.h:36
virtual bool is_valid() const
Definition: symbol.cc:60
std::string name() const
Definition: symbol.cc:44
format
Symbol rendering format.
Definition: symbol.h:39
The main namespace for the project.
std::size_t category_t
A category provide operations which supplement or supersede those of the domain but which are restric...
Definition: common.h:44