package php.runtime.loader.dump;
import php.runtime.Memory;
import php.runtime.common.Modifier;
import php.runtime.env.Context;
import php.runtime.env.Environment;
import php.runtime.env.TraceInfo;
import php.runtime.loader.dump.io.DumpInputStream;
import php.runtime.loader.dump.io.DumpOutputStream;
import php.runtime.reflection.ConstantEntity;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class ConstantDumper extends Dumper<ConstantEntity> {
public ConstantDumper(Context context, Environment env, boolean debugInformation) {
super(context, env, debugInformation);
}
@Override
public int getType() {
return Types.CONSTANT;
}
@Override
public void save(ConstantEntity entity, OutputStream output) throws IOException {
DumpOutputStream dump = new DumpOutputStream(output);
dump.writeBoolean(entity.isCaseSensitise());
dump.writeEnum(Modifier.PUBLIC);
dump.writeName(entity.getName());
dump.writeTrace(debugInformation ? null : entity.getTrace());
dump.writeMemory(entity.getValue());
dump.writeRawData(null);
}
@Override
public ConstantEntity load(InputStream input) throws IOException {
DumpInputStream dump = new DumpInputStream(input);
boolean cs = dump.readBoolean();
Modifier modifier = dump.readModifier();
String name = dump.readName();
TraceInfo trace = dump.readTrace(context);
Memory value = dump.readMemory();
ConstantEntity entity = new ConstantEntity(name, value, cs);
entity.setContext(context);
entity.setTrace(trace);
dump.readRawData();
return entity;
}
}