-
- virtual int split(void);
- virtual int shift(void);
- virtual int repeat(void);
- virtual class cl_cmd_arg *param(int num);
- virtual void insert_param(int pos, class cl_cmd_arg *param);
- virtual bool syntax_match(class cl_sim *sim, char *syntax);
- virtual bool set_data_list(class cl_cmd_arg *parm, int *iparm);
-private:
- char *skip_delims(char *start);
-};
-
-
-/*
- * Command and container
- */
-
-// simple command
-class cl_cmd: public cl_base
-{
-public:
- //class cl_sim *sim;
- class cl_strings *names;
- int can_repeat;
- char *short_help;
- char *long_help;
-
-public:
- cl_cmd(//class cl_sim *asim,
- char *aname,
- int can_rep,
- char *short_hlp,
- char *long_hlp);
- ~cl_cmd(void);
-
- virtual void add_name(char *name);
- virtual int name_match(char *aname, int strict);
- virtual int name_match(class cl_cmdline *cmdline, int strict);
- virtual int syntax_ok(class cl_cmdline *cmdline);
- virtual int work(class cl_sim *sim,
- class cl_cmdline *cmdline, class cl_console *con);
- virtual int do_work(class cl_sim *sim,
- class cl_cmdline *cmdline, class cl_console *con);
-};
-
-#define COMMAND_HEAD(CLASS_NAME) \
-class CLASS_NAME : public cl_cmd\
-{
-#define COMMAND_HEAD_ANCESTOR(CLASS_NAME,ANCESTOR) \
-class CLASS_NAME : public ANCESTOR \
-{
-
-#define COMMAND_METHODS(CLASS_NAME) \
-public:\
- CLASS_NAME (char *aname,\
- int can_rep,\
- char *chort_help,\
- char *long_help):\
- cl_cmd(aname, can_rep, short_help, long_help) {}\
- virtual int do_work(class cl_sim *sim,\
- class cl_cmdline *cmdline, class cl_console *con);
-#define COMMAND_METHODS_ANCESTOR(CLASS_NAME,ANCESTOR) \
-public:\
- CLASS_NAME (char *aname,\
- int can_rep,\
- char *chort_help,\
- char *long_help):\
- ANCESTOR (aname, can_rep, short_help, long_help) {}\
- virtual int do_work(class cl_sim *sim,\
- class cl_cmdline *cmdline, class cl_console *con);
-
-#define COMMAND_TAIL \
-}
-
-#define COMMAND(CLASS_NAME) \
-COMMAND_HEAD(CLASS_NAME) \
-COMMAND_METHODS(CLASS_NAME) \
-COMMAND_TAIL
-
-#define COMMAND_DATA(CLASS_NAME,DATA) \
-COMMAND_HEAD(CLASS_NAME) \
-public: DATA ; \
-COMMAND_METHODS(CLASS_NAME)\
-COMMAND_TAIL
-
-#define COMMAND_ANCESTOR(CLASS_NAME,ANCESTOR) \
-COMMAND_HEAD_ANCESTOR(CLASS_NAME,ANCESTOR) \
-COMMAND_METHODS_ANCESTOR(CLASS_NAME,ANCESTOR) \
-COMMAND_TAIL
-
-#define COMMAND_DATA_ANCESTOR(CLASS_NAME,ANCESTOR,DATA) \
-COMMAND_HEAD_ANCESTOR(CLASS_NAME,ANCESTOR) \
-public: DATA ; \
-COMMAND_METHODS_ANCESTOR(CLASS_NAME,ANCESTOR)\
-COMMAND_TAIL
-
-
-// Command set is list of cl_cmd objects
-class cl_cmdset: public cl_list
-{
-public:
- class cl_sim *sim;
- class cl_cmd *last_command;
-
-public:
- cl_cmdset(class cl_sim *asim);
-
- virtual class cl_cmd *get_cmd(class cl_cmdline *cmdline);
- virtual class cl_cmd *get_cmd(char *cmd_name);
- virtual void del(char *name);
- virtual void replace(char *name, class cl_cmd *cmd);