+/** Implementation of ex::info for functions. */
+bool function::info(unsigned inf) const
+{
+ GINAC_ASSERT(serial<registered_functions().size());
+ const function_options & opt = registered_functions()[serial];
+
+ if (opt.info_f==0) {
+ return basic::info(inf);
+ }
+
+ if (opt.info_use_exvector_args) {
+ return ((info_funcp_exvector)(opt.info_f))(seq, inf);
+ }
+
+ switch (opt.nparams) {
+ // the following lines have been generated for max. @maxargs@ parameters
++++ for N in range(1, maxargs + 1):
+ case @N@:
+ return ((info_funcp_@N@)(opt.info_f))(@seq('seq[%(n)d]', N, 0)@, inf);
+---
+ // end of generated lines
+ }
+ throw(std::logic_error("function::info(): invalid nparams"));
+}
+