X-Git-Url: https://secure.softndesign.org/git/?a=blobdiff_plain;f=parser.c;h=b4381ac338dab2381eab0516100b276ad4779939;hb=b9c1c40d714a293c6cbee5063b5e00de8ccacbe8;hp=c023a6e959a5fe6fb3f86f76fba752bb97a0745b;hpb=4e3d2e0421e6ea72542e80e994cc37bea01dd8d1;p=calc.git diff --git a/parser.c b/parser.c index c023a6e..b4381ac 100644 --- a/parser.c +++ b/parser.c @@ -2,6 +2,7 @@ #include #include #include +#include #include "debug.h" @@ -627,7 +628,9 @@ void help (void) fprintf (stdout, "logical operators:"); fprintf (stdout, " & | !\n"); fprintf (stdout, "mathematic functions:"); - fprintf (stdout, " pow sqrt cos sin tan acos asin atan log exp\n"); + fprintf (stdout, " pow sqrt log exp\n"); + fprintf (stdout, "trigonometric functions:"); + fprintf (stdout, " cos sin tan acos asin atan\n"); fprintf (stdout, "supported functions:"); fprintf (stdout, " abs ceil floor\n"); fprintf (stdout, "storage functions:"); @@ -797,4 +800,49 @@ double evaluate_element (element_t *root, char mask) return 0; } +char **generate_completion_list () +{ + int i, l = 0; + char **list = (char **) calloc (NB_FUNCTIONS + NB_CONSTANTS + 1, sizeof (char *)); + if (list == NULL) { + VERBOSE (ERROR, fprintf (stderr, "can't allocate memory\n")); + exit (1); + } + + for (i = 0; i < NB_FUNCTIONS; i++) { + list[l] = strdup ((functions + i)->keyword); + if (list[l] == NULL) { + VERBOSE (ERROR, fprintf (stderr, "can't allocate memory\n")); + exit (1); + } + l++; + } + + for (i = 0; i < NB_CONSTANTS; i++) { + list[l] = strdup ((constants + i)->keyword); + if (list[l] == NULL) { + VERBOSE (ERROR, fprintf (stderr, "can't allocate memory\n")); + exit (1); + } + l++; + } + + return (list); +} + +void free_completion_list (char **list) +{ + int i; + + if (list) { + for (i = 0; i < NB_FUNCTIONS + NB_CONSTANTS; i++) { + if (list[i] != NULL) { + free (list[i]); + } + } + free (list); + } +} + + /* vim: set ts=4 sw=4 et: */