468 lines
13 KiB
C
468 lines
13 KiB
C
/* primes.h - table of primitives
|
|
|
|
Copyright (C) 2015 Lutz Mueller
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
*/
|
|
|
|
#ifndef PRIMES_H
|
|
#define PRIMES_H
|
|
|
|
PRIMITIVE primitive[] =
|
|
{
|
|
/* --------- core ------------------ */
|
|
#ifdef SYMBOL_DEBUG
|
|
{"dump-symbol", p_dumpSymbol, 0},
|
|
#endif
|
|
{"while", p_while, 2},
|
|
{"until", p_until, 2},
|
|
{"do-while", p_doWhile, 2},
|
|
{"do-until", p_doUntil, 2},
|
|
{"dotimes", p_dotimes, 2},
|
|
{"for", p_for, 2},
|
|
{"sequence", p_sequence, 0},
|
|
{"series", p_series, 0},
|
|
{"doargs", p_doargs, 2},
|
|
{"dolist", p_dolist, 2},
|
|
{"dostring", p_dostring, 2},
|
|
{"dotree", p_dotree, 2},
|
|
{"case", p_case, 2},
|
|
{"cond", p_condition,1},
|
|
{"begin", p_evalBlock,1},
|
|
{"and", p_and, 0},
|
|
{"if", p_if, 2},
|
|
{"if-not", p_ifNot, 2},
|
|
{"unless", p_unless, 2},
|
|
{"when", p_when, 2},
|
|
{"or", p_or, 0},
|
|
{"quote", p_quote, 0},
|
|
{"silent", p_silent, 0},
|
|
{"eval", p_eval, 0},
|
|
{"amb", p_amb, 0},
|
|
{"catch", p_catch, 0},
|
|
{"throw", p_throw, 0},
|
|
{"apply", p_apply, 0},
|
|
{"curry", p_curry, 0},
|
|
{"args", p_args, 0},
|
|
{"map", p_map, 0},
|
|
{"term", p_term, 0},
|
|
{"filter", p_filter, 0},
|
|
{"clean", p_clean, 0},
|
|
{"index", p_index, 0},
|
|
{"define", p_define, 0x402},
|
|
{"define-macro", p_defineMacro, 0x402},
|
|
{"macro", p_macro, 2},
|
|
{"expand", p_expand, 0},
|
|
{"constant", p_constant, 0x400},
|
|
{"global", p_global, 0},
|
|
{"set", p_set, 0x400},
|
|
{"setf", p_setf, 0x400},
|
|
{"setq", p_setf, 0x400},
|
|
{"let", p_let, 0x402},
|
|
{"local", p_local, 2},
|
|
{"letn", p_letn, 0x002},
|
|
{"letex", p_letExpand,0x403},
|
|
{"first", p_first, 0},
|
|
{"flat", p_flat, 0},
|
|
{"last", p_last, 0},
|
|
{"rest", p_rest, 0},
|
|
{"cons", p_cons, 0},
|
|
{"append", p_append, 0},
|
|
{"extend", p_extend, 0x400},
|
|
{"list", p_list, 0},
|
|
{"nth", p_nth, 0},
|
|
{"ref", p_ref, 0},
|
|
{"ref-all", p_refAll, 0},
|
|
{"set-ref", p_setRef, 0x400},
|
|
{"set-ref-all", p_setRefAll,0x400},
|
|
{"select", p_select, 0},
|
|
{"collect", p_collect, 0},
|
|
{"swap", p_swap, 0},
|
|
{"slice", p_slice, 0},
|
|
{"length", p_length, 0},
|
|
{"find", p_find, 0},
|
|
{"search", p_search, 0},
|
|
{"member", p_member, 0},
|
|
{"intersect", p_intersect, 0},
|
|
{"difference", p_difference, 0},
|
|
{"union", p_union, 0},
|
|
{"unique", p_unique, 0},
|
|
{"assoc", p_assoc, 0},
|
|
{"lookup", p_lookup, 0},
|
|
{"count", p_count, 0},
|
|
{"pop-assoc", p_popAssoc, 0x400},
|
|
{"replace", p_replace, 0x400},
|
|
{"sort", p_sort, 0x400},
|
|
{"push", p_push, 0x400},
|
|
{"pop", p_pop, 0x400},
|
|
{"reverse", p_reverse, 0x400},
|
|
{"rotate", p_rotate, 0x400},
|
|
{"dup", p_dup, 0},
|
|
{"not", p_not, 0},
|
|
{"+", p_add, 0},
|
|
{"-", p_subtract, 0},
|
|
{"*", p_multiply, 0},
|
|
{"/", p_divide, 0},
|
|
{"%", p_modulo, 0},
|
|
{"<", p_less, 0},
|
|
{">", p_greater, 0},
|
|
{"<=", p_lessEqual,0},
|
|
{">=", p_greaterEqual,0},
|
|
{"=", p_equal, 0},
|
|
{"!=", p_notEqual, 0},
|
|
{"++", p_incrementI,0x400},
|
|
{"--", p_decrementI,0x400},
|
|
|
|
/* --------- bit ops --------------- */
|
|
{"<<", p_shiftLeft,0},
|
|
{">>", p_shiftRight, 0},
|
|
{"&", p_bitAnd, 0},
|
|
{"|", p_bitOr, 0},
|
|
{"^", p_bitXor, 0},
|
|
{"~", p_bitNot, 0},
|
|
|
|
/* --------- math and float ------- */
|
|
{"inc", p_incrementF,0x400},
|
|
{"dec", p_decrementF,0x400},
|
|
{"add", p_addFloat, 0},
|
|
{"sub", p_subFloat, 0},
|
|
{"mul", p_mulFloat, 0},
|
|
{"div", p_divFloat, 0},
|
|
{"abs", p_abs, 0},
|
|
{"ceil", p_ceil, 0},
|
|
{"floor", p_floor, 0},
|
|
{"erf", p_erf, 0},
|
|
{"sgn", p_sgn, 0},
|
|
{"sin", p_sin, 0},
|
|
{"cos", p_cos, 0},
|
|
{"tan", p_tan, 0},
|
|
{"asin", p_asin, 0},
|
|
{"acos", p_acos, 0},
|
|
{"atan", p_atan, 0},
|
|
{"atan2", p_atan2, 0},
|
|
{"sinh", p_sinh, 0},
|
|
{"cosh", p_cosh, 0},
|
|
{"tanh", p_tanh, 0},
|
|
{"asinh", p_asinh, 0},
|
|
{"acosh", p_acosh, 0},
|
|
{"atanh", p_atanh, 0},
|
|
{"round", p_round, 0},
|
|
{"exp", p_exp, 0},
|
|
{"log", p_log, 0},
|
|
{"sqrt", p_sqrt, 0},
|
|
{"ssq", p_ssq, 0},
|
|
{"rand", p_rand, 0},
|
|
{"seed", p_seed, 0},
|
|
{"random", p_random, 0},
|
|
{"normal", p_normal, 0},
|
|
{"randomize", p_randomize,0},
|
|
{"encrypt", p_encrypt, 0},
|
|
{"min", p_minFloat, 0},
|
|
{"max", p_maxFloat, 0},
|
|
{"pow", p_powFloat, 0},
|
|
{"mod", p_modFloat, 0},
|
|
{"prob-z", p_probabilityZ, 0},
|
|
{"prob-chi2", p_probabilityChi2, 0},
|
|
{"prob-t", p_probabilityT, 0},
|
|
{"prob-f", p_probabilityF, 0},
|
|
{"crit-chi2", p_criticalChi2, 0},
|
|
{"crit-z", p_criticalZ, 0},
|
|
{"crit-t", p_criticalT, 0},
|
|
{"crit-f", p_criticalF, 0},
|
|
{"fft", p_fft, 0},
|
|
{"ifft", p_ifft, 0},
|
|
{"beta", p_beta, 0},
|
|
{"betai", p_betai, 0},
|
|
{"gammaln", p_gammaln, 0},
|
|
{"gammai", p_gammai, 0},
|
|
{"binomial", p_binomial, 0},
|
|
{"factor", p_factor, 0},
|
|
{"pmt", p_pmt, 0},
|
|
{"pv", p_pv, 0},
|
|
{"fv", p_fv, 0},
|
|
{"nper", p_nper, 0},
|
|
{"npv", p_npv, 0},
|
|
{"irr", p_irr, 0},
|
|
{"transpose", p_matTranspose, 0},
|
|
{"multiply", p_matMultiply, 0},
|
|
{"invert", p_matInvert, 0},
|
|
{"det", p_determinant, 0},
|
|
{"mat", p_matScalar, 0},
|
|
{"array", p_array, 0},
|
|
{"array-list", p_arrayList, 0},
|
|
{"flt", p_flt, 0},
|
|
{"bayes-train", p_bayesTrain, 0},
|
|
{"bayes-query", p_bayesQuery, 0},
|
|
#ifdef KMEANS
|
|
{"kmeans-train",p_kmeansTrain, 0},
|
|
{"kmeans-query",p_kmeansQuery, 0},
|
|
#endif
|
|
{"stats", p_stats, 0},
|
|
{"t-test", p_ttest, 0},
|
|
{"corr", p_corr, 0},
|
|
{"unify", p_unify, 0},
|
|
{"bind", p_bind, 0x400},
|
|
{"uuid", p_uuid, 0},
|
|
{"gcd", p_gcd, 0},
|
|
|
|
/* ------------ string ops ------------- */
|
|
{"eval-string", p_evalString, 0},
|
|
#ifdef EMSCRIPTEN
|
|
{"eval-string-js", p_evalStringJS, 0},
|
|
#endif
|
|
{"read-expr", p_readExpr, 0},
|
|
{"join", p_join, 0},
|
|
{"chop", p_chop, 0},
|
|
{"explode", p_explode, 0},
|
|
{"trim", p_trim, 0},
|
|
{"char", p_char, 0},
|
|
{"starts-with", p_startsWith, 0},
|
|
{"ends-with", p_endsWith, 0},
|
|
{"upper-case", p_upper, 0},
|
|
{"lower-case", p_lower, 0},
|
|
{"title-case", p_title, 0},
|
|
{"format", p_format, 0},
|
|
{"match", p_match, 0},
|
|
{"regex", p_regex, 0},
|
|
{"regex-comp", p_regexComp,0},
|
|
{"int", p_integer, 0},
|
|
{"integer", p_integer, 0},
|
|
{"float", p_float, 0},
|
|
{"string", p_string, 0},
|
|
{"bits", p_bits, 0},
|
|
{"get-float", p_getFloat, 0},
|
|
{"get-string", p_getString, 0},
|
|
{"get-int", p_getInteger, 0},
|
|
{"get-long", p_getLong, 0},
|
|
{"get-char", p_getChar, 0},
|
|
{"sym", p_symbol, 0},
|
|
{"parse", p_parse, 0},
|
|
{"pack", p_pack, 0},
|
|
{"unpack", p_unpack, 0},
|
|
#ifdef XML_SUPPORT
|
|
{"xml-parse", p_XMLparse, 0},
|
|
{"xml-error", p_XMLerror, 0},
|
|
{"xml-type-tags", p_XMLtypeTags, 0},
|
|
#endif
|
|
{"json-parse", p_JSONparse, 0},
|
|
{"json-error", p_JSONerror, 0},
|
|
{"base64-enc", p_base64Enc, 0},
|
|
{"base64-dec", p_base64Dec, 0},
|
|
{"crc32", p_crc32, 0},
|
|
{"find-all", p_findAll, 0},
|
|
#ifdef SUPPORT_UTF8
|
|
{"unicode", p_unicode, 0},
|
|
{"utf8", p_utf8, 0},
|
|
{"utf8len", p_utf8len, 0},
|
|
#endif
|
|
|
|
/* -------------- I/O ------------------ */
|
|
{"pretty-print", p_prettyPrint, 0},
|
|
{"print", p_print, 0},
|
|
{"println", p_println, 0},
|
|
{"read-line", p_readLine, 0},
|
|
{"write-line", p_writeLine, 0},
|
|
{"current-line",p_currentLine,0},
|
|
{"device", p_device, 0},
|
|
{"load", p_load, 0},
|
|
{"save", p_save, 0},
|
|
{"source", p_symbolSource, 0},
|
|
{"open", p_open, 0},
|
|
{"seek", p_seek, 0},
|
|
{"close", p_close, 0},
|
|
{"read-char", p_readChar, 0},
|
|
#ifdef SUPPORT_UTF8
|
|
{"read-utf8", p_readUTF8, 0},
|
|
#endif
|
|
{"write-char", p_writeChar,0},
|
|
{"read-buffer", p_readBuffer,0x400},
|
|
{"read", p_readBuffer,0x400},
|
|
{"write-buffer",p_writeBuffer,0},
|
|
{"write", p_writeBuffer,0},
|
|
{"write-file", p_writeFile,0},
|
|
{"append-file", p_appendFile, 0},
|
|
{"read-file", p_readFile, 0},
|
|
{"read-key", p_readKey, 0},
|
|
#ifndef EMSCRIPTEN
|
|
{"get-url", p_getUrl, 0},
|
|
{"put-url", p_putUrl, 0},
|
|
{"post-url", p_postUrl, 0},
|
|
{"delete-url", p_deleteUrl,0},
|
|
{"destroy", p_destroyProcess, 0},
|
|
{"exec", p_exec, 0},
|
|
{"process", p_process, 0},
|
|
{"pipe", p_pipe, 0},
|
|
#ifndef NO_FORK
|
|
{"fork", p_fork, 0},
|
|
{"wait-pid", p_waitpid, 0},
|
|
#endif
|
|
#ifndef NO_SPAWN
|
|
{"spawn", p_spawn, 0},
|
|
{"sync", p_sync, 0},
|
|
{"abort", p_abort, 0},
|
|
{"send", p_send, 0},
|
|
{"receive", p_receive, 0},
|
|
#endif
|
|
#ifndef NO_SHARE
|
|
{"share", p_share, 0},
|
|
#endif
|
|
#ifndef NO_SEMAPHORE
|
|
{"semaphore", p_semaphore,0},
|
|
#endif
|
|
#ifndef WINDOWS
|
|
{"peek", p_peek, 0},
|
|
#endif
|
|
|
|
#endif /* ifndef EMSCRIPTEN */
|
|
|
|
|
|
/* --------- system --------- */
|
|
{"set-locale", p_setLocale, 0},
|
|
{"for-all", p_forAll, 0},
|
|
{"exists", p_exists, 0},
|
|
{"symbols", p_symbols, 0},
|
|
{"exit", p_exit, 0},
|
|
#ifdef DEBUGGER
|
|
{"debug", p_debug, 0},
|
|
{"trace-highlight", p_traceHighlight,0},
|
|
#endif
|
|
{"trace", p_trace, 0},
|
|
{"reset", p_reset, 0},
|
|
{"throw-error", p_throwError, 0},
|
|
{"error-event", p_errorEvent, 0},
|
|
{"prompt-event",p_promptEvent, 0},
|
|
{"command-event", p_commandEvent, 0},
|
|
{"xfer-event", p_transferEvent, 0},
|
|
{"reader-event", p_readerEvent, 0},
|
|
{"last-error", p_lastError, 0},
|
|
#ifndef EMSCRIPTEN
|
|
#ifndef NO_SIGNAL
|
|
{"signal", p_signal, 0},
|
|
#endif
|
|
#endif
|
|
{"sys-info", p_systemInfo, 0},
|
|
{"sys-error", p_systemError, 0},
|
|
{"!", p_system, 0},
|
|
{"file-info", p_fileInfo, 0},
|
|
{"copy", p_copy, 0},
|
|
{"copy-file", p_copyFile, 0},
|
|
{"rename-file", p_renameFile, 0},
|
|
{"delete-file", p_deleteFile, 0},
|
|
{"make-dir", p_makeDir, 0},
|
|
{"remove-dir", p_removeDir, 0},
|
|
{"change-dir", p_changeDir, 0},
|
|
{"directory", p_directory, 0},
|
|
{"real-path", p_realpath, 0},
|
|
{"main-args", p_mainArgs, 0},
|
|
{"env", p_env, 0},
|
|
{"context", p_context, 0},
|
|
{":", p_colon, 0},
|
|
{"self", p_self, 0},
|
|
{"prefix", p_prefix, 0},
|
|
{"default", p_default, 0},
|
|
#ifndef EMSCRIPTEN
|
|
{"timer", p_timerEvent, 0},
|
|
{"import", p_importLib, 0},
|
|
{"callback", p_callback, 0},
|
|
#ifdef FFI
|
|
{"struct", p_struct, 0},
|
|
#endif
|
|
#endif /* ifndef EMSCRIPTEN */
|
|
{"delete", p_deleteSymbol, 0},
|
|
{"new", p_new, 0},
|
|
{"def-new", p_defineNew, 0},
|
|
{"address", p_address, 0},
|
|
{"dump", p_dump, 0},
|
|
{"cpymem", p_copyMemory, 0},
|
|
{"sleep", p_sleep, 0},
|
|
{"$", p_systemSymbol, 0},
|
|
|
|
/* --------- predicates ------ */
|
|
{"nil?", p_isNil, 0},
|
|
{"true?", p_isTrue, 0},
|
|
{"NaN?", p_isnan, 0},
|
|
{"inf?", p_isinf, 0},
|
|
{"integer?", p_isInteger, 0},
|
|
#ifdef BIGINT
|
|
{"bigint?", p_isBigInteger, 0},
|
|
{"bigint", p_bigInt, 0},
|
|
#endif
|
|
{"float?", p_isFloat, 0},
|
|
{"number?", p_isNumber, 0},
|
|
{"string?", p_isString, 0},
|
|
{"symbol?", p_isSymbol, 0},
|
|
{"legal?", p_isLegal, 0},
|
|
{"context?", p_isContext, 0},
|
|
{"primitive?", p_isPrimitive, 0},
|
|
{"atom?", p_isAtom, 0},
|
|
{"quote?", p_isQuote, 0},
|
|
{"list?", p_isList, 0},
|
|
{"lambda?", p_isLambda, 0},
|
|
{"macro?", p_isMacro, 0},
|
|
{"array?", p_isArray, 0},
|
|
{"empty?", p_isEmpty, 0},
|
|
{"null?", p_isNull, 0},
|
|
{"zero?", p_isZero, 0},
|
|
{"file?", p_isFile, 0},
|
|
{"directory?", p_isDirectory, 0},
|
|
{"global?", p_isGlobal, 0},
|
|
{"protected?", p_isProtected, 0},
|
|
{"odd?", p_isOdd, 0},
|
|
{"even?", p_isEven, 0},
|
|
|
|
/* ------------ date and time --------- */
|
|
{"date", p_date, 0},
|
|
{"time", p_time, 0},
|
|
{"time-of-day", p_timeOfDay, 0},
|
|
{"now", p_now, 0},
|
|
#ifndef WINDOWS
|
|
{"date-parse", p_dateParse, 0},
|
|
{"parse-date", p_dateParse, 0},
|
|
#endif
|
|
{"date-list", p_dateList, 0},
|
|
{"date-value", p_dateValue, 0},
|
|
|
|
/* ------------ net working ------------ */
|
|
#ifndef EMSCRIPTEN
|
|
{"net-close", p_netClose, 0},
|
|
{"net-service", p_netService, 0},
|
|
{"net-connect", p_netConnect, 0},
|
|
{"net-accept", p_netAccept, 0},
|
|
{"net-local", p_netLocal, 0},
|
|
{"net-peer", p_netPeer, 0},
|
|
{"net-ipv", p_netIpv, 0},
|
|
{"net-lookup", p_netLookup, 0},
|
|
{"net-receive", p_netReceive, 0x400},
|
|
{"net-receive-from",p_netReceiveFrom,0},
|
|
{"net-receive-udp", p_netReceiveUDP,0},
|
|
{"net-send", p_netSend, 0},
|
|
{"net-send-to", p_netSendTo, 0},
|
|
{"net-send-udp", p_netSendUDP, 0},
|
|
{"net-listen", p_netListen, 0},
|
|
#ifndef WINDOWS
|
|
{"net-packet", p_netPacket, 0},
|
|
{"net-ping", p_netPing, 0},
|
|
#endif
|
|
{"net-peek", p_netPeek, 0},
|
|
{"net-select", p_netSelect, 0},
|
|
{"net-sessions", p_netSessions, 0},
|
|
{"net-eval", p_netEval, 0},
|
|
{"net-interface", p_netInterface, 0},
|
|
{"net-error", p_netLastError, 0},
|
|
#endif
|
|
{NULL,NULL,0},
|
|
};
|
|
|
|
#endif /* PRIMES_H */
|