package org.develnext.jphp.debug.impl.command;
import org.develnext.jphp.debug.impl.DebugTick;
import org.develnext.jphp.debug.impl.Debugger;
import org.develnext.jphp.debug.impl.command.support.CommandArguments;
import org.develnext.jphp.debug.impl.command.support.ContextValueProvider;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import php.runtime.Memory;
import php.runtime.memory.ArrayMemory;
import php.runtime.memory.DoubleMemory;
import php.runtime.memory.LongMemory;
import php.runtime.memory.StringMemory;
public class PropertyGetCommand extends AbstractCommand {
@Override
public String getName() {
return "property_get";
}
@Override
public void run(Debugger context, CommandArguments args, Document result) {
DebugTick tick = context.getRegisteredTick();
Element response = createResponse(args, result);
response.setAttribute("encoding", "base64");
String varName = args.get("n");
if (varName.startsWith("$")) {
varName = varName.substring(1);
}
ArrayMemory locals = tick.getLocals();
if (!locals.containsKey(varName)) {
return;
}
ContextValueProvider provider = getContextValueProvider(context, result);
if (provider.getMaxData() != 0 && args.containsKey("m")) {
try {
provider.setMaxData(Integer.parseInt(args.get("m")));
} catch (NumberFormatException e) {
return;
}
}
Element property = provider.getProperty(null, locals.valueOfIndex(varName));
response.setAttribute("size", property.getAttribute("size"));
response.appendChild(property.getFirstChild());
}
protected ContextValueProvider getContextValueProvider(Debugger debugger, Document document) {
return new ContextValueProvider(debugger, document);
}
}