KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > armedbear > lisp > UnboundVariable


1 /*
2  * UnboundVariable.java
3  *
4  * Copyright (C) 2002-2004 Peter Graves
5  * $Id: UnboundVariable.java,v 1.9 2004/09/20 18:43:43 piso Exp $
6  *
7  * This program is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License
9  * as published by the Free Software Foundation; either version 2
10  * of the License, or (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20  */

21
22 package org.armedbear.lisp;
23
24 public final class UnboundVariable extends CellError
25 {
26     // obj is either the unbound variable itself or an initArgs list.
27
public UnboundVariable(LispObject obj) throws ConditionThrowable
28     {
29         super(obj instanceof Cons ? obj : list2(Keyword.NAME, obj));
30     }
31
32     public String JavaDoc getMessage()
33     {
34         LispThread thread = LispThread.currentThread();
35         Environment oldDynEnv = thread.getDynamicEnvironment();
36         thread.bindSpecial(_PRINT_ESCAPE_, T);
37         StringBuffer JavaDoc sb = new StringBuffer JavaDoc("The variable ");
38         // FIXME
39
try {
40             sb.append(getCellName().writeToString());
41         }
42         catch (Throwable JavaDoc t) {}
43         sb.append(" is unbound.");
44         thread.setDynamicEnvironment(oldDynEnv);
45         return sb.toString();
46     }
47
48     public LispObject typeOf()
49     {
50         return Symbol.UNBOUND_VARIABLE;
51     }
52
53     public LispClass classOf()
54     {
55         return BuiltInClass.UNBOUND_VARIABLE;
56     }
57
58     public LispObject typep(LispObject type) throws ConditionThrowable
59     {
60         if (type == Symbol.UNBOUND_VARIABLE)
61             return T;
62         if (type == BuiltInClass.UNBOUND_VARIABLE)
63             return T;
64         return super.typep(type);
65     }
66 }
67
Popular Tags