// Original readline settings
static int orig_completion_append_character;
+#if (GINAC_RLVERSION_MAJOR < 4) || (GINAC_RLVERSION_MAJOR == 4 && GINAC_RLVERSION_MINOR < 2)
static char *orig_basic_word_break_characters;
+#else
+static const char *orig_basic_word_break_characters;
+#endif
// Expression stack for ", "" and """
static void push(const ex &e);
YYERROR;
}
}
- | '?' T_SYMBOL {print_help(ex_to_symbol($2).getname());}
+ | '?' T_SYMBOL {print_help(ex_to_symbol($2).get_name());}
| '?' T_TIME {print_help("time");}
| '?' '?' {print_help_topics();}
| T_QUIT {YYACCEPT;}
static ex f_coeff(const exprseq &e)
{
- CHECK_ARG(1, symbol, coeff);
CHECK_ARG(2, numeric, coeff);
- return e[0].coeff(ex_to_symbol(e[1]), ex_to_numeric(e[2]).to_int());
+ return e[0].coeff(e[1], ex_to_numeric(e[2]).to_int());
}
static ex f_collect(const exprseq &e)
{
- CHECK_ARG(1, symbol, collect);
- return e[0].collect(ex_to_symbol(e[1]));
+ return e[0].collect(e[1]);
+}
+
+static ex f_collect_distributed(const exprseq &e)
+{
+ return e[0].collect(e[1], true);
}
static ex f_content(const exprseq &e)
static ex f_degree(const exprseq &e)
{
- CHECK_ARG(1, symbol, degree);
- return e[0].degree(ex_to_symbol(e[1]));
+ return e[0].degree(e[1]);
}
static ex f_determinant(const exprseq &e)
if (divide(e[0], e[1], q))
return q;
else
- return *new fail();
+ return fail();
}
static ex f_eval2(const exprseq &e)
static ex f_lcoeff(const exprseq &e)
{
- CHECK_ARG(1, symbol, lcoeff);
- return e[0].lcoeff(ex_to_symbol(e[1]));
+ return e[0].lcoeff(e[1]);
}
static ex f_ldegree(const exprseq &e)
{
- CHECK_ARG(1, symbol, ldegree);
- return e[0].ldegree(ex_to_symbol(e[1]));
+ return e[0].ldegree(e[1]);
}
static ex f_normal2(const exprseq &e)
static ex f_tcoeff(const exprseq &e)
{
- CHECK_ARG(1, symbol, tcoeff);
- return e[0].tcoeff(ex_to_symbol(e[1]));
+ return e[0].tcoeff(e[1]);
}
static ex f_trace(const exprseq &e)
{"charpoly", fcn_desc(f_charpoly, 2)},
{"coeff", fcn_desc(f_coeff, 3)},
{"collect", fcn_desc(f_collect, 2)},
+ {"collect_distributed", fcn_desc(f_collect_distributed, 2)},
{"content", fcn_desc(f_content, 2)},
{"degree", fcn_desc(f_degree, 2)},
{"denom", fcn_desc(f_denom, 1)},
static fcn_tab::const_iterator find_function(const ex &sym, int req_params)
{
- const string &name = ex_to_symbol(sym).getname();
+ const string &name = ex_to_symbol(sym).get_name();
typedef fcn_tab::const_iterator I;
pair<I, I> b = fcns.equal_range(name);
if (b.first == b.second)
rl_completion_append_character = orig_completion_append_character;
rl_basic_word_break_characters = orig_basic_word_break_characters;
rl_completer_word_break_characters = rl_basic_word_break_characters;
+#if (GINAC_RLVERSION_MAJOR < 4) || (GINAC_RLVERSION_MAJOR == 4 && GINAC_RLVERSION_MINOR < 2)
return completion_matches(text, (CPFunction *)filename_completion_function);
+#else
+ return rl_completion_matches(text, (CPFunction *)rl_filename_completion_function);
+#endif
} else {
// Otherwise, complete function names
rl_completion_append_character = '(';
rl_basic_word_break_characters = " \t\n\"#$%&'()*+,-./:;<=>?@[\\]^`{|}~";
rl_completer_word_break_characters = rl_basic_word_break_characters;
+#if (GINAC_RLVERSION_MAJOR < 4) || (GINAC_RLVERSION_MAJOR == 4 && GINAC_RLVERSION_MINOR < 2)
return completion_matches(text, (CPFunction *)fcn_generator);
+#else
+ return rl_completion_matches(text, (CPFunction *)fcn_generator);
+#endif
}
}