26 using base = std::vector<std::shared_ptr<VarBase>>;
42 const std::shared_ptr<VarBase>& operator[](std::size_t i)
const {
return base::operator[](i); }
43 const std::shared_ptr<VarBase>& at(std::size_t i)
const {
return base::at(i); }
45 base::const_iterator begin()
const noexcept {
return base::begin(); }
46 base::const_iterator end()
const noexcept {
return base::end(); }
63 : std::vector<std::shared_ptr<
VarBase>>(args.size())
66 for(
const auto& arg : args)
67 base::operator[](i++) = arg->
arg_copy();
68 compute_unique_arg_names();
93 for(
const auto& arg : args)
94 push_back(arg.get().arg_copy());
95 compute_unique_arg_names();
99 : std::vector<std::shared_ptr<
VarBase>>(args)
101 compute_unique_arg_names();
112 return _total_args_size;
117 void compute_unique_arg_names()
119 std::list<std::string> var_names;
120 for(
const auto& arg : *
this)
121 var_names.push_back(arg->name());
123 _total_args_size = 0;
126 for(
auto& arg : *
this)
128 _total_args_size += arg->size();
129 if(arg->name() ==
"?")
131 std::string new_name;
133 new_name =
'a' + ((i++)%26);
134 }
while(std::find(var_names.begin(),var_names.end(),new_name) != var_names.end());
135 arg->_name = new_name;
140 Index _total_args_size = 0;
FunctionArgsList(const FunctionArgsList &args)
Copy constructor.
Definition codac2_FunctionArgsList.h:62
Index total_size() const
Calculates the total size of the function arguments, as the sum of the sizes of each argument.
Definition codac2_FunctionArgsList.h:110
FunctionArgsList()=default
Default constructor. It creates an empty list of arguments.
FunctionArgsList(const std::vector< std::reference_wrapper< VarBase > > &args)
Constructor to initialize a FunctionArgsList from a vector of of references to VarBase objects.
Definition codac2_FunctionArgsList.h:91
FunctionArgsList(std::initializer_list< std::reference_wrapper< VarBase > > args)
Constructor to initialize a FunctionArgsList from an initializer list of references to VarBase object...
Definition codac2_FunctionArgsList.h:79
Abstract base class for representing variables in analytic or set functions.
Definition codac2_VarBase.h:24
virtual std::shared_ptr< VarBase > arg_copy() const =0
Creates a copy of the argument.
Definition codac2_OctaSym.h:21