package xapi.gwt.collect;
import xapi.collect.api.StringDictionary;
import xapi.util.api.ReceivesValue;
import com.google.gwt.core.client.JavaScriptObject;
public class JsStringDictionary <V> extends JavaScriptObject implements StringDictionary<V>{
protected JsStringDictionary() {
}
public static native <V> JsStringDictionary<V> create()
/*-{
return {};
}-*/;
public static native <V> JsStringDictionary<V> create(Class<V> cls)
/*-{
return {_v$: cls};
}-*/;
public final native <Unsafe> Unsafe getUnsafe(String key)
/*-{
return this[key];
}-*/;
public final native int getInt(String key)
/*-{
return this[key];
}-*/;
public final native double getDouble(String key)
/*-{
return this[key];
}-*/;
public final native double getBoolean(String key)
/*-{
return !!this[key];
}-*/;
@Override
public final native V getValue(String key)
/*-{
return this[key];
}-*/;
@Override
public final native boolean hasKey(String key)
/*-{
return this[key] != undefined;
}-*/;
@Override
public final native V setValue(String key, V value)
/*-{
var r = this[key];
this[key] = value;
return r;
}-*/;
@Override
public final native V removeValue(String key)
/*-{
var r = this[key];
delete this[key];
return r;
}-*/;
@Override
public final native void clearValues()
/*-{
for (var i in this) {
if (Object.prototype.hasOwnProperty.apply(this, i))
delete this[i];
}
}-*/;
@Override
public final native void forKeys(ReceivesValue<String> receiver)
/*-{
for (var i in this) {
if (i !== '_v$' && Object.prototype.hasOwnProperty.call(this, i))
receiver.@xapi.util.api.ReceivesValue::set(Ljava/lang/Object;)(i);
}
}-*/;
}