static unsigned register_new(function_options const & opt);
static unsigned current_serial;
static unsigned find_function(const std::string &name, unsigned nparams);
- static std::vector<function_options> get_registered_functions() { return registered_functions(); };
unsigned get_serial() const {return serial;}
std::string get_name() const;
function::function(unsigned ser, const exvector & v, bool discardable)
: exprseq(v,discardable), serial(ser)
{
+ if ( ser >= registered_functions().size() ) {
+ throw std::runtime_error("function does not exist");
+ }
}
function::function(unsigned ser, std::auto_ptr<exvector> vp)
/** Return the print name of the function. */
std::string function::get_name() const
{
- GINAC_ASSERT(serial<registered_functions().size());
+ if ( serial >= registered_functions().size() ) {
+ throw std::runtime_error("unknown function");
+ }
return registered_functions()[serial].name;
}