init commit
This commit is contained in:
commit
32cd7f8a20
54
extensions.ino
Normal file
54
extensions.ino
Normal file
|
@ -0,0 +1,54 @@
|
|||
/*
|
||||
User Extensions
|
||||
*/
|
||||
|
||||
// Definitions
|
||||
object *fn_sym_def (object *args, object *env) {
|
||||
(void) env;
|
||||
object *obj = first(args);
|
||||
pfun_t pfun = pstreamfun(cdr(args));
|
||||
#if defined(gfxsupport)
|
||||
if (pfun == gfxwrite) ppwidth = GFXPPWIDTH;
|
||||
#endif
|
||||
object *pair = findvalue(obj, env);
|
||||
object *var = car(pair);
|
||||
object *val = cdr(pair);
|
||||
pln(pfun);
|
||||
if (consp(val) && symbolp(car(val)) && builtin(car(val)->name) == LAMBDA) {
|
||||
superprint(cons(bsymbol(DEFUN), cons(var, cdr(val))), 0, false, pfun);
|
||||
} else {
|
||||
superprint(cons(bsymbol(DEFVAR), cons(var, cons(quote(val), NULL))), 0, false, pfun);
|
||||
}
|
||||
pln(pfun);
|
||||
ppwidth = PPWIDTH;
|
||||
return bsymbol(NOTHING);
|
||||
}
|
||||
|
||||
// Symbol names
|
||||
const char string_sym_def[] PROGMEM = "symbol-def";
|
||||
|
||||
|
||||
// Documentation strings
|
||||
const char doc_sym_def[] PROGMEM = "(symbol-def symbol [str])\n"
|
||||
"Prints the definition of a symbol (variable or function) defined in ulisp using the pretty printer."
|
||||
"If str is specified it prints to the specified stream. It returns no value.";
|
||||
|
||||
|
||||
// Symbol lookup table
|
||||
const tbl_entry_t lookup_table2[] PROGMEM = {
|
||||
|
||||
{ string_sym_def, fn_sym_def, 0212, doc_sym_def }
|
||||
};
|
||||
|
||||
// Table cross-reference functions
|
||||
|
||||
tbl_entry_t *tables[] = {lookup_table, lookup_table2};
|
||||
const unsigned int tablesizes[] = { arraysize(lookup_table), arraysize(lookup_table2) };
|
||||
|
||||
const tbl_entry_t *table (int n) {
|
||||
return tables[n];
|
||||
}
|
||||
|
||||
unsigned int tablesize (int n) {
|
||||
return tablesizes[n];
|
||||
}
|
6749
tdeck-ulisp.ino
Normal file
6749
tdeck-ulisp.ino
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue