+++ /dev/null
-package org.ibex.js;
-
-import org.ibex.util.*;
-
-class JSString extends JSPrimitive {
- final String s;
- public JSString(String s) { this.s = s; }
- public int hashCode() { return s.hashCode(); }
-
- public boolean jsequals(JS o) {
- if(o == this) return true;
- if(o instanceof JSString) {
- return ((JSString)o).s.equals(s);
- } else if(o instanceof JSNumber) {
- return o.jsequals(this);
- } else {
- return false;
- }
- }
-
- private final static Hash internHash = new Hash();
- static synchronized JS intern(String s) {
- synchronized(internHash) {
- JS js = (JS)internHash.get(s);
- if(js == null) internHash.put(s,js = new Intern(s));
- return js;
- }
- }
- static class Intern extends JSString {
- public Intern(String s) { super(s); }
- protected void finalize() { synchronized(internHash) { internHash.put(s,null); } }
- }
-
- String coerceToString() { return s; }
-}