package android.content.res;
import android.os.Parcel;
import android.os.Parcelable;
/**
* Native transport for package asset redirection information coming from the
* AssetRedirectionManagerService.
*
* @hide
*/
public class PackageRedirectionMap implements Parcelable {
private final int mNativePointer;
public static final Parcelable.Creator<PackageRedirectionMap> CREATOR
= new Parcelable.Creator<PackageRedirectionMap>() {
public PackageRedirectionMap createFromParcel(Parcel in) {
return new PackageRedirectionMap(in);
}
public PackageRedirectionMap[] newArray(int size) {
return new PackageRedirectionMap[size];
}
};
public PackageRedirectionMap() {
this(nativeConstructor());
}
private PackageRedirectionMap(Parcel in) {
this(nativeCreateFromParcel(in));
}
private PackageRedirectionMap(int nativePointer) {
if (nativePointer == 0) {
throw new RuntimeException();
}
mNativePointer = nativePointer;
}
@Override
protected void finalize() throws Throwable {
nativeDestructor(mNativePointer);
}
public int getNativePointer() {
return mNativePointer;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
if (!nativeWriteToParcel(mNativePointer, dest)) {
throw new RuntimeException();
}
}
public int getPackageId() {
return nativeGetPackageId(mNativePointer);
}
public void addRedirection(int fromIdent, int toIdent) {
nativeAddRedirection(mNativePointer, fromIdent, toIdent);
}
// Used for debugging purposes only.
public int[] getRedirectionKeys() {
return nativeGetRedirectionKeys(mNativePointer);
}
// Used for debugging purposes only.
public int lookupRedirection(int fromIdent) {
return nativeLookupRedirection(mNativePointer, fromIdent);
}
private static native int nativeConstructor();
private static native void nativeDestructor(int nativePointer);
private static native int nativeCreateFromParcel(Parcel p);
private static native boolean nativeWriteToParcel(int nativePointer, Parcel p);
private native void nativeAddRedirection(int nativePointer, int fromIdent, int toIdent);
private native int nativeGetPackageId(int nativePointer);
private native int[] nativeGetRedirectionKeys(int nativePointer);
private native int nativeLookupRedirection(int nativePointer, int fromIdent);
}