package php.runtime.ext.core.classes; import php.runtime.Memory; import php.runtime.env.Environment; import php.runtime.lang.BaseObject; import php.runtime.memory.*; import php.runtime.reflection.ClassEntity; import static php.runtime.annotation.Reflection.*; @Name("php\\lang\\ThreadGroup") public class WrapThreadGroup extends BaseObject { protected ThreadGroup group; public WrapThreadGroup(Environment env, ThreadGroup group) { super(env); this.group = group; } public WrapThreadGroup(Environment env, ClassEntity clazz) { super(env, clazz); } public ThreadGroup getGroup() { return group; } public void setGroup(ThreadGroup group) { this.group = group; } public WrapThreadGroup(Environment env) { super(env); } @Signature({ @Arg("name"), @Arg(value = "parent", typeClass = "php\\lang\\ThreadGroup", optional = @Optional("NULL")) }) public Memory __construct(Environment env, Memory... args){ if (args[1].isNull()) setGroup(new ThreadGroup(args[0].toString())); else setGroup(new ThreadGroup(args[1].toObject(WrapThreadGroup.class).getGroup(), args[0].toString())); return Memory.NULL; } @Signature public Memory __debugInfo(Environment env, Memory... args) { ArrayMemory r = new ArrayMemory(); r.refOfIndex("*name").assign(group.getName()); r.refOfIndex("*maxPriority").assign(group.getMaxPriority()); if (group.getParent() != null) r.refOfIndex("*parentName").assign(group.getParent().getName()); return r.toConstant(); } @Signature public Memory getActiveCount(Environment env, Memory... args){ return LongMemory.valueOf(group.activeCount()); } @Signature public Memory getActiveGroupCount(Environment env, Memory... args){ return LongMemory.valueOf(group.activeGroupCount()); } @Signature public Memory getName(Environment env, Memory... args){ return StringMemory.valueOf(group.getName()); } @Signature public Memory isDaemon(Environment env, Memory... args){ return TrueMemory.valueOf(group.isDaemon()); } @Signature public Memory isDestroyed(Environment env, Memory... args){ return TrueMemory.valueOf(group.isDestroyed()); } @Signature public Memory getMaxPriority(Environment env, Memory... args){ return LongMemory.valueOf(group.getMaxPriority()); } @Signature(@Arg("value")) public Memory setDaemon(Environment env, Memory... args){ group.setDaemon(args[0].toBoolean()); return Memory.NULL; } @Signature(@Arg("value")) public Memory setMaxPriority(Environment env, Memory... args){ group.setMaxPriority(args[0].toInteger()); return Memory.NULL; } @Signature public Memory destroy(Environment env, Memory... args){ group.destroy(); return Memory.NULL; } @Signature public Memory checkAccess(Environment env, Memory... args){ group.checkAccess(); return Memory.NULL; } @Signature public Memory interrupt(Environment env, Memory... args){ group.interrupt(); return Memory.NULL; } @Signature public Memory getParent(Environment env, Memory... args){ if (group.getParent() == null) return Memory.NULL; else return new ObjectMemory(new WrapThreadGroup(env, group.getParent())); } }