|
|
1.1 ! root 1: ! 2: require(TT, stuff, by, with, pr) ! 3: { ! 4: if (assertbl != NONE) ! 5: assert(TT, stuff, by, with, pr); ! 6: if (errortbl != NONE) ! 7: errort(TT, stuff, by, with, pr); ! 8: } ! 9: ! 10: inscope(TT, stuff, by) ! 11: { register int i; ! 12: ! 13: for (i = 0; i < tbl[assertbl].nrcols; i++) ! 14: if (TT == tbl[assertbl].coltyp[i] ! 15: && stuff == tbl[assertbl].colmap[i] ! 16: && by == tbl[assertbl].colorg[i]) ! 17: return 1; ! 18: ! 19: return 0; ! 20: } ! 21: ! 22: assert(TT, stuff, by, with, pr) ! 23: { int h, i, j, x, frst; ! 24: ! 25: for (frst = 0; frst < tbl[assertbl].nrcols; frst++) ! 26: if (tbl[assertbl].coltyp[frst] == TT ! 27: && stuff == tbl[assertbl].colmap[frst] ! 28: && by == tbl[assertbl].colorg[frst]) ! 29: break; ! 30: ! 31: if (frst == tbl[assertbl].nrcols) ! 32: return; /* not within assertion's scope */ ! 33: ! 34: for (i = 0; i < tbl[assertbl].nrrows; i++) ! 35: { ! 36: if (globvars[i+abase] != 1) ! 37: continue; ! 38: ! 39: for (j = frst; j < tbl[assertbl].nrcols; j++) ! 40: { ! 41: if (TT == tbl[assertbl].coltyp[j] ! 42: && stuff == tbl[assertbl].colmap[j] ! 43: && by == tbl[assertbl].colorg[j]) ! 44: { ! 45: if (tbl[assertbl].ptr[i][j].nrpils == 0) ! 46: output("assertion violated: ", 2); ! 47: else ! 48: for (h = 0; h < tbl[assertbl].ptr[i][j].nrpils; h++) ! 49: { x = tbl[assertbl].ptr[i][j].one[h].transf; ! 50: globvars[x+abase] = 2; ! 51: globvars[i+abase] = 0; ! 52: } ! 53: } ! 54: } ! 55: } ! 56: for (i = abase; i < nrvars; i++) ! 57: if (globvars[i] == 2) ! 58: globvars[i] = 1; ! 59: } ! 60: ! 61: assertholds() ! 62: { int i; ! 63: if (assertbl == NONE) ! 64: return 1; ! 65: ! 66: for (i = abase; i < nrvars; i++) ! 67: if (globvars[i] && tbl[assertbl].endrow[i-abase]) ! 68: return 1; ! 69: return 0; ! 70: } ! 71: ! 72: errort(TT, stuff, by, with, pr) ! 73: { int h, i, j, x, frst; ! 74: ! 75: for (frst = 0; frst < tbl[errortbl].nrcols; frst++) ! 76: if (tbl[errortbl].coltyp[frst] == TT ! 77: && stuff == tbl[errortbl].colmap[frst] ! 78: && by == tbl[errortbl].colorg[frst]) ! 79: break; ! 80: ! 81: if (frst == tbl[errortbl].nrcols) ! 82: return; /* not within assertion's scope */ ! 83: ! 84: for (i = 0; i < tbl[errortbl].nrrows; i++) ! 85: { ! 86: if (globvars[i+ebase] != 1) ! 87: continue; ! 88: ! 89: for (j = frst; j < tbl[errortbl].nrcols; j++) ! 90: { ! 91: if (TT == tbl[errortbl].coltyp[j] ! 92: && stuff == tbl[errortbl].colmap[j] ! 93: && by == tbl[errortbl].colorg[j]) ! 94: { ! 95: if (tbl[errortbl].ptr[i][j].nrpils == 0) ! 96: globvars[i+ebase] = 0; ! 97: else ! 98: for (h = 0; h < tbl[errortbl].ptr[i][j].nrpils; h++) ! 99: { x = tbl[errortbl].ptr[i][j].one[h].transf; ! 100: globvars[x+ebase] = 2; ! 101: globvars[i+ebase] = 0; ! 102: } ! 103: } } } ! 104: for (i = ebase; i < nrvars; i++) ! 105: if (globvars[i] == 2) ! 106: { globvars[i] = 1; ! 107: if (tbl[errortbl].endrow[i-ebase]) ! 108: output("error matched: ", 2); ! 109: } ! 110: globvars[ebase] = 1; ! 111: } ! 112: ! 113: peekassert(ice) ! 114: struct FREEZE *ice; ! 115: { register int i; ! 116: if (assertbl != NONE) ! 117: for (i = abase; i < nrvars; i++) ! 118: globvars[i] = ice->varsaved[i]; ! 119: else if (errortbl != NONE) ! 120: for (i = ebase; i < nrvars; i++) ! 121: globvars[i] = ice->varsaved[i]; ! 122: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.