KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > gnu > commonlisp > lang > Symbols


1 package gnu.commonlisp.lang;
2 import gnu.mapping.*;
3 import gnu.lists.*;
4
5 /** Support for Lisp Symbols.
6  * The special symbol `nil' is actually the value gnu.lists.LList.Empty. */

7
8 public class Symbols
9 {
10   private Symbols ()
11   {
12   }
13
14   public static boolean isSymbol(Object JavaDoc val)
15   {
16     return val instanceof String JavaDoc || val == Lisp2.FALSE
17       || val instanceof Symbol;
18   }
19
20   public static boolean isBound(Object JavaDoc sym)
21   {
22     if (sym == Lisp2.FALSE)
23       return true;
24     Environment env = Environment.getCurrent();
25     Symbol symbol;
26     if (sym instanceof Symbol)
27       symbol = (Symbol) sym;
28     else
29       symbol = env.defaultNamespace().lookup((String JavaDoc) sym);
30     return symbol != null && env.isBound(symbol);
31   }
32   
33   public static Symbol getSymbol(Environment env, Object JavaDoc sym)
34   {
35     if (sym == Lisp2.FALSE)
36       sym = "nil";
37     return sym instanceof Symbol ? (Symbol) sym
38       : env.defaultNamespace().getSymbol((String JavaDoc) sym);
39   }
40
41   public static Symbol getSymbol(Object JavaDoc sym)
42   {
43     if (sym == Lisp2.FALSE)
44       sym = "nil";
45     return sym instanceof Symbol ? (Symbol) sym
46       : Namespace.getDefaultSymbol((String JavaDoc) sym); // FIXME
47
}
48
49   public static Object JavaDoc getPrintName(Object JavaDoc sym)
50   {
51     return sym == Lisp2.FALSE ? "nil"
52       : Lisp2.getString(((Symbol) sym).getName());
53   }
54
55   public static Object JavaDoc getFunctionBinding (Object JavaDoc symbol)
56   {
57     return Environment.getCurrent().getFunction(getSymbol(symbol));
58   }
59
60   public static Object JavaDoc getFunctionBinding (Environment environ, Object JavaDoc symbol)
61   {
62     return environ.getFunction(getSymbol(symbol));
63   }
64
65   public static void setFunctionBinding (Environment environ,
66                      Object JavaDoc symbol, Object JavaDoc newValue)
67   {
68     environ.put(getSymbol(symbol), EnvironmentKey.FUNCTION, newValue);
69   }
70
71 }
72
Popular Tags