package com.akjava.gwt.html5.client.file;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.core.client.JsArrayInteger;
import com.google.gwt.typedarrays.client.Uint8ArrayNative;
import com.google.gwt.typedarrays.shared.ArrayBuffer;
/*
* i can't solve this
* com.google.gwt.dev.jjs.InternalCompilerException: Already seen an implementing JSO subtype (Uint8ArrayImpl) for interface (ArrayBufferView) while examining newly-added type (ArrayBufferViewNative). This is a bug in JSORestrictionsChecker.
*/
public class Uint8Array extends JavaScriptObject {
protected Uint8Array(){}
/**
* should id do boule?
* @return
*/
public final native int length()/*-{
return this.length;
}-*/;
public final native int get(int index)/*-{
return this[index];
}-*/;
public final native ArrayBuffer getBuffer()/*-{
return this.buffer;
}-*/;
public static final native Uint8Array createUint8(ArrayBuffer buffer)/*-{
var uInt8Array = new $wnd.Uint8Array(buffer);
return uInt8Array;
}-*/;
public static final native Uint8Array createUint8(int length)/*-{
var uInt8Array = new $wnd.Uint8Array(length);
return uInt8Array;
}-*/;
public static final native Uint8Array createUint8(byte[] bytes)/*-{
var uInt8Array = new $wnd.Uint8Array(bytes);
return uInt8Array;
}-*/;
/*
public static final Uint8Array createUint8(byte[] bytes){
JsArrayInteger array=(JsArrayInteger) JsArrayInteger.createArray();
for(int i=0;i<bytes.length;i++){
array.push(bytes[i]);
}
return createUInt8(array);
}*/
public static final native Uint8Array createUInt8(JsArrayInteger array)/*-{
var uInt8Array = new $wnd.Uint8Array(array.length);
for (var i = 0; i < array.length; ++i) {
uInt8Array[i] = array[i];
}
return uInt8Array;
}-*/;
public final native void set(int i, int v) /*-{
this[i]=v;
}-*/;
public final byte[] toByteArray(){
byte[] bt=new byte[this.length()];
for(int j=0;j<this.length();j++){
bt[j]=(byte) this.get(j);
}
return bt;
}
public final Uint8ArrayNative convertToNative(){
return this.cast();
}
}