package php.runtime.loader.dump;
import php.runtime.env.Context;
import php.runtime.env.Environment;
import php.runtime.loader.dump.io.DumpInputStream;
import php.runtime.loader.dump.io.DumpOutputStream;
import php.runtime.reflection.PropertyEntity;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class PropertyDumper extends Dumper<PropertyEntity> {
public PropertyDumper(Context context, Environment env, boolean debugInformation) {
super(context, env, debugInformation);
}
@Override
public int getType() {
return Types.PROPERTY;
}
@Override
public void save(PropertyEntity entity, OutputStream output) throws IOException {
DumpOutputStream print = new DumpOutputStream(output);
// static
print.writeBoolean(entity.isStatic());
// modifier
print.writeEnum(entity.getModifier());
// name
print.writeName(entity.getName());
// trace
print.writeTrace(debugInformation ? entity.getTrace() : null);
// def
print.writeBoolean(entity.isDefault());
// def value
print.writeMemory(entity.getDefaultValue());
// raw
print.writeRawData(null);
}
@Override
public PropertyEntity load(InputStream input) throws IOException {
PropertyEntity property = new PropertyEntity(context);
DumpInputStream data = new DumpInputStream(input);
property.setStatic(data.readBoolean());
property.setModifier(data.readModifier());
property.setName(data.readName());
property.setTrace(data.readTrace(context));
property.setDefault(data.readBoolean());
property.setDefaultValue(data.readMemory());
byte[] raw = data.readRawData();
return property;
}
}