1/*
2    This file is part of GNU APL, a free implementation of the
3    ISO/IEC Standard 13751, "Programming Language APL, Extended"
4
5    Copyright (C) 2008-2015  Dr. Jürgen Sauermann
6
7    This program is free software: you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation, either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.
19*/
20
21
22// definition of APL commands and the functions that implement them
23
24cmd_def(")CHECK"    , cmd_CHECK(out);                       , ""                        , EH_NO_PARAM)
25cmd_def(")CLEAR"    , Workspace::clear_WS(out, false);      , ""                        , EH_NO_PARAM)
26cmd_def(")CONTINUE" , cmd_CONTINUE(out);                    , ""                        , EH_NO_PARAM)
27cmd_def(")COPY"     , Command::cmd_COPY(out, args, false); , "[lib] wsname [object ...]", EH_oLIB_WSNAME)
28cmd_def(")DROP"     , cmd_DROP(out, args);                  , "[lib] wsname"            , EH_oLIB_WSNAME)
29cmd_def(")DUMP-HTML", Command::cmd_DUMP(out, args, true,  false);, "[[lib] wsname]"     , EH_oLIB_WSNAME)
30cmd_def(")DUMPV"    , Command::cmd_DUMP(out, args, false, false);, "[[lib] wsname]"     , EH_oLIB_WSNAME)
31cmd_def(")DUMP"     , Command::cmd_DUMP(out, args, false, true); , "[[lib] wsname]"     , EH_oLIB_WSNAME)
32cmd_def(")ERASE"    , cmd_ERASE(out, args);                , "symbol ..."               , EH_SYMBOLS)
33cmd_def(")FNS"      , Workspace::list(out, LIST_FUNS, arg); , "[from-to]"               , EH_oFROM_oTO)
34cmd_def(")HELP"     , cmd_HELP(out, arg);                   , "[primitive]"             , EH_PRIMITIVE)
35cmd_def(")HIST"     , cmd_HISTORY(out, arg);                , "[CLEAR]"                 , EH_oCLEAR)
36cmd_def(")HOST"     , cmd_HOST(out, arg);                   , "command ..."             , EH_HOSTCMD)
37cmd_def(")IN"       , cmd_IN(out, args, false);             , "filename [object ...]"   , EH_FILENAME)
38cmd_def(")LIBS"     , cmd_LIBS(out, args);                  , "[[lib] path]"            , EH_oLIB_oPATH)
39cmd_def(")LIB"      , cmd_LIB1(out, args);                  , "[lib|path] [from-to]"    , EH_DIR_OR_LIB)
40cmd_def(")LOAD"     , Command::cmd_LOAD(out, args, line, false); , "[lib] wsname"       , EH_oLIB_WSNAME)
41cmd_def(")MORE"     , cmd_MORE(out);                        , ""                        , EH_NO_PARAM)
42cmd_def(")NMS"      , Workspace::list(out, LIST_NAMES, arg);, "[from-to]"               , EH_oFROM_oTO)
43cmd_def(")OFF"      , cmd_OFF(0);                           , ""                        , EH_NO_PARAM)
44cmd_def(")OPS"      , Workspace::list(out, LIST_OPERS, arg);, "[from-to]"               , EH_oFROM_oTO)
45cmd_def(")OUT"      , cmd_OUT(out, args);                   , "filename [object ...]"   , EH_FILENAME)
46cmd_def(")PCOPY"    , Command::cmd_COPY(out, args, true);  , "[lib] wsname [object ...]", EH_oLIB_WSNAME)
47cmd_def(")PIN"      , cmd_IN(out, args, true);              , "filename [object ...]"   , EH_FILENAME)
48cmd_def(")QLOAD"    , Command::cmd_LOAD(out, args, line, true); , "[lib] wsname"        , EH_oLIB_WSNAME)
49cmd_def(")RESET"    , Workspace::clear_SI(out);             , ""                        , EH_NO_PARAM)
50cmd_def(")SAVE"     , Command::cmd_SAVE(out, args);        , "[[lib] wsname]"           , EH_oLIB_WSNAME)
51cmd_def(")SIC"      , Workspace::clear_SI(out);             , ""                        , EH_NO_PARAM)
52cmd_def(")SINL"     , Workspace::list_SI(out, SIM_SINL);    , ""                        , EH_NO_PARAM)
53cmd_def(")SIS"      , Workspace::list_SI(out, SIM_SIS);     , ""                        , EH_NO_PARAM)
54cmd_def(")SI"       , Workspace::list_SI(out, SIM_SI);      , ""                        , EH_NO_PARAM)
55cmd_def(")SYMBOLS"  , Workspace::list(out, LIST_NONE, arg); , "[count]"                 , EH_COUNT)
56cmd_def(")VALUES"   , Value::list_all(out, false);          , ""                        , EH_NO_PARAM)
57cmd_def(")VARS"     , Workspace::list(out, LIST_VARS, arg); , "[from-to]"               , EH_oFROM_oTO)
58cmd_def(")WSID"     , Workspace::wsid(out, arg, LIB_WSNAME, false); , "[wsname]"        , EH_oWSNAME)
59
60cmd_def("]BOXING"   , cmd_BOXING(out, arg);                 , "[OFF|2|3|4|7|8|9]"       , EH_BOXING)
61cmd_def("]COLOR"    , cmd_XTERM(out, arg)                   , "[ON|OFF]"                , EH_oON_OFF)
62cmd_def("]DOXY"     , cmd_DOXY(out, args);                  , "[path]"                  , EH_oPATH)
63cmd_def("]EXPECT"   , IO_Files::expect_apl_errors(arg);     , "error_count"             , EH_COUNT)
64cmd_def("]HELP"     , cmd_HELP(out, arg);                   , "[primitive]"             , EH_PRIMITIVE)
65cmd_def("]KEYB"     , cmd_KEYB(out);                        , ""                        , EH_NO_PARAM)
66cmd_def("]LIB"      , cmd_LIB2(out, args);                  , "[lib|path] [from-to]"    , EH_DIR_OR_LIB)
67cmd_def("]LOG"      , cmd_LOG(out, arg);                    , "[facility [ON|OFF]]"     , EH_LOG_NUM)
68cmd_def("]NEXTFILE" , IO_Files::next_file();                , ""                        , EH_NO_PARAM)
69cmd_def("]OWNERS"   , Value::list_all(out, true);           , ""                        , EH_NO_PARAM)
70cmd_def("]PSTAT"    , cmd_PSTAT(out, arg);                  , "[CLEAR|SAVE]"            , EH_oCLEAR_SAVE)
71cmd_def("]SIS"      , Workspace::list_SI(out, SIM_SIS_dbg); , ""                        , EH_NO_PARAM)
72cmd_def("]SI"       , Workspace::list_SI(out, SIM_SI_dbg);  , ""                        , EH_NO_PARAM)
73cmd_def("]SVARS"    , Svar_DB::print(out);                  , ""                        , EH_NO_PARAM)
74cmd_def("]SYMBOL"   , Workspace::get_symbol_table().list_symbol(out, arg); , "symbol"   , EH_SYMNAME)
75cmd_def("]USERCMD"  , cmd_USERCMD(out, arg, args);          , "[ ]ucmd APL_fun [mode]"  , EH_UCOMMAND)
76cmd_def("        "  , {}                                    , ""                        , EH_NO_PARAM)
77cmd_def("        "  , {}                                    , "| ]ucmd { ... }"         , EH_NO_PARAM)
78cmd_def("        "  , {}                                    , ""                        , EH_NO_PARAM)
79cmd_def("        "  , {}                                    , "| REMOVE ]ucmd"          , EH_NO_PARAM)
80cmd_def("        "  , {}                                    , ""                        , EH_NO_PARAM)
81cmd_def("        "  , {}                                    , "| REMOVE-ALL"            , EH_NO_PARAM)
82cmd_def("        "  , {}                                    , ""                        , EH_NO_PARAM)
83cmd_def("        "  , {}                                    , "]"                       , EH_NO_PARAM)
84cmd_def("]XTERM"    , cmd_XTERM(out, arg)                   , "[ON|OFF]"                , EH_oON_OFF)
85
86#undef cmd_def
87