# 2.11BSD#431 - /usr/src/ucb/PORT/pascal/pdx/breakpoint/trcond.c

##### Functions

    addcond           X
    condfree          X
    delcond           X
    stopcond          X
    trcond            X

##### Variables

    cond_list         X

##### struct's

    tr_cond_list      X

##### typedef's

    TR_COND_LIST      X

       1: /*
       2:  * Copyright (c) 1980 Regents of the University of California.
       3:  * All rights reserved.  The Berkeley software License Agreement
       4:  * specifies the terms and conditions for redistribution.
       5:  */
       6:
       7: #ifndef lint
       8: static char sccsid[] = "@(#)trcond.c	5.1 (Berkeley) 6/5/85";
       9: #endif not lint
      10:
      11: /*
      12:  * trace condition list -- a list of conditions that are to be
      13:  * checked before printing out the current source line or stopping.
      14:  */
      15:
      16: #include "defs.h"
      17: #include "breakpoint.h"
      18:
      19: typedef struct tr_cond_list {
      20:     TRTYPE trtype;
      21:     NODE *trace_condition;
      22:     struct tr_cond_list *next_condition;
      23: } TR_COND_LIST;
      24:
      25: LOCAL TR_COND_LIST *cond_list;
      26:
      27: /*
      28:  * add a condition to be checked before giving single stepping information
      29:  */
      30:
      31: addcond(trtype, p)
      32: TRTYPE trtype;
      33: NODE *p;
      34: {
      35:     register TR_COND_LIST *c;
      36:
      37:     if (p == NIL) {
      38:         return;
      39:     }
      40:     c = alloc(1, TR_COND_LIST);
      41:     c->trtype = trtype;
      42:     c->trace_condition = p;
      43:     c->next_condition = cond_list;
      44:     cond_list = c;
      45: }
      46:
      47: /*
      48:  * delete a condition from the list
      49:  */
      50:
      51: delcond(trtype, p)
      52: TRTYPE trtype;
      53: NODE *p;
      54: {
      55:     register TR_COND_LIST *c, *last;
      56:
      57:     if (p == NIL) {
      58:         return;
      59:     }
      60:     last = NIL;
      61:     for (c = cond_list; c != NIL; c = c->next_condition) {
      62:         if (c->trtype == trtype && c->trace_condition == p) {
      63:             break;
      64:         }
      65:     }
      66:     if (c == NIL) {
      67:         panic("tried to delete non-existent condition");
      68:     }
      69:     if (last == NIL) {
      70:         cond_list = c->next_condition;
      71:     } else {
      72:         last->next_condition = c->next_condition;
      73:     }
      74:     free(c);
      75: }
      76:
      77: /*
      78:  * Determine if any trace condition on the list is true.
      79:  * If the list is empty, return TRUE.
      80:  */
      81:
      82: BOOLEAN trcond()
      83: {
      84:     register TR_COND_LIST *c;
      85:     BOOLEAN foundcond;
      86:
      87:     foundcond = FALSE;
      88:     for (c = cond_list; c != NIL; c = c->next_condition) {
      89:         if (c->trtype == TRPRINT) {
      90:             if (cond(c->trace_condition)) {
      91:                 return(TRUE);
      92:             } else {
      93:                 foundcond = TRUE;
      94:             }
      95:         }
      96:     }
      97:     return !foundcond;
      98: }
      99:
     100: /*
     101:  * Determine if any stop condition on the list is true.
     102:  * If the list is empty, return FALSE.
     103:  */
     104:
     105: BOOLEAN stopcond()
     106: {
     107:     register TR_COND_LIST *c;
     108:
     109:     for (c = cond_list; c != NIL; c = c->next_condition) {
     110:         if (c->trtype == TRSTOP && cond(c->trace_condition)) {
     111:             return(TRUE);
     112:         }
     113:     }
     114:     return FALSE;
     115: }
     116:
     117: /*
     118:  * Free all existing breakpoints.
     119:  * Trace conditions have been freed elsewhere.
     120:  */
     121:
     122: condfree()
     123: {
     124:     TR_COND_LIST *c, *next;
     125:
     126:     for (c = cond_list; c != NIL; c = next) {
     127:         next = c->next_condition;
     128:         dispose(c);
     129:     }
     130:     cond_list = NIL;
     131: }

#### Defined functions

addcond defined in line 31; used 2 times

- in /usr/src/ucb/PORT/pascal/pdx/breakpoint/bpact.c line 143, 169

condfree defined in line 122; used 1 times

- in /usr/src/ucb/PORT/pascal/pdx/breakpoint/fixbps.c line 76

delcond defined in line 51; used 4 times

- in /usr/src/ucb/PORT/pascal/pdx/breakpoint/bpact.c line 159, 176
- in /usr/src/ucb/PORT/pascal/pdx/breakpoint/fixbps.c line 37, 43

stopcond defined in line 105; used 1 times

- in /usr/src/ucb/PORT/pascal/pdx/breakpoint/printnews.c line 45

trcond defined in line 82; used 1 times

- in /usr/src/ucb/PORT/pascal/pdx/breakpoint/printnews.c line 33

#### Defined variables

cond_list defined in line 25; used 8 times

- in line 43-44(2), 61, 70, 88, 109, 126-130(2)

sccsid defined in line 8; never used

#### Defined struct's

tr_cond_list defined in line 19; used 2 times

- in line 22(2)

#### Defined typedef's

TR_COND_LIST defined in line 23; used 7 times

- in line 25, 35-40(2), 55, 84, 107, 124

Last modified: 1985-06-06 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 1247 |