/** * Returns the nth function argument. */ @VariableArguments public static Value func_get_arg(Env env, int index) { Value []args = env.getFunctionArgs(); if (0 <= index && index < args.length) return args[index]; else { // XXX: warning return NullValue.NULL; } }
/** * Returns the number of arguments to the function. */ @VariableArguments public static Value func_num_args(Env env) { Value []args = env.getFunctionArgs(); if (args != null && args.length > 0) return LongValue.create(args.length); else return LongValue.ZERO; }
/** * Returns the function arguments as an array. */ @VariableArguments public static Value func_get_args(Env env) { Value []args = env.getFunctionArgs(); ArrayValue result = new ArrayValueImpl(); if (args != null) { for (int i = 0; i < args.length; i++) result.put(args[i]); } return result; }
/** * Decodes and then encodes variables. * * XXX: variable arguments to convert. */ @VariableArguments public static StringValue mb_convert_variables(Env env, String toEncoding, String fromEncodings, @Reference Value vars) { // XXX: fallback encoding int tail = fromEncodings.indexOf(',', 1); if (tail < 0) tail = fromEncodings.length(); String srcEncoding; if (tail < 0) srcEncoding = fromEncodings; else srcEncoding = getEncoding(env, fromEncodings.substring(0, tail).trim()); Value decoded = decodeAll(env, vars, srcEncoding); vars.set(encodeAll(env, decoded, toEncoding)); return env.createString(srcEncoding); }