protected ObjectValue(Env env, QuercusClass quercusClass) { this(env); _quercusClass = quercusClass; _className = quercusClass.getName(); }
/** * Evaluates the new() method call. */ public Value callNew(Env env, QuercusClass qClass, Value qThis, Value [] args) { return(callMethod(env, qClass, qThis, args)); }
/** * Evaluates the expression. * * @param env the calling environment. * * @return the expression value. */ public override Value eval(Env env) { Value qThis = env.getThis(); QuercusClass cls = qThis.getQuercusClass(); if (cls == null) { env.error(L.l("no calling class found"), getLocation()); return(NullValue.NULL); } StringValue methodName = _methodName.evalStringValue(env); int hash = methodName.hashCodeCaseInsensitive(); Value [] values = evalArgs(env, _args); env.pushCall(this, cls, values); try { env.checkTimeout(); return(cls.callMethod(env, qThis, methodName, hash, values)); } finally { env.popCall(); } }
public override Value callMethodRef(Env env, QuercusClass qClass, Value qThis, Value a1, Value a2, Value a3, Value a4) { return(callMethod(env, qClass, qThis, a1, a2, a3, a4).copyReturn()); }
abstract override public Value callMethodRef(Env env, QuercusClass qClass, Value qThis, Value a1, Value a2, Value a3, Value a4);
/** * Evaluates the expression. * * @param env the calling environment. * * @return the expression value. */ public Value eval(Env env) { // php/09d2 QuercusClass cls = _className.evalQuercusClass(env); return(cls.getConstant(env, _name)); }
/** * Evaluates the expression. * * @param env the calling environment. * * @return the expression value. */ public Value eval(Env env) { Value qThis = env.getThis(); QuercusClass cls = qThis.getQuercusClass(); if (cls == null) { env.error(L.l("no calling class found"), getLocation()); return(NullValue.NULL); } Value [] values = evalArgs(env, _args); env.pushCall(this, cls, values); try { env.checkTimeout(); return(cls.callMethod(env, qThis, _methodName, _hash, values)); } finally { env.popCall(); } }
public override Value callMethodRef(Env env, QuercusClass qClass, Value qThis, Value [] argValues) { /* * Value []args; * * if (_defaultArgs.length <= argValues.length) { * args = argValues; * } * else { * args = new Value[_defaultArgs.length]; * * System.arraycopy(argValues, 0, args, 0, argValues.length); * * for (int i = argValues.length; i < args.length; i++) { * if (_defaultArgs[i] != null) * args[i] = _defaultArgs[i].eval(env); * else * args[i] = NullValue.NULL; * } * } */ if (argValues.length < _requiredArgs) { env.warning("required argument missing"); } return(callMethodRefImpl(env, qClass, qThis, argValues)); }
private void addInterface(Env env, ArrayValue array, string name) { QuercusClass cls = env.findClass(name); array.put(StringValue.create(name), env.wrapJava(new ReflectionClass(cls))); }
public override Value callMethod(Env env, QuercusClass qClass, Value qThis, Value a1, Value a2, Value a3, Value a4, Value a5) { return(callMethodRef(env, qClass, qThis, a1, a2, a3, a4, a5).toValue()); }
public static Value class_parents(Env env, Value obj, @Optional bool autoload) { QuercusClass cls; if (obj.isObject()) { cls = ((ObjectValue)obj.toObject(env)).getQuercusClass(); } else { cls = env.findClass(obj.ToString(), autoload, true, true); } if (cls != null) { ArrayValue array = new ArrayValueImpl(); QuercusClass parent = cls; while ((parent = parent.getParent()) != null) { string name = parent.getName(); array.put(name, name); } return(array); } else { return(BooleanValue.FALSE); } }
public void close() { QuercusClass cls = _wrapper.getQuercusClass(); if (cls != null) { StringValue funName; if (_env.isUnicodeSemantics()) { funName = STREAM_CLOSE_U; } else { funName = STREAM_CLOSE; } AbstractFunction fun = cls.findFunction(funName); if (fun == null) { //_env.warning(L.l("{0}::{1} @is not implemented", cls.getName(), funName)); return; } _wrapper.callMethod(_env, funName); } }
/** * Evaluates the method with the given variable arguments. */ public override Value callMethod(Env env, QuercusClass qClass, Value qThis, Value [] args) { switch (args.length) { case 0: return(callMethod(env, qClass, qThis, _args[0].eval(env), _args[1].eval(env), _args[2].eval(env))); case 1: return(callMethod(env, qClass, qThis, args[0], _args[1].eval(env), _args[2].eval(env))); case 2: return(callMethod(env, qClass, qThis, args[0], args[1], _args[2].eval(env))); case 3: default: return(callMethod(env, qClass, qThis, args[0], args[1], args[2])); } }
public override Value callMethod(Env env, QuercusClass qClass, Value qThis) { return(callMethod(env, qClass, qThis, _args[0].eval(env), _args[1].eval(env), _args[2].eval(env))); }
public int hashCode() { int hash = 37; ClassDef def = _defRef.get(); QuercusClass parent = null; if (_parentRef != null) { parent = _parentRef.get(); } if (def != null) { hash = 65521 * hash + def.hashCode(); } if (parent != null) { hash = 65521 * hash + parent.hashCode(); } return(hash); }
/** * Evaluates the expression. * * @param env the calling environment. * * @return the expression value. */ public Value eval(Env env) { QuercusClass cl = env.findClass(_className); if (cl == null) { throw env.createErrorException(L.l("{0} @is an unknown class", _className)); } StringValue nameV = _nameV; AbstractFunction fun = cl.getFunction(nameV); Value [] values = evalArgs(env, _args); Value qThis = env.getThis(); env.pushCall(this, qThis, values); try { env.checkTimeout(); return(cl.callMethod(env, qThis, nameV, nameV.hashCode(), values)); } finally { env.popCall(); } }
/** * Evaluates the expression. * * @param env the calling environment. * * @return the expression value. */ public Value eval(Env env) { QuercusClass cl = env.findClass(_className); if (cl == null) { env.error(L.l("no matching class {0}", _className), getLocation()); } Value [] values = evalArgs(env, _args); Value oldThis = env.getThis(); // php/09qe Value qThis = oldThis; env.pushCall(this, cl, values); try { env.checkTimeout(); return(cl.callConstructor(env, qThis, values)); } finally { env.popCall(); env.setThis(oldThis); } }
public override Value callMethod(Env env, QuercusClass qClass, Value qThis, Value a1) { return(callMethodRef(env, qClass, qThis, a1).toValue()); }
/** * Evaluates the method with the given variable arguments. */ public override Value callMethodRef(Env env, QuercusClass qClass, Value qThis, Value a1) { return(callMethodRef(env, qClass, qThis, a1, _args[1].eval(env))); }
public override Value callMethodRef(Env env, QuercusClass qClass, Value qThis) { // php/37a2 return(callMethod(env, qClass, qThis).copyReturn()); }
public override Value callMethodRef(Env env, QuercusClass qClass, Value qThis, Value [] args) { return(callMethod(env, qClass, qThis, args).copyReturn()); }
/** * Evaluates the function. */ public override Value callMethod(Env env, QuercusClass qClass, Value qThis, Value [] args) { if (args.length < _methodTable.length) { AbstractJavaMethod [] methods = _methodTable[args.length]; if (methods != null) { if (methods.length == 1) { return(methods[0].callMethod(env, qClass, qThis, args)); } else { AbstractJavaMethod method = getBestFitJavaMethod(methods, _restMethodTable, args); return(method.callMethod(env, qClass, qThis, args)); } } else { if (_restMethodTable.length == 0) { env.warning(L.l( "'{0}' overloaded method call with {1} arguments " + "does not match any overloaded method", getName(), args.length)); return(NullValue.NULL); } AbstractJavaMethod method = getBestFitJavaMethod(methods, _restMethodTable, args); return(method.callMethod(env, qClass, qThis, args)); } } else { if (_restMethodTable.length == 0) { env.warning(L.l( "'{0}' overloaded method call with {1} " + "arguments has too many arguments", getName(), args.length)); return(NullValue.NULL); } else { AbstractJavaMethod method = getBestFitJavaMethod(null, _restMethodTable, args); return(method.callMethod(env, qClass, qThis, args)); } } }
/** * Evaluates the expression. * * @param env the calling environment. * * @return the expression value. */ public override Value eval(Env env) { Value qThis = env.getThis(); QuercusClass parent = qThis.getQuercusClass().getTraitParent(env, _traitName); return(parent.getConstant(env, _name)); }
public override Value callMethod(Env env, QuercusClass qClass, Value qThis, Value a1, Value a2) { return(callMethod(env, qClass, qThis, a1, a2, _args[2].eval(env))); }
public override string getComment(Env env) { QuercusClass cls = getDeclaringClass(env, _cls); ClassDef def = cls.getClassDef(); return(def.getStaticFieldComment(_name)); }
public string getComment(Env env) { QuercusClass cls = getDeclaringClass(env, _cls); ClassDef def = cls.getClassDef(); return(def.getFieldComment(_nameV)); }
/** * Evaluates the function as a method call. */ public Value callMethod(Env env, QuercusClass qClass, Value qThis, Value a1, Value a2, Value a3) { return(callMethod(env, qClass, qThis, new Value[] { a1, a2, a3 })); }
/** * Evaluates the function as a method call. */ public Value callMethodRef(Env env, QuercusClass qClass, Value qThis, Value a1, Value a2) { return(callMethodRef(env, qClass, qThis, new Value[] { a1, a2 })); }
/** * Evaluates the function as a method call. */ public Value callMethodRef(Env env, QuercusClass qClass, Value qThis, Value a1, Value a2, Value a3, Value a4, Value a5) { return(callMethodRef(env, qClass, qThis, new Value[] { a1, a2, a3, a4, a5 })); }
protected QuercusClass getDeclaringClass(Env env, QuercusClass cls) { if (_declaringClass == null) { _declaringClass = getDeclaringClassImpl(env, cls); } return(_declaringClass); }