1 package gnu.commonlisp.lang; 2 import gnu.mapping.*; 3 import gnu.lists.*; 4 5 7 8 public class Symbols 9 { 10 private Symbols () 11 { 12 } 13 14 public static boolean isSymbol(Object val) 15 { 16 return val instanceof String || val == Lisp2.FALSE 17 || val instanceof Symbol; 18 } 19 20 public static boolean isBound(Object 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 ) sym); 30 return symbol != null && env.isBound(symbol); 31 } 32 33 public static Symbol getSymbol(Environment env, Object sym) 34 { 35 if (sym == Lisp2.FALSE) 36 sym = "nil"; 37 return sym instanceof Symbol ? (Symbol) sym 38 : env.defaultNamespace().getSymbol((String ) sym); 39 } 40 41 public static Symbol getSymbol(Object sym) 42 { 43 if (sym == Lisp2.FALSE) 44 sym = "nil"; 45 return sym instanceof Symbol ? (Symbol) sym 46 : Namespace.getDefaultSymbol((String ) sym); } 48 49 public static Object getPrintName(Object sym) 50 { 51 return sym == Lisp2.FALSE ? "nil" 52 : Lisp2.getString(((Symbol) sym).getName()); 53 } 54 55 public static Object getFunctionBinding (Object symbol) 56 { 57 return Environment.getCurrent().getFunction(getSymbol(symbol)); 58 } 59 60 public static Object getFunctionBinding (Environment environ, Object symbol) 61 { 62 return environ.getFunction(getSymbol(symbol)); 63 } 64 65 public static void setFunctionBinding (Environment environ, 66 Object symbol, Object newValue) 67 { 68 environ.put(getSymbol(symbol), EnvironmentKey.FUNCTION, newValue); 69 } 70 71 } 72 | Popular Tags |