-+-+-+-+-+-+-+-+ START OF PART 199 -+-+-+-+-+-+-+-+ X if (findbreakpoint(currentinfo.debugstid, currentinfo.debugelptr)) X traversalstate = PTKEBREAK; X`7D /* do_next_elem */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_step() X`7B X Pint startstid; X X if (traversalstate == PTKEDEBUGEND) X restarttraversal(); X if (currentinfo.eltype == PEL_EXECUTE_STRUCTURE) X `7B X startstid = currentinfo.workingstid; X do X `7B X if (currentinfo.eltype == PEL_EXECUTE_STRUCTURE) X `7B X do_next_elem(); X predrawallstruct(debugwsid, PALWAYS); X `7D X else X do_next_elem(); X `7D while ((traversalstate != PTKEBREAK) &&`20 X (currentinfo.workingstid != startstid)); X `7D X else X do_next_elem(); X predrawallstruct(debugwsid, PALWAYS); X`7D /* do_step */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_stepreturn() X`7B X Pint startstid; X X if (traversalstate == PTKEDEBUGEND) X restarttraversal(); X if (debugstack != NULL) X `7B X startstid = debugstack->debuginfo.debugstid; X do X `7B X if (currentinfo.eltype == PEL_EXECUTE_STRUCTURE) X `7B X do_next_elem(); X predrawallstruct(debugwsid, PALWAYS); X `7D X else X do_next_elem(); X `7D while ((traversalstate != PTKEBREAK) &&`20 X (currentinfo.debugstid != startstid)); X `7D X else X `7B X /* at the root structure */ X do X `7B X if (currentinfo.eltype == PEL_EXECUTE_STRUCTURE) X `7B X do_next_elem(); X predrawallstruct(debugwsid, PALWAYS); X `7D X else X do_next_elem(); X `7D while ((traversalstate == PTKEBREAK) && (traversalstate == PTKEDEBUG VEND)); X `7D X predrawallstruct(debugwsid, PALWAYS); X`7D /* do_stepreturn */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_stepinto() X`7B X if (traversalstate == PTKEDEBUGEND) X restarttraversal(); X if (currentinfo.eltype == PEL_EXECUTE_STRUCTURE) X do_next_elem(); X predrawallstruct(debugwsid, PALWAYS); X`7D /* stepinto */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_go() X`7B X Pevent eventdata;`20 X`20 X if (traversalstate == PTKEDEBUGEND) X restarttraversal(); X#ifdef SUN X pflushevents(debugwsid, PF_LOCATOR, 1); X pflushevents(debugwsid, PF_PICK, 1); X#endif X#ifdef VMS X pflushevents(debugwsid, PI_LOCATOR, 1); X pflushevents(debugwsid, PI_PICK, 1); X#endif X psetlocmode(debugwsid, 1, PEVENT, PES_NOECHO); X do X `7B X if (currentinfo.eltype == PEL_EXECUTE_STRUCTURE) X `7B X do_next_elem(); X predrawallstruct(debugwsid, PALWAYS); X `7D X else X do_next_elem(); X pawaitevent(0.0, &eventdata);`20 X if ((eventdata.ws == debugwsid) && (eventdata.class == PI_LOCATOR)) X traversalstate = PTKEBREAK;`20 X `7D while ((traversalstate != PTKEBREAK) && (traversalstate != PTKEDEBUGEN VD)); X predrawallstruct(debugwsid, PALWAYS); X`7D /* do_go */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_examine(C(Pint) stid, C(Pint) elemptr) XPreANSI(Pint stid) XPreANSI(Pint elemptr) X`7B X Pint err; X ptkboolean graphics; X Pintlst stlist; X X pemptystruct(elemcontent); X ptk_openstruct(elemcontent); X graphics = ptk_elemcontent(stid, elemptr, terminalwindow, &err); X ptk_closestruct(); X if (graphics) X `7B`20 X stlist.number = 1; X stlist.integers = &elemcontent; X ptk_resetcamera(elementwindow); X ptk_setcameraworld(elementwindow, &stlist); X if (!elemposted) X `7B X ptk_postwindow(elementwindow); X elemposted = TRUE; X `7D X `7D X predrawallstruct(debugwsid, PALWAYS); X`7D /* do_examine */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_setbreakpoint(C(Pint) stid, C(Pint) elemptr) XPreANSI(Pint stid) XPreANSI(Pint elemptr) X`7B X ptksexeclist *stptr, *newptr; X X if (!findstpoint(stid, &stptr)) X `7B X newptr = (ptksexeclist *)malloc(sizeof(ptksexeclist)); X newptr->next = stpoints; X stpoints = newptr; X newptr->stid = stid; X newptr->numelems = ptk_elemcount(stid); `20 X newptr->tcpts.number = 0; X newptr->tcpts.integers = (Pint *)calloc(50, sizeof(Pint)); X newptr->bkpts.number = 1; X newptr->bkpts.integers = (Pint *)calloc(50, sizeof(Pint)); X newptr->bkpts.integers`5B0`5D = elemptr; X ptk_openstruct(structcontent); X drawbreakpt(stid, elemptr); X ptk_closestruct(); X `7D X else X if (inintlst(elemptr, &stptr->bkpts) == -1) X `7B X stptr->bkpts.integers`5Bstptr->bkpts.number++`5D = elemptr; X ptk_openstruct(structcontent); X drawbreakpt(stid, elemptr); X ptk_closestruct(); X `7D X`7D /* do_setbreakpoint */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_settracepoint(C(Pint) stid, C(Pint) elemptr) XPreANSI(Pint stid) XPreANSI(Pint elemptr) X`7B X ptksexeclist *stptr, *newptr; X X if (!findstpoint(stid, &stptr)) X `7B X newptr = (ptksexeclist *)malloc(sizeof(ptksexeclist)); X newptr->next = stpoints; X stpoints = newptr; X newptr->stid = stid; `20 X newptr->numelems = ptk_elemcount(stid); X newptr->tcpts.number = 1; X newptr->tcpts.integers = (Pint *)calloc(50, sizeof(Pint)); X newptr->bkpts.number = 0; X newptr->bkpts.integers = (Pint *)calloc(50, sizeof(Pint)); X newptr->tcpts.integers`5B0`5D = elemptr; X ptk_openstruct(structcontent); X drawtracept(stid, elemptr); X ptk_closestruct(); X `7D X else X if (inintlst(elemptr, &stptr->tcpts) == -1) X `7B X stptr->tcpts.integers`5Bstptr->tcpts.number++`5D = elemptr; X ptk_openstruct(structcontent); X drawtracept(stid, elemptr); X ptk_closestruct(); X `7D X`7D /* do_settracepoint */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_cancelbreakpoint(C(Pint) stid, C(Pint) elemptr) XPreANSI(Pint stid) XPreANSI(Pint elemptr) X`7B X ptksexeclist *stptr; X Pint i, ind; X X if (findstpoint(stid, &stptr)) X `7B X if ((ind = inintlst(elemptr, &stptr->bkpts)) != -1) X `7B X for (i = ind; i < stptr->bkpts.number; i++) X stptr->bkpts.integers`5Bi`5D = stptr->bkpts.integers`5Bi + 1`5D; X stptr->bkpts.number--; X ptk_openstruct(structcontent); X deletebreakpt(stid, elemptr); X ptk_closestruct(); X `7D X `7D X`7D /* do_cancelbreakpoint */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_canceltracepoint(C(Pint) stid, C(Pint) elemptr) XPreANSI(Pint stid) XPreANSI(Pint elemptr) X`7B X ptksexeclist *stptr; X Pint i, ind; X X if (findstpoint(stid, &stptr)) X `7B X if ((ind = inintlst(elemptr, &stptr->tcpts)) != -1) X `7B X for (i = ind; i < stptr->tcpts.number; i++) X stptr->tcpts.integers`5Bi`5D = stptr->tcpts.integers`5Bi + 1`5D; X stptr->tcpts.number--; X ptk_openstruct(structcontent); X deletetracept(stid, elemptr); X ptk_closestruct(); X `7D X `7D X`7D /* do_canceltracepoint */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void makemenus(C(void)) X`7B X Pint err; X Ppoint topleft; X Ppoint box, size; X X /* debugger menu */ X debugmenuid = ptk_stringtoint("menuid", "debugmenu");`20 X box = ptk_point(0.1, 0.05); X topleft = ptk_point(0.0, 1.0); X ptk_createboxmenu(debugmenuid, &topleft, &box); X ptk_setboxmenuattrs(debugwsid, debugmenuid, PTP_DOWN, menutextfont, X menutextcolourind, menucolourind, X menucolourind, tlcolourind, brcolourind);`20 X ptk_createtextmenuitem(debugmenuid, "go", 1, PEDIT_INSERT, &err); X ptk_createtextmenuitem(debugmenuid, "step", 2, PEDIT_INSERT, &err); X ptk_createtextmenuitem(debugmenuid, "step in", 3, PEDIT_INSERT, &err); X ptk_createtextmenuitem(debugmenuid, "examine", 4, PEDIT_INSERT, &err); X ptk_createtextmenuitem(debugmenuid, "deposit", 5, PEDIT_INSERT, &err); X ptk_createtextmenuitem(debugmenuid, "phinter", 6, PEDIT_INSERT, &err); X ptk_createtextmenuitem(debugmenuid, "TSL", 7, PEDIT_INSERT, &err); X ptk_createtextmenuitem(debugmenuid, "restart", 8, PEDIT_INSERT, &err); X ptk_createtextmenuitem(debugmenuid, "exit", 9, PEDIT_INSERT, &err); X X /* window menu */ X windowmenuid = ptk_stringtoint("menuid", "windowmenu");`20 X box = ptk_point(0.1, 0.05); X topleft = ptk_point(0.0, 1.0); X ptk_createboxmenu(windowmenuid, &topleft, &box); X ptk_setboxmenuattrs(debugwsid, windowmenuid, PTP_DOWN, menutextfont, X menutextcolourind, menucolourind, X menucolourind, tlcolourind, brcolourind);`20 X ptk_createtextmenuitem(windowmenuid, "close", 1, PEDIT_INSERT, &err); X ptk_createtextmenuitem(windowmenuid, "move", 2, PEDIT_INSERT, &err); X ptk_createtextmenuitem(windowmenuid, "resize", 3, PEDIT_INSERT, &err); X ptk_createtextmenuitem(windowmenuid, "front", 4, PEDIT_INSERT, &err); X ptk_createtextmenuitem(windowmenuid, "back", 5, PEDIT_INSERT, &err); X X /* topology menu */ X topologymenuid = ptk_stringtoint("menuid", "topologymenu");`20 X box = ptk_point(0.1, 0.05); X topleft = ptk_point(0.0, 1.0); X ptk_createboxmenu(topologymenuid, &topleft, &box); X ptk_setboxmenuattrs(debugwsid, topologymenuid, PTP_DOWN, menutextfont, X menutextcolourind, menucolourind, X menucolourind, tlcolourind, brcolourind);`20 X ptk_createtextmenuitem(topologymenuid, "type", 1, PEDIT_INSERT, &err); X ptk_createtextmenuitem(topologymenuid, "view", 2, PEDIT_INSERT, &err); X ptk_createtextmenuitem(topologymenuid, "tidy node", 3, PEDIT_INSERT, &err) V; X ptk_createtextmenuitem(topologymenuid, "tidy group", 4, PEDIT_INSERT, &err V); X ptk_createtextmenuitem(topologymenuid, "store", 5, PEDIT_INSERT, &err); X ptk_createtextmenuitem(topologymenuid, "restore", 6, PEDIT_INSERT, &err); X X /* content menu */ X contentmenuid = ptk_stringtoint("menuid", "contentmenu");`20 X box = ptk_point(0.1, 0.05); X topleft = ptk_point(0.0, 1.0); X ptk_createboxmenu(contentmenuid, &topleft, &box); X ptk_setboxmenuattrs(debugwsid, contentmenuid, PTP_DOWN, menutextfont, X menutextcolourind, menucolourind, X menucolourind, tlcolourind, brcolourind);`20 X ptk_createtextmenuitem(contentmenuid, "set break", 1, PEDIT_INSERT, &err); X ptk_createtextmenuitem(contentmenuid, "set trace", 2, PEDIT_INSERT, &err); X ptk_createtextmenuitem(contentmenuid, "cancel brk", 3, PEDIT_INSERT, &err) V; X ptk_createtextmenuitem(contentmenuid, "cancel trc", 4, PEDIT_INSERT, &err) V; X ptk_createtextmenuitem(contentmenuid, "scroll", 5, PEDIT_INSERT, &err); X X /* structure menu */ X structmenuid = ptk_stringtoint("menuid", "structmenu");`20 X box = ptk_point(0.1, 0.05); X topleft = ptk_point(0.0, 1.0); X ptk_createboxmenu(structmenuid, &topleft, &box); X ptk_setboxmenuattrs(debugwsid, structmenuid, PTP_DOWN, menutextfont, X menutextcolourind, menucolourind, X menucolourind, tlcolourind, brcolourind);`20 X ptk_createtextmenuitem(structmenuid, "camera", 1, PEDIT_INSERT, &err); X ptk_createtextmenuitem(structmenuid, "reset", 2, PEDIT_INSERT, &err); X X /* terminal menu */ X terminalmenuid = ptk_stringtoint("menuid", "terminalmenu");`20 X box = ptk_point(0.1, 0.05); X topleft = ptk_point(0.0, 1.0); X ptk_createboxmenu(terminalmenuid, &topleft, &box);`20 X ptk_setboxmenuattrs(debugwsid, terminalmenuid, PTP_DOWN, menutextfont, X menutextcolourind, menucolourind, X menucolourind, tlcolourind, brcolourind);`20 X ptk_createtextmenuitem(terminalmenuid, "scroll", 1, PEDIT_INSERT, &err); X ptk_createtextmenuitem(terminalmenuid, "clear", 2, PEDIT_INSERT, &err); X X /* topology type menu */ X toptypemenuid = ptk_stringtoint("menuid", "toptypemenu");`20 X box = ptk_point(0.1, 0.05); X topleft = ptk_point(0.0, 1.0); X ptk_createboxmenu(toptypemenuid, &topleft, &box); X ptk_setboxmenuattrs(debugwsid, toptypemenuid, PTP_DOWN, menutextfont, X menutextcolourind, menucolourind, X menucolourind, tlcolourind, brcolourind);`20 X ptk_createtextmenuitem(toptypemenuid, "box", 1, PEDIT_INSERT, &err); X ptk_createtextmenuitem(toptypemenuid, "struct", 2, PEDIT_INSERT, &err); X ptk_createtextmenuitem(toptypemenuid, "structnet", 3, PEDIT_INSERT, &err); X X /* TSL menu */ X tslmenuid = ptk_stringtoint("menuid", "tslmenu");`20 X box = ptk_point(0.1, 0.05); X topleft = ptk_point(0.0, 1.0); X ptk_createboxmenu(tslmenuid, &topleft, &box); X ptk_setboxmenuattrs(debugwsid, tslmenuid, PTP_DOWN, menutextfont, X menutextcolourind, menucolourind, X menucolourind, tlcolourind, brcolourind);`20 X ptk_createtextmenuitem(tslmenuid, "line", 1, PEDIT_INSERT, &err); X ptk_createtextmenuitem(tslmenuid, "marker", 2, PEDIT_INSERT, &err); X ptk_createtextmenuitem(tslmenuid, "interior", 3, PEDIT_INSERT, &err); X ptk_createtextmenuitem(tslmenuid, "edge", 4, PEDIT_INSERT, &err); X ptk_createtextmenuitem(tslmenuid, "text", 5, PEDIT_INSERT, &err); X ptk_createtextmenuitem(tslmenuid, "annotext", 6, PEDIT_INSERT, &err); X X /* TSL2 menu */ X tsl2menuid = ptk_stringtoint("menuid", "tsl2menu");`20 X box = ptk_point(0.1, 0.05); X topleft = ptk_point(0.0, 1.0); X ptk_createboxmenu(tsl2menuid, &topleft, &box);`20 X ptk_setboxmenuattrs(debugwsid, tsl2menuid, PTP_DOWN, menutextfont, X menutextcolourind, menucolourind, X menucolourind, tlcolourind, brcolourind);`20 X ptk_createtextmenuitem(tsl2menuid, "char", 1, PEDIT_INSERT, &err); X ptk_createtextmenuitem(tsl2menuid, "ctm", 2, PEDIT_INSERT, &err); X ptk_createtextmenuitem(tsl2menuid, "nameset", 3, PEDIT_INSERT, &err); X ptk_createtextmenuitem(tsl2menuid, "ids", 4, PEDIT_INSERT, &err); X ptk_createtextmenuitem(tsl2menuid, "asf", 5, PEDIT_INSERT, &err); X ptk_createtextmenuitem(tsl2menuid, "bbox", 6, PEDIT_INSERT, &err); X X /* rotators */ X rot3d1 = ptk_stringtoint("menuid", "rotator3d1");`20 +-+-+-+-+-+-+-+- END OF PART 199 +-+-+-+-+-+-+-+-