mirror of
https://github.com/revanced/ARSCLib.git
synced 2025-05-01 14:44:27 +02:00
106 lines
2.9 KiB
Java
Executable File
106 lines
2.9 KiB
Java
Executable File
package com.reandroid.lib.arsc.value;
|
|
|
|
import com.reandroid.lib.arsc.base.Block;
|
|
import com.reandroid.lib.arsc.base.BlockCounter;
|
|
import com.reandroid.lib.arsc.io.BlockReader;
|
|
import com.reandroid.lib.arsc.item.IntegerItem;
|
|
import com.reandroid.lib.arsc.item.PackageName;
|
|
import com.reandroid.lib.json.JsonItem;
|
|
import org.json.JSONObject;
|
|
|
|
import java.io.IOException;
|
|
import java.io.OutputStream;
|
|
|
|
public class LibraryInfo extends Block implements JsonItem<JSONObject> {
|
|
private final IntegerItem mPackageId;
|
|
private final PackageName mPackageName;
|
|
|
|
public LibraryInfo(){
|
|
super();
|
|
this.mPackageId=new IntegerItem();
|
|
this.mPackageName=new PackageName();
|
|
mPackageId.setIndex(0);
|
|
mPackageId.setParent(this);
|
|
mPackageName.setIndex(1);
|
|
mPackageName.setParent(this);
|
|
}
|
|
|
|
public int getPackageId(){
|
|
return mPackageId.get();
|
|
}
|
|
public void setPackageId(int id){
|
|
mPackageId.set(id);
|
|
}
|
|
public String getPackageName(){
|
|
return mPackageName.get();
|
|
}
|
|
public void setPackageName(String packageName){
|
|
mPackageName.set(packageName);
|
|
}
|
|
|
|
@Override
|
|
public byte[] getBytes() {
|
|
if(isNull()){
|
|
return null;
|
|
}
|
|
return addBytes(mPackageId.getBytes(), mPackageName.getBytes());
|
|
}
|
|
@Override
|
|
public int countBytes() {
|
|
if(isNull()){
|
|
return 0;
|
|
}
|
|
return mPackageId.countBytes()+mPackageName.countBytes();
|
|
}
|
|
@Override
|
|
public void onCountUpTo(BlockCounter counter) {
|
|
if(counter.FOUND){
|
|
return;
|
|
}
|
|
if(counter.END==this){
|
|
counter.FOUND=true;
|
|
return;
|
|
}
|
|
mPackageId.onCountUpTo(counter);
|
|
mPackageName.onCountUpTo(counter);
|
|
}
|
|
@Override
|
|
protected int onWriteBytes(OutputStream stream) throws IOException {
|
|
int result=mPackageId.writeBytes(stream);
|
|
result+=mPackageName.writeBytes(stream);
|
|
return result;
|
|
}
|
|
@Override
|
|
public void onReadBytes(BlockReader reader) throws IOException{
|
|
mPackageId.readBytes(reader);
|
|
mPackageName.readBytes(reader);
|
|
}
|
|
|
|
@Override
|
|
public JSONObject toJson() {
|
|
JSONObject jsonObject=new JSONObject();
|
|
jsonObject.put("id", getPackageId());
|
|
jsonObject.put("name", getPackageName());
|
|
return jsonObject;
|
|
}
|
|
@Override
|
|
public void fromJson(JSONObject json) {
|
|
setPackageId(json.getInt("id"));
|
|
setPackageName(json.getString("name"));
|
|
}
|
|
@Override
|
|
public String toString(){
|
|
StringBuilder builder=new StringBuilder();
|
|
builder.append("LIBRARY{");
|
|
builder.append(String.format("0x%02x", getPackageId()));
|
|
builder.append(':');
|
|
String name=getPackageName();
|
|
if(name==null){
|
|
name="NULL";
|
|
}
|
|
builder.append(name);
|
|
builder.append('}');
|
|
return builder.toString();
|
|
}
|
|
}
|