# 2.11BSD#431 - /usr/src/ucb/PORT/pascal/pdx/mappings/srcline.c

##### Functions

    linelookup        X
    srcline           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[] = "@(#)srcline.c	5.1 (Berkeley) 6/6/85";
       9: #endif not lint
      10: /*
      11:  * lookup the source line number nearest from below to an address
      12:  */
      13:
      14: #include "defs.h"
      15: #include "mappings.h"
      16: #include "object.h"
      17: #include "linetab.h"
      18:
      19: LINENO srcline(addr)
      20: ADDRESS addr;
      21: {
      22:     register ADDRESS i, j, k;
      23:     ADDRESS a;
      24:
      25:     if (nlhdr.nlines == 0) {
      26:         return(0);
      27:     }
      28:     i = 0;
      29:     j = nlhdr.nlines - 1;
      30:     if (addr <= linetab[i].addr) {
      31:         return(linetab[i].line);
      32:     } else if (addr >= linetab[j].addr) {
      33:         return(linetab[j].line);
      34:     }
      35:     while (i <= j) {
      36:         k = (i + j) / 2;
      37:         if ((a = linetab[k].addr) == addr) {
      38:             return(linetab[k].line);
      39:         } else if (addr > a) {
      40:             i = k+1;
      41:         } else {
      42:             j = k-1;
      43:         }
      44:     }
      45:     if (addr > linetab[i].addr) {
      46:         return(linetab[i].line);
      47:     } else {
      48:         return(linetab[i-1].line);
      49:     }
      50:     /*NOTREACHED*/
      51: }
      52:
      53: /*
      54:  * look for a line exactly corresponding to the given address
      55:  */
      56:
      57: LINENO linelookup(addr)
      58: ADDRESS addr;
      59: {
      60:     register ADDRESS i, j, k;
      61:     ADDRESS a;
      62:
      63:     if (nlhdr.nlines == 0 || addr < linetab[0].addr) {
      64:         return(0);
      65:     }
      66:     i = 0;
      67:     j = nlhdr.nlines - 1;
      68:     while (i <= j) {
      69:         k = (i + j) / 2;
      70:         if ((a = linetab[k].addr) == addr) {
      71:             return(linetab[k].line);
      72:         } else if (addr > a) {
      73:             i = k+1;
      74:         } else {
      75:             j = k-1;
      76:         }
      77:     }
      78:     return(0);
      79: }

#### Defined functions

linelookup defined in line 57; never used
srcline defined in line 19; never used

#### Defined variables

sccsid defined in line 8; never used

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