package php.runtime.ext.core.classes;
import php.runtime.Memory;
import php.runtime.annotation.Reflection.Arg;
import php.runtime.annotation.Reflection.Name;
import php.runtime.annotation.Reflection.Signature;
import php.runtime.common.HintType;
import php.runtime.env.Environment;
import php.runtime.env.Package;
import php.runtime.lang.BaseObject;
import php.runtime.memory.ArrayMemory;
import php.runtime.reflection.ClassEntity;
@Name("php\\lang\\Package")
public class WrapPackage extends BaseObject {
private Package pkg;
public WrapPackage(Environment env, Package pkg) {
super(env);
this.pkg = pkg;
}
public WrapPackage(Environment env, ClassEntity clazz) {
super(env, clazz);
}
public Package getPackage() {
return pkg;
}
@Signature
public Memory __construct(Environment env, Memory... args) {
pkg = new Package();
return Memory.NULL;
}
@Signature(@Arg("name"))
public Memory hasClass(Environment env, Memory... args) {
return pkg.hasClass(args[0].toString()) ? Memory.TRUE : Memory.FALSE;
}
@Signature(@Arg("name"))
public Memory hasFunction(Environment env, Memory... args) {
return pkg.hasFunction(args[0].toString()) ? Memory.TRUE : Memory.FALSE;
}
@Signature(@Arg("name"))
public Memory hasConstant(Environment env, Memory... args) {
return pkg.hasConstant(args[0].toString()) ? Memory.TRUE : Memory.FALSE;
}
@Signature(@Arg("name"))
public Memory addClass(Environment env, Memory... args) {
return pkg.addClass(args[0].toString()) ? Memory.TRUE : Memory.FALSE;
}
@Signature(@Arg(value = "names", type = HintType.ARRAY))
public Memory addClasses(Environment env, Memory... args) {
for (Memory one : args[0].toValue(ArrayMemory.class)) {
pkg.addClass(one.toString());
}
return Memory.NULL;
}
@Signature(@Arg("name"))
public Memory addFunction(Environment env, Memory... args) {
return pkg.addFunction(args[0].toString()) ? Memory.TRUE : Memory.FALSE;
}
@Signature(@Arg(value = "names", type = HintType.ARRAY))
public Memory addFunctions(Environment env, Memory... args) {
for (Memory one : args[0].toValue(ArrayMemory.class)) {
pkg.addFunction(one.toString());
}
return Memory.NULL;
}
@Signature(@Arg("name"))
public Memory addConstant(Environment env, Memory... args) {
return pkg.addConstant(args[0].toString()) ? Memory.TRUE : Memory.FALSE;
}
@Signature(@Arg(value = "names", type = HintType.ARRAY))
public Memory addConstants(Environment env, Memory... args) {
for (Memory one : args[0].toValue(ArrayMemory.class)) {
pkg.addConstant(one.toString());
}
return Memory.NULL;
}
}