#include <readline/readline.h>
#include <readline/history.h>
+#include "alloc.h"
#include "debug.h"
-#include "parser.h"
+#include "element.h"
#include "readline.h"
free (buffer);
}
}
+
+/* generate completion list */
+
+char **generate_completion_list ()
+{
+ int i, j, l = 0;
+ char **list = (char **) callocordie (NB_OPERATORS + NB_FUNCTIONS + NB_CONSTANTS + NB_SYMBOLS + 1, sizeof (char *));
+
+ for (i = 0; i < NB_OPERATORS; i++) {
+ list[l] = strdup ((operators + i)->keyword);
+ for (j = 0; j < (int)strlen (list[l]); j++) {
+ if (list[i][j] == '\t') {
+ list[i][j] = '\0';
+ }
+ }
+ if (list[l] != NULL) {
+ l++;
+ }
+ }
+
+ for (i = 0; i < NB_FUNCTIONS; i++) {
+ list[l] = strdup ((functions + i)->keyword);
+ if (list[l] != NULL) {
+ l++;
+ }
+ }
+
+ for (i = 0; i < NB_CONSTANTS; i++) {
+ list[l] = strdup ((constants + i)->keyword);
+ if (list[l] != NULL) {
+ l++;
+ }
+ }
+
+ for (i = 0; i < NB_SYMBOLS; i++) {
+ list[l] = strdup (symbols[i]);
+ if (list[l] != NULL) {
+ l++;
+ }
+ }
+
+ return (list);
+}
+
+/* free completion list */
+
+void free_completion_list (char **list)
+{
+ int i;
+
+ if (list) {
+ for (i = 0; i < NB_OPERATORS + NB_FUNCTIONS + NB_CONSTANTS + NB_SYMBOLS + 1; i++) {
+ if (list[i] != NULL) {
+ free (list[i]);
+ }
+ }
+ free (list);
+ }
+}
+
+/* vim: set ts=4 sw=4 et: */