# 2.11BSD#431 - /usr/src/local/less/position.c

##### Functions

    add_back_pos      X
    add_forw_pos      X
    onscreen          X
    pos_clear         X
    position          X

##### Variables

    public            X

##### Macros

    NPOS              X

       1: /*
       2:  * Routines dealing with the "position" table.
       3:  * This is a table which tells the position (in the input file) of the
       4:  * first char on each currently displayed line.
       5:  *
       6:  * {{ The position table is scrolled by moving all the entries.
       7:  *    Would be better to have a circular table
       8:  *    and just change a couple of pointers. }}
       9:  */
      10:
      11: #include "less.h"
      12: #include "position.h"
      13:
      14: #define NPOS    100     /* {{ sc_height must be less than NPOS }} */
      15: static POSITION table[NPOS];    /* The position table */
      16:
      17: extern int sc_width, sc_height;
      18:
      19: /*
      20:  * Return the starting file position of a line displayed on the screen.
      21:  * The line may be specified as a line number relative to the top
      22:  * of the screen, but is usually one of these special cases:
      23:  *	the top (first) line on the screen
      24:  *	the second line on the screen
      25:  *	the bottom line on the screen
      26:  *	the line after the bottom line on the screen
      27:  */
      28:     public POSITION
      29: position(where)
      30:     int where;
      31: {
      32:     switch (where)
      33:     {
      34:     case BOTTOM:
      35:         where = sc_height - 2;
      36:         break;
      37:     case BOTTOM_PLUS_ONE:
      38:         where = sc_height - 1;
      39:         break;
      40:     }
      41:     return (table[where]);
      42: }
      43:
      44: /*
      45:  * Add a new file position to the bottom of the position table.
      46:  */
      47:     public void
      48: add_forw_pos(pos)
      49:     POSITION pos;
      50: {
      51:     register int i;
      52:
      53:     /*
      54: 	 * Scroll the position table up.
      55: 	 */
      56:     for (i = 1;  i < sc_height;  i++)
      57:         table[i-1] = table[i];
      58:     table[sc_height - 1] = pos;
      59: }
      60:
      61: /*
      62:  * Add a new file position to the top of the position table.
      63:  */
      64:     public void
      65: add_back_pos(pos)
      66:     POSITION pos;
      67: {
      68:     register int i;
      69:
      70:     /*
      71: 	 * Scroll the position table down.
      72: 	 */
      73:     for (i = sc_height - 1;  i > 0;  i--)
      74:         table[i] = table[i-1];
      75:     table[0] = pos;
      76: }
      77:
      78: /*
      79:  * Initialize the position table, done whenever we clear the screen.
      80:  */
      81:     public void
      82: pos_clear()
      83: {
      84:     register int i;
      85:
      86:     for (i = 0;  i < sc_height;  i++)
      87:         table[i] = NULL_POSITION;
      88: }
      89:
      90: /*
      91:  * See if the byte at a specified position is currently on the screen.
      92:  * Check the position table to see if the position falls within its range.
      93:  * Return the position table entry if found, -1 if not.
      94:  */
      95:     public int
      96: onscreen(pos)
      97:     POSITION pos;
      98: {
      99:     register int i;
     100:
     101:     if (pos < table[0])
     102:         return (-1);
     103:     for (i = 1;  i < sc_height;  i++)
     104:         if (pos < table[i])
     105:             return (i-1);
     106:     return (-1);
     107: }

#### Defined functions

add_back_pos defined in line 64; used 3 times

- in /usr/src/local/less/funcs.h line 32
- in /usr/src/local/less/prim.c line 187, 292

add_forw_pos defined in line 47; used 3 times

- in /usr/src/local/less/funcs.h line 31
- in /usr/src/local/less/prim.c line 100, 134

onscreen defined in line 95; used 2 times

- in /usr/src/local/less/funcs.h line 34
- in /usr/src/local/less/prim.c line 412

pos_clear defined in line 81; used 4 times

- in /usr/src/local/less/funcs.h line 33
- in /usr/src/local/less/main.c line 197
- in /usr/src/local/less/prim.c line 99, 291

position defined in line 28; used 20 times

- in /usr/src/local/less/command.c line 159, 198
- in /usr/src/local/less/funcs.h line 30
- in /usr/src/local/less/prim.c line 44, 92, 126, 215, 236, 270, 397, 408, 418, 479, 485, 608, 623, 630, 637
- in /usr/src/local/less/prompt.c line 74, 100

#### Defined variables

public defined in line 95; never used
table defined in line 15; used 10 times

- in line 41, 57-58(3), 74-75(3), 87, 101-104(2)

#### Defined macros

NPOS defined in line 14; used 1 times

- in line 15

Last modified: 1990-07-10 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 528 |