summaryrefslogtreecommitdiff
path: root/special-symbols.h
diff options
context:
space:
mode:
authorMatthias Andreas Benkard <matthias@benkard.de>2008-08-10 12:17:53 +0200
committerMatthias Andreas Benkard <matthias@benkard.de>2008-08-10 12:17:53 +0200
commitc802172ab92da89a8e9a8cc92c47c09f222dacd1 (patch)
treec1e4588297c27c8d268594b5a2621e61a4cc7e0b /special-symbols.h
parentddf78cc594ae390a8bfff95555dc285c1bbd28f5 (diff)
Add class cluster MLKForm.
Diffstat (limited to 'special-symbols.h')
-rw-r--r--special-symbols.h114
1 files changed, 114 insertions, 0 deletions
diff --git a/special-symbols.h b/special-symbols.h
new file mode 100644
index 0000000..2e80bf7
--- /dev/null
+++ b/special-symbols.h
@@ -0,0 +1,114 @@
+/* -*- mode: objc; coding: utf-8 -*- */
+/* Toilet Lisp, a Common Lisp subset for the Étoilé runtime.
+ * Copyright (C) 2008 Matthias Andreas Benkard.
+ *
+ * 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/>.
+ */
+
+#import "MLKSymbol.h"
+#import "MLKPackage.h"
+
+static MLKPackage *cl;
+static MLKPackage *sys;
+static MLKPackage *keyword;
+
+static MLKSymbol *IF;
+static MLKSymbol *IN_PACKAGE;
+static MLKSymbol *DECLARE;
+static MLKSymbol *PROGN;
+static MLKSymbol *TAGBODY;
+static MLKSymbol *GO;
+static MLKSymbol *CATCH;
+static MLKSymbol *THROW;
+static MLKSymbol *_FLET;
+static MLKSymbol *_MACROLET;
+static MLKSymbol *LAMBDA;
+static MLKSymbol *LET;
+static MLKSymbol *LOCALLY;
+static MLKSymbol *APPLY;
+static MLKSymbol *FUNCALL;
+static MLKSymbol *FUNCTION;
+static MLKSymbol *EVAL;
+static MLKSymbol *EVAL_WHEN;
+static MLKSymbol *QUOTE;
+static MLKSymbol *SETQ;
+static MLKSymbol *SETF;
+static MLKSymbol *SET;
+static MLKSymbol *_FSETQ;
+static MLKSymbol *_FSET;
+static MLKSymbol *SYMBOL_MACROLET;
+static MLKSymbol *PROGV;
+static MLKSymbol *UNWIND_PROTECT;
+static MLKSymbol *VALUES;
+static MLKSymbol *_DEFMACRO;
+static MLKSymbol *_FOREIGN_LAMBDA;
+static MLKSymbol *_LAMBDA;
+static MLKSymbol *_LOOP;
+static MLKSymbol *V_INITP;
+static MLKSymbol *COMPILE_TOPLEVEL;
+static MLKSymbol *COMPILE;
+static MLKSymbol *LOAD_TOPLEVEL;
+static MLKSymbol *LOAD;
+static MLKSymbol *EXECUTE;
+static MLKSymbol *MULTIPLE_VALUE_CALL;
+
+
+static void
+ensure_symbols ()
+{
+ cl = [MLKPackage findPackage:@"COMMON-LISP"];
+ sys = [MLKPackage findPackage:@"TOILET-SYSTEM"];
+ keyword = [MLKPackage findPackage:@"KEYWORD"];
+
+ IF = [cl intern:@"IF"];
+ IN_PACKAGE = [cl intern:@"IN-PACKAGE"];
+ DECLARE = [cl intern:@"DECLARE"];
+ PROGN = [cl intern:@"PROGN"];
+ TAGBODY = [cl intern:@"TAGBODY"];
+ GO = [cl intern:@"GO"];
+ CATCH = [cl intern:@"CATCH"];
+ THROW = [cl intern:@"THROW"];
+ LAMBDA = [cl intern:@"LAMBDA"];
+ LET = [cl intern:@"LET"];
+ LOCALLY = [cl intern:@"LOCALLY"];
+ _FLET = [sys intern:@"%FLET"];
+ _MACROLET = [sys intern:@"%MACROLET"];
+ _LOOP = [sys intern:@"%LOOP"];
+ APPLY = [cl intern:@"APPLY"];
+ EVAL = [cl intern:@"EVAL"];
+ EVAL_WHEN = [cl intern:@"EVAL-WHEN"];
+ FUNCALL = [cl intern:@"FUNCALL"];
+ FUNCTION = [cl intern:@"FUNCTION"];
+ QUOTE = [cl intern:@"QUOTE"];
+ SETQ = [cl intern:@"SETQ"];
+ SETF = [cl intern:@"SETF"];
+ SET = [cl intern:@"SET"];
+ _FSETQ = [sys intern:@"%FSETQ"];
+ _FSET = [sys intern:@"%FSET"];
+ SYMBOL_MACROLET = [cl intern:@"SYMBOL-MACROLET"];
+ PROGV = [cl intern:@"PROGV"];
+ VALUES = [cl intern:@"VALUES"];
+ UNWIND_PROTECT = [cl intern:@"UNWIND-PROTECT"];
+ _DEFMACRO = [sys intern:@"%DEFMACRO"];
+ _FOREIGN_LAMBDA = [sys intern:@"%FOREIGN-LAMBDA"];
+ _LAMBDA = [sys intern:@"%LAMBDA"];
+ V_INITP = [sys intern:@"*SYSTEM-INITIALISED-P*"];
+ MULTIPLE_VALUE_CALL = [cl intern:@"MULTIPLE-VALUE-CALL"];
+
+ COMPILE_TOPLEVEL = [keyword intern:@"COMPILE-TOPLEVEL"];
+ COMPILE = [cl intern:@"COMPILE"];
+ LOAD_TOPLEVEL = [keyword intern:@"LOAD-TOPLEVEL"];
+ LOAD = [cl intern:@"LOAD"];
+ EXECUTE = [keyword intern:@"EXECUTE"];
+}