/* #Specification: guruiter / principles The guruiter may replace a gurusteps component if you have to repeat the same question a few time. Instead of having # (...); // One branche // Another branche # you do # (3,...); // The step parameter is supplied so you know where // you are in the iteration // The step parameter is also provided here. // One branche // Another branche # */ #include "guruengine.h" class guruiter_private { public: _F_gurupath *p; }; void _F_guruiter::settitle (const char *title) { priv->p->settitle (title); } void _F_guruiter::setintro (const char *intro) { priv->p->setintro (intro); } void _F_guruiter::seticon (const char *icon) { priv->p->seticon (icon); } void _F_guruiter::attention () { priv->p->attention (); } void _F_guruiter::allfine () { priv->p->allfine (); } void _F_guruiter::setterminal (const char *s, const char *l) { priv->p->setterminal (s,l); } bool _F_guruiter::edit () { return priv->p->edit (); } bool _F_guruiter::edit (HELP_FILE &help) { return priv->p->edit (help); } void _F_guruiter::setcursor (int nof) { priv->p->setcursor (nof); } void _F_guruiter::path1 ( GURUPATH_MODE, GURUPATH_STATUS &status) { status.nodemissing = true; } void _F_guruiter::path2 ( GURUPATH_MODE, GURUPATH_STATUS &status) { status.nodemissing = true; } void _F_guruiter::path3 ( GURUPATH_MODE, GURUPATH_STATUS &status) { status.nodemissing = true; } void _F_guruiter::path4 ( GURUPATH_MODE, GURUPATH_STATUS &status) { status.nodemissing = true; } void _F_guruiter::path5 ( GURUPATH_MODE, GURUPATH_STATUS &status) { status.nodemissing = true; } void _F_guruiter::path6 ( GURUPATH_MODE, GURUPATH_STATUS &status) { status.nodemissing = true; } static void guruiter0 ( _F_guruiter &c, int nostep, int nbsteps, GURUPATH_MODE mode, GURUPATH_STATUS &status); static void guruiter0 ( _F_guruiter &c, int nostep, int nbsteps, GURUPATH_MODE mode, GURUPATH_STATUS &status) { _F_guruiter *c; int nbsteps; int nostep; int nextstep; bool moreiter; glocal.c = &c; glocal.nbsteps = nbsteps; glocal.nostep = nostep; glocal.nextstep = nostep+1; glocal.moreiter = glocal.nextstep < nbsteps; (mode,status); glocal.c->priv->p = this; glocal.c->eval (glocal.nostep,mode,status); glocal.c->priv->p = this; glocal.c->dialog (glocal.nostep,dia); if (glocal.moreiter){ guruiter0 (*glocal.c,glocal.nextstep,glocal.nbsteps,mode,status); }else{ glocal.c->path1(mode,status); } if (glocal.moreiter){ status.nodemissing = true; }else{ glocal.c->path2(mode,status); } if (glocal.moreiter){ status.nodemissing = true; }else{ glocal.c->path3(mode,status); } if (glocal.moreiter){ status.nodemissing = true; }else{ glocal.c->path4(mode,status); } if (glocal.moreiter){ status.nodemissing = true; }else{ glocal.c->path5(mode,status); } if (glocal.moreiter){ status.nodemissing = true; }else{ glocal.c->path6(mode,status); } } void guruiter ( _F_guruiter &c, int nbsteps, GURUPATH_MODE mode, GURUPATH_STATUS &status) { guruiter_private priv; c.priv = &priv; guruiter0(c,0,nbsteps,mode,status); }