X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fcommand.h;h=ec51f658689861494a1b94130d91825c73edac3c;hb=29e712969d0d5bc1ee20458309dee7df2c38f1ae;hp=ba14c0bb4418880c603ab38cd9ca028197e25d22;hpb=dcf9b154cbcaa35c3d8459a201b77eec8bcb30bd;p=pspp-builds.git diff --git a/src/language/command.h b/src/language/command.h index ba14c0bb..ec51f658 100644 --- a/src/language/command.h +++ b/src/language/command.h @@ -1,5 +1,5 @@ /* PSPP - computes sample statistics. - Copyright (C) 1997-9, 2000 Free Software Foundation, Inc. + Copyright (C) 1997-9, 2000, 2006 Free Software Foundation, Inc. Written by Ben Pfaff . This program is free software; you can redistribute it and/or @@ -17,52 +17,54 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -#if !command_h -#define command_h 1 +#ifndef COMMAND_H +#define COMMAND_H 1 -/* Current program state. */ -enum - { - STATE_INIT, /* Initialization state. */ - STATE_INPUT, /* Input state. */ - STATE_TRANS, /* Transformation state. */ - STATE_PROC, /* Procedure state. */ - STATE_ERROR /* Invalid state transition. */ - }; +#include /* Command return values. */ -enum +enum cmd_result { /* Successful return values. */ - CMD_SUCCESS = 0x1000, /* Successfully parsed and executed. */ - CMD_EOF, /* Requested exit. */ + CMD_SUCCESS = 1, /* Successfully parsed and executed. */ + 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, in increasing order of severity. */ - CMD_TRAILING_GARBAGE, /* Followed by garbage. */ - CMD_PART_SUCCESS, /* Fully executed up to error. */ - CMD_PART_SUCCESS_MAYBE, /* May have been partially executed. */ - CMD_FAILURE, /* Not executed at all. */ - CMD_CASCADING_FAILURE /* Serious error: don't continue. */ + /* Various kinds of failures. */ + CMD_FAILURE = -1, /* Not executed at all. */ + CMD_NOT_IMPLEMENTED = -2, /* Command not implemented. */ + CMD_CASCADING_FAILURE = -3 /* Serious error: don't continue. */ }; -extern int pgm_state; +bool cmd_result_is_success (enum cmd_result); +bool cmd_result_is_failure (enum cmd_result); + +/* Command processing state. */ +enum cmd_state + { + CMD_STATE_INITIAL, /* No active file yet defined. */ + CMD_STATE_DATA, /* Active file has been defined. */ + CMD_STATE_INPUT_PROGRAM, /* Inside INPUT PROGRAM. */ + CMD_STATE_FILE_TYPE /* Inside FILE TYPE. */ + }; -char *pspp_completion_function (const char *text, int state); +#if HAVE_READLINE +char **pspp_attempted_completion_function (const char *, int start, int end); +#endif -int cmd_parse (void); +enum cmd_result cmd_parse (enum cmd_state); /* Prototype all the command functions. */ -#define DEFCMD(NAME, T1, T2, T3, T4, FUNC) \ - int FUNC (void); -#define SPCCMD(NAME, T1, T2, T3, T4, FUNC) \ - int FUNC (void); -#define DBGCMD(NAME, T1, T2, T3, T4, FUNC) \ - int FUNC (void); -#define UNIMPL(NAME, T1, T2, T3, T4, DESC) +#define DEF_CMD(STATES, FLAGS, NAME, FUNCTION) int FUNCTION (void); +#define UNIMPL_CMD(NAME, DESCRIPTION) #include "command.def" -#undef DEFCMD -#undef SPCCMD -#undef UNIMPL -#undef DBGCMD +#undef DEF_CMD +#undef UNIMPL_CMD -#endif /* !command_h */ +#endif /* command.h */