inline expand some function calls
[unix-history] / usr / src / usr.bin / window / wwadd.c
CommitLineData
7c1c9e39 1#ifndef lint
f2a77fe1 2static char *sccsid = "@(#)wwadd.c 3.5 83/09/15";
7c1c9e39
EW
3#endif
4
5#include "ww.h"
6
7/*
8 * Stick w1 behind w2
9 * W1 should have an empty ww_cov map.
10 */
11wwadd(w1, w2)
12register struct ww *w1, *w2;
13{
14 if (w1->ww_forw != 0 || w1->ww_back != 0)
19f9784c
EW
15 return; /* sanity */
16
7c1c9e39
EW
17 w1->ww_order = w2->ww_order + 1;
18 w1->ww_back = w2;
19 w1->ww_forw = w2->ww_forw;
20 w2->ww_forw->ww_back = w1;
21 w2->ww_forw = w1;
19f9784c 22
7c1c9e39
EW
23 {
24 register struct ww *wp;
25
26 for (wp = w2; wp != &wwhead; wp = wp->ww_back)
27 wwcover(wp, w1);
28 for (wp = w1->ww_forw; wp != &wwhead; wp = wp->ww_forw) {
29 wp->ww_order++;
30 wwcover(w1, wp);
31 }
32 }
33 {
19f9784c 34 int i = w1->ww_i.t;
861cd1ed 35 char *touched = &wwtouched[i];
7c1c9e39 36
19f9784c 37 for (; i < w1->ww_i.b; i++, touched++) {
f2a77fe1
EW
38 int j = w1->ww_i.l;
39 register char *win = &w1->ww_win[i][j];
40 register char *smap = &wwsmap[i][j];
41 register union ww_char *ns = &wwns[i][j];
42 register union ww_char *buf = &w1->ww_buf[i][j];
7c1c9e39 43
f2a77fe1 44 for (; j < w1->ww_i.r; j++) {
7c1c9e39 45 if ((*win & (WWM_GLS|WWM_COV)) == 0) {
861cd1ed 46 *touched = 1;
7c1c9e39
EW
47 *smap++ = w1->ww_index;
48 ns++->c_w = buf++->c_w
49 ^ *win++ << WWC_MSHIFT;
50 } else {
51 smap++;
52 ns++;
53 win++;
54 buf++;
55 }
56 }
57 }
58 }
59}