int shuffleArgsForMagicCall(ActRec* ar) { if (!ar->hasInvName()) { return 0; } const Func* f UNUSED = ar->m_func; f->validate(); assert(f->name()->isame(s_call.get()) || f->name()->isame(s_callStatic.get())); assert(f->numParams() == 2); assert(ar->hasInvName()); StringData* invName = ar->getInvName(); assert(invName); ar->setVarEnv(nullptr); int nargs = ar->numArgs(); // We need to make an array containing all the arguments passed by the // caller and put it where the second argument is PackedArrayInit aInit(nargs); for (int i = 0; i < nargs; ++i) { auto const tv = reinterpret_cast<TypedValue*>( uintptr_t(ar) - (i+1) * sizeof(TypedValue) ); aInit.append(tvAsCVarRef(tv)); tvRefcountedDecRef(tv); } // Put invName in the slot for first argument setArgInActRec(ar, 0, uint64_t(invName), KindOfString); // Put argArray in the slot for second argument auto const argArray = aInit.toArray().detach(); setArgInActRec(ar, 1, uint64_t(argArray), KindOfArray); // Fix up ActRec's numArgs ar->initNumArgs(2); return 1; }
inline void TRBDF2<Operator>::step(array_type& a, Time t) { Size i; Array aInit(a.size()); for (i=0; i<a.size();i++) { aInit[i] = a[i]; } aInit_ = aInit; for (i=0; i<bcs_.size(); i++) bcs_[i]->setTime(t); //trapezoidal explicit part if (L_.isTimeDependent()) { L_.setTime(t); explicitTrapezoidalPart_ = I_ - 0.5*alpha_*dt_*L_; } for (i=0; i<bcs_.size(); i++) bcs_[i]->applyBeforeApplying(explicitTrapezoidalPart_); a = explicitTrapezoidalPart_.applyTo(a); for (i=0; i<bcs_.size(); i++) bcs_[i]->applyAfterApplying(a); // trapezoidal implicit part if (L_.isTimeDependent()) { L_.setTime(t-dt_); implicitPart_ = I_ + 0.5*alpha_*dt_*L_; } for (i=0; i<bcs_.size(); i++) bcs_[i]->applyBeforeSolving(implicitPart_,a); a = implicitPart_.solveFor(a); for (i=0; i<bcs_.size(); i++) bcs_[i]->applyAfterSolving(a); // BDF2 explicit part if (L_.isTimeDependent()) { L_.setTime(t); } for (i=0; i<bcs_.size(); i++) { bcs_[i]->applyBeforeApplying(explicitBDF2PartFull_); } array_type b0 = explicitBDF2PartFull_.applyTo(aInit_); for (i=0; i<bcs_.size(); i++) bcs_[i]->applyAfterApplying(b0); for (i=0; i<bcs_.size(); i++) { bcs_[i]->applyBeforeApplying(explicitBDF2PartMid_); } array_type b1 = explicitBDF2PartMid_.applyTo(a); for (i=0; i<bcs_.size(); i++) bcs_[i]->applyAfterApplying(b1); a = b0+b1; // reuse implicit part - works only for alpha=2-sqrt(2) for (i=0; i<bcs_.size(); i++) bcs_[i]->applyBeforeSolving(implicitPart_,a); a = implicitPart_.solveFor(a); for (i=0; i<bcs_.size(); i++) bcs_[i]->applyAfterSolving(a); }
void PasswordDialog::accept() { qDebug() << sender(); //MethodRunner<PasswordDialog, void> runner(this,&PasswordDialog::aInit); /*if(mwp()->validate(ui->username_line->text(),ui->password_line->text())) { }*/ aInit(); }
int main(int argc, char** argv) { aInit(&argc, &argv); int sizeIn1, sizeIn2, sizeOut, iterators; scanf("%d %d %d %d", &sizeIn1, &sizeIn2, &sizeOut, &iterators); thr_param_t param[iterators]; athread_t thr[iterators]; int i; for(i=0; i < iterators; i++) { char *a = malloc(sizeIn1*sizeof(char)); char *b = malloc(sizeIn2*sizeof(char));; char *out = malloc(sizeOut*sizeof(char)); scanf("%s",a); scanf("%s",b); param[i]._a = a; param[i]._b = b; param[i]._out = out; athread_create(&thr[i], NULL,(void*)& lcs, (void*) param); athread_join(thr[i], NULL); free(a); free(b); free(out); } aTerminate(); return 0; }