// 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);
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)},
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
}
}