01: /*
02: * xtc - The eXTensible Compiler
03: * Copyright (C) 2007 Robert Grimm
04: *
05: * This program is free software; you can redistribute it and/or
06: * modify it under the terms of the GNU General Public License
07: * version 2 as published by the Free Software Foundation.
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
12: * GNU General Public License for more details.
13: *
14: * You should have received a copy of the GNU General Public License
15: * along with this program; if not, write to the Free Software
16: * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
17: * USA.
18: */
19: package xtc.type;
20:
21: import java.io.IOException;
22:
23: /**
24: * A unit type.
25: *
26: * @author Robert Grimm
27: * @version $Revision: 1.1 $
28: */
29: public class UnitT extends Type {
30:
31: /** The canonical unit type. */
32: public static final UnitT TYPE = new UnitT();
33:
34: /** Seal the canonical type. */
35: static {
36: TYPE.seal();
37: }
38:
39: /** Create a new unit type. */
40: public UnitT() {
41: // Nothing to do.
42: }
43:
44: /**
45: * Create a new unit type.
46: *
47: * @param template The type whose annotations to copy.
48: */
49: public UnitT(Type template) {
50: super (template);
51: }
52:
53: public UnitT copy() {
54: return new UnitT(this );
55: }
56:
57: public Type.Tag tag() {
58: return Type.Tag.UNIT;
59: }
60:
61: public boolean isUnit() {
62: return true;
63: }
64:
65: public UnitT toUnit() {
66: return this ;
67: }
68:
69: public int hashCode() {
70: return 7;
71: }
72:
73: public boolean equals(Object o) {
74: if (!(o instanceof Type))
75: return false;
76: return resolve(o).isUnit();
77: }
78:
79: public void write(Appendable out) throws IOException {
80: out.append("unit");
81: }
82:
83: public String toString() {
84: return "unit";
85: }
86:
87: }
|