#include #include "paneltree.h" #include "traverse.h" #include "tree.h" static int printLocalOnly; static int (*printf_like)(const char *fmt, ...); static char * panelToString(const panel_t *pp){ static char answer[512]; sprintf(answer, "{center=(%g,%g), sz=(%g,%g), vel=%g}", pp->xc, pp->zc, pp->dx, pp->dz, pp->vel); return answer; } static void prkPrintBodies(const sib_group *sg){ const panel_t *bods = (const panel_t *)Tbodies(sg); int i; (*printf_like)("Bodies (%d) in sg %s\n", sg->ntbody, PrintKeyHex(sg->key)); for(i=0; intbody; i++){ (*printf_like)("body %d: %s\n", i, panelToString(&bods[i])); } } static int prkPrintMAC(Key_t key, const tcell *tc){ panel_t *pp = Contents(tc); (*printf_like)("cell@%p key=%s.%o %s\n", pp, PrintKeyHex(key), tc->bits, panelToString(pp)); if ( printLocalOnly && tc->daughter.pgid.proc != MPMY_Procnum() ){ (*printf_like)("Remote daughter at %s+%#x\n", PrintPgId(tc->daughter.pgid), tc->daughter.offset); return MAC_ACCEPT; }else{ return MAC_REJECT; } } void prkPrintTree(tree_t *tp, int localonly, int (*printf_like_arg)(const char *, ...) ){ printf_like = printf_like_arg; printLocalOnly = localonly; TraverseSg(tp, TreeRoot(tp), prkPrintMAC, prkPrintBodies); PagePollTillDone(tp->pgsys); }