Encapsulated lexer and updated calling functions accordingly.
[pspp-builds.git] / src / language / command.h
index 0c4a5eac5a0473ac167dc634f09d66f4cceea30e..e38707ddbe74257018f09083b22d649a8409150a 100644 (file)
@@ -27,14 +27,19 @@ enum cmd_result
   {
     /* Successful return values. */
     CMD_SUCCESS = 1,            /* Successfully parsed and executed. */
-    CMD_EOF,                    /* No commands left. */
-    CMD_QUIT,                   /* Requested exit. */
-    CMD_END_SUBLOOP,            /* End of INPUT PROGRAM. */
+    CMD_EOF = 2,                /* End of input. */
+    CMD_FINISH = 3,             /* FINISH was executed. */
+
+    /* Range of successful return values available for use
+       by agreement between a command and the caller of
+       cmd_parse(). */
+    CMD_PRIVATE_FIRST = 4,      
+    CMD_PRIVATE_LAST = 127,      
 
     /* Various kinds of failures. */
-    CMD_FAILURE,                /* Not executed at all. */
-    CMD_NOT_IMPLEMENTED,        /* Command not implemented. */
-    CMD_CASCADING_FAILURE       /* Serious error: don't continue. */
+    CMD_FAILURE = -1,           /* Not executed at all. */
+    CMD_NOT_IMPLEMENTED = -2,   /* Command not implemented. */
+    CMD_CASCADING_FAILURE = -3  /* Serious error: don't continue. */
   };
 
 bool cmd_result_is_success (enum cmd_result);
@@ -49,14 +54,18 @@ enum cmd_state
     CMD_STATE_FILE_TYPE         /* Inside FILE TYPE. */
   };
 
-#if HAVE_READLINE
-char **pspp_attempted_completion_function (const char *, int start, int end);
-#endif
+struct dataset;
+struct lexer; 
+
+enum cmd_result cmd_parse (struct lexer *lexer, struct dataset *ds, enum cmd_state);
+
+struct command;
+const char *cmd_complete (const char *, const struct command **);
 
-enum cmd_result cmd_parse (enum cmd_state);
+struct dataset;
 
 /* Prototype all the command functions. */
-#define DEF_CMD(STATES, FLAGS, NAME, FUNCTION) int FUNCTION (void);
+#define DEF_CMD(STATES, FLAGS, NAME, FUNCTION) int FUNCTION (struct lexer *, struct dataset *);
 #define UNIMPL_CMD(NAME, DESCRIPTION)
 #include "command.def"
 #undef DEF_CMD