summaryrefslogtreecommitdiff
path: root/sources/scalac/util/TermName.java
diff options
context:
space:
mode:
Diffstat (limited to 'sources/scalac/util/TermName.java')
-rw-r--r--sources/scalac/util/TermName.java119
1 files changed, 0 insertions, 119 deletions
diff --git a/sources/scalac/util/TermName.java b/sources/scalac/util/TermName.java
deleted file mode 100644
index 8215a8ce2e..0000000000
--- a/sources/scalac/util/TermName.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/* ____ ____ ____ ____ ______ *\
-** / __// __ \/ __// __ \/ ____/ SOcos COmpiles Scala **
-** __\_ \/ /_/ / /__/ /_/ /\_ \ (c) 2002, LAMP/EPFL **
-** /_____/\____/\___/\____/____/ **
-\* */
-
-// $Id$
-
-package scalac.util;
-
-import java.util.HashMap;
-
-/** Instances of this class represent term names. */
-public final class TermName extends Name {
-
- //########################################################################
- // Private Variables
-
- /** Hashtable from string representation to term names. */
- private static HashMap/*<String,TermName>*/ strings = new HashMap();
-
- /** Hashtable from ASCII representation to term names. */
- private static TermName[] asciis = new TermName[0x00008000];
-
- //########################################################################
- // Private Fields
-
- /** The string representation */
- private final String string;
-
- /** The ASCII representation (null if not yet computed) */
- private byte[] ascii;
-
- /** The next name stored in the same bucket of the ASCII table */
- private TermName next;
-
- //########################################################################
- // Private Constructors
-
- /** Initializes this instance. */
- private TermName(String string) {
- super(2 * strings.size(), null);
- this.string = string;
- strings.put(string, this);
- }
-
- //########################################################################
- // Public Factories
-
- /** Returns the term name with given ASCII representation. */
- public static TermName fromAscii(byte[] bytes, int start, int count) {
- int index = hashValue(bytes, start, count) & (asciis.length - 1);
- for (TermName name = asciis[index]; name != null; name = name.next)
- if (name.equals(bytes, start, count)) return name;
- TermName name = fromString(
- SourceRepresentation.ascii2string(bytes, start, count));
- byte[] ascii = new byte[count];
- for (int i = 0; i < ascii.length; i++) ascii[i] = bytes[start + i];
- name.setAscii(ascii, index);
- return name;
- }
-
- /** Returns the term name with given string representation. */
- public static TermName fromString(String string) {
- Object value = strings.get(string);
- return value != null ? (TermName)value : new TermName(string);
- }
-
- //########################################################################
- // Public Methods
-
- /** Returns the string representation of this name. */
- public String toString() {
- return string;
- }
-
- /**
- * Returns the ASCII representation of this name. The returned
- * array is not a copy. Therefore, it is forbidden to modify it.
- */
- public byte[] toAsciiUnsafe() {
- if (ascii == null) {
- byte[] ascii = SourceRepresentation.string2ascii(string);
- int index = hashValue(ascii, 0, ascii.length) & (asciis.length-1);
- setAscii(ascii, index);
- }
- return ascii;
- }
-
- //########################################################################
- // Private Methods & Functions
-
- /** Sets the ASCII representation to given one. */
- private void setAscii(byte[] ascii, int index) {
- assert this.ascii == null: this;
- this.ascii = ascii;
- this.next = asciis[index];
- asciis[index] = this;
- }
-
- /** Is this name's ASCII representations equal to given one? */
- private boolean equals(byte[] bytes, int start, int count) {
- if (ascii.length != count) return false;
- for (int i = 0; i < count; i++)
- if (ascii[i] != bytes[start + i]) return false;
- return true;
- }
-
- /** Returns the hash code of the ASCII representation. */
- private static int hashValue(byte[] bytes, int start, int count) {
- if (count <= 0) return 0;
- return count * (41 * 41 * 41)
- + bytes[start] * (41 * 41)
- + bytes[start + count - 1] * 41
- + bytes[start + (count >> 1)];
- }
-
- //########################################################################
-}