01: /*=============================================================================
02: * Copyright Texas Instruments 2000-2004. All Rights Reserved.
03: *
04: * This program is free software; you can redistribute it and/or
05: * modify it under the terms of the GNU Lesser General Public
06: * License as published by the Free Software Foundation; either
07: * version 2 of the License, or (at your option) any later version.
08: *
09: * This program is distributed in the hope that it will be useful,
10: * but WITHOUT ANY WARRANTY; without even the implied warranty of
11: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12: * Lesser General Public License for more details.
13: *
14: * You should have received a copy of the GNU Lesser General Public
15: * License along with this library; if not, write to the Free Software
16: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17: *
18: * $ProjectHeader: OSCRIPT 0.155 Fri, 20 Dec 2002 18:34:22 -0800 rclark $
19: */
20:
21: package oscript.data;
22:
23: import oscript.exceptions.*;
24:
25: /**
26: * XXX not sure if we need a common parent for all types, but we might end up
27: * with some common utility code.
28: *
29: * @author Rob Clark (rob@ti.com)
30: */
31: public abstract class Type extends Value {
32: /**
33: * The type of special objects, which shouldn't be accessible from
34: * a oscript program. For example, scope.
35: */
36: public final static Value HIDDEN_TYPE = OSpecial
37: .makeSpecial("(hidden)");
38:
39: /*=======================================================================*/
40: /**
41: * Class Constructor.
42: *
43: * @param type the type of this object
44: */
45: public Type() {
46: super ();
47: }
48:
49: /*=======================================================================*/
50: /**
51: * Class Constructor.
52: *
53: * @param args arguments to this constructor
54: * @throws PackagedScriptObjectException(Exception) if wrong number of args
55: */
56: public Type(oscript.util.MemberTable args) {
57: super ();
58:
59: // XXX
60: throw PackagedScriptObjectException
61: .makeExceptionWrapper(new OIllegalArgumentException(
62: "wrong number of args!"));
63: }
64:
65: /*=======================================================================*/
66: /**
67: * If this object is a type, determine if an instance of this type is
68: * an instance of the specified type, ie. if this is <code>type</code>,
69: * or a subclass.
70: *
71: * @param type the type to compare this type to
72: * @return <code>true</code> or <code>false</code>
73: * @throws PackagedScriptObjectException(NoSuchMemberException)
74: */
75: public boolean isA(Value type) {
76: return this == type.unhand();
77: }
78: }
79:
80: /*
81: * Local Variables:
82: * tab-width: 2
83: * indent-tabs-mode: nil
84: * mode: java
85: * c-indentation-style: java
86: * c-basic-offset: 2
87: * eval: (c-set-offset 'substatement-open '0)
88: * eval: (c-set-offset 'case-label '+)
89: * eval: (c-set-offset 'inclass '+)
90: * eval: (c-set-offset 'inline-open '0)
91: * End:
92: */
|