package php.runtime.lang;
import php.runtime.Memory;
import php.runtime.annotation.Reflection;
import php.runtime.common.HintType;
import php.runtime.common.Modifier;
import php.runtime.env.CallStackItem;
import php.runtime.env.Environment;
import php.runtime.lang.exception.BaseBaseException;
import php.runtime.lang.exception.BaseThrowable;
import php.runtime.memory.StringMemory;
import php.runtime.reflection.ClassEntity;
import static php.runtime.annotation.Reflection.*;
@BaseType
@Name("Exception")
@Reflection.Signature(root = true, value =
{
@Arg(value = "message", modifier = Modifier.PROTECTED, type = HintType.STRING),
@Arg(value = "code", modifier = Modifier.PROTECTED, type = HintType.INT),
@Arg(value = "previous", modifier = Modifier.PROTECTED, type = HintType.OBJECT),
@Arg(value = "trace", modifier = Modifier.PROTECTED, type = HintType.ARRAY),
@Arg(value = "file", modifier = Modifier.PROTECTED, type = HintType.STRING),
@Arg(value = "line", modifier = Modifier.PROTECTED, type = HintType.INT),
@Arg(value = "position", modifier = Modifier.PROTECTED, type = HintType.INT)
})
public class BaseException extends BaseBaseException implements BaseThrowable {
public BaseException(Environment env) {
super(env);
}
public BaseException(Environment env, ClassEntity clazz) {
super(env, clazz);
}
@Signature(value = {
@Arg(value = "message", optional = @Optional(value = "", type = HintType.STRING)),
@Arg(value = "code", optional = @Optional(value = "0", type = HintType.INT)),
@Arg(value = "previous", nativeType = BaseThrowable.class, optional = @Optional(value = "NULL"))
})
public Memory __construct(Environment env, Memory... args) {
clazz.refOfProperty(props, "message").assign(args[0].toString());
if (args.length > 1)
clazz.refOfProperty(props, "code").assign(args[1].toLong());
if (args.length > 2)
clazz.refOfProperty(props, "previous").assign(args[2]);
return Memory.NULL;
}
@Override
@Signature
final public Memory getMessage(Environment env, Memory... args) {
return super.getMessage(env, args);
}
@Override
@Signature
final public Memory getCode(Environment env, Memory... args) {
return super.getCode(env, args);
}
@Override
@Signature
final public Memory getLine(Environment env, Memory... args) {
return super.getLine(env, args);
}
@Override
@Signature
final public Memory getPosition(Environment env, Memory... args) {
return super.getPosition(env, args);
}
@Override
@Signature
final public Memory getFile(Environment env, Memory... args) {
return super.getFile(env, args);
}
@Override
@Signature
final public Memory getTrace(Environment env, Memory... args) {
return super.getTrace(env, args);
}
@Override
@Signature
final public Memory getPrevious(Environment env, Memory... args) {
return super.getPrevious(env, args);
}
@Override
@Signature
public Memory __toString(Environment env, Memory... args) {
return super.__toString(env, args);
}
@Override
@Signature
final public Memory getTraceAsString(Environment env, Memory... args) {
return super.getTraceAsString(env, args);
}
@Signature
private Memory __clone(Environment env, Memory... args) {
return Memory.NULL;
}
}