Пример #1
0
Object f_hphp_recursiveiteratoriterator___construct(CObjRef obj, CObjRef iterator, int64 mode, int64 flags) {
  if (iterator->o_instanceof("RecursiveDirectoryIterator")) {
    CVarRef rsrc = iterator->o_get("rsrc", true, "SplFileInfo");
    obj->o_set("rsrc", NEWOBJ(RecursiveIteratorIterator)(rsrc, mode, flags),
               "RecursiveIteratorIterator");
    return obj;
  }
  throw NotImplementedException("this type of iterator");
}
Пример #2
0
void f_hphp_unpack_continuation(CObjRef continuation) {
  if (hhvm) {
    throw_fatal("hphp_unpack_continuation is not supported under hhvm");
  }
  if (UNLIKELY(!continuation->o_instanceof("GenericContinuation"))) {
    throw_fatal(
        "Cannot call hphp_unpack_continuation with a "
        "non-GenericContinuation object");
  }
  Eval::VariableEnvironment *env =
    FrameInjection::GetVariableEnvironment(true);
  if (UNLIKELY(!env)) {
    throw_fatal("Invalid call hphp_unpack_continuation");
  }
  p_GenericContinuation c(
    static_cast<c_GenericContinuation*>(continuation.get()));
  extract(env, c->t_getvars(), 256 /* EXTR_REFS */);
}
Пример #3
0
void f_hphp_pack_continuation(CObjRef continuation,
                              int64 label, CVarRef value) {
  if (hhvm) {
    throw_fatal("hphp_pack_continuation is not supported under hhvm");
  }
  if (UNLIKELY(!continuation->o_instanceof("GenericContinuation"))) {
    throw_fatal(
        "Cannot call hphp_pack_continuation with a "
        "non-GenericContinuation object");
  }
  Array definedVariables;
  Eval::VariableEnvironment *env =
    FrameInjection::GetVariableEnvironment(true);
  if (UNLIKELY(!env)) {
    throw_fatal("Invalid call hphp_pack_continuation");
  }
  definedVariables = env->getDefinedVariables();
  p_GenericContinuation c(
      static_cast<c_GenericContinuation*>(continuation.get()));
  c->t_update(label, value, definedVariables);
}