Annotation of src/games/atc/list.c, Revision 1.6
1.6 ! agc 1: /* $NetBSD: list.c,v 1.5 2001/06/19 13:42:08 wiz Exp $ */
1.3 cgd 2:
1.1 cgd 3: /*-
1.3 cgd 4: * Copyright (c) 1990, 1993
5: * The Regents of the University of California. All rights reserved.
1.1 cgd 6: *
7: * This code is derived from software contributed to Berkeley by
8: * Ed James.
9: *
10: * Redistribution and use in source and binary forms, with or without
11: * modification, are permitted provided that the following conditions
12: * are met:
13: * 1. Redistributions of source code must retain the above copyright
14: * notice, this list of conditions and the following disclaimer.
15: * 2. Redistributions in binary form must reproduce the above copyright
16: * notice, this list of conditions and the following disclaimer in the
17: * documentation and/or other materials provided with the distribution.
1.6 ! agc 18: * 3. Neither the name of the University nor the names of its contributors
1.1 cgd 19: * may be used to endorse or promote products derived from this software
20: * without specific prior written permission.
21: *
22: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
23: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
26: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32: * SUCH DAMAGE.
33: */
34:
35: /*
36: * Copyright (c) 1987 by Ed James, UC Berkeley. All rights reserved.
37: *
38: * Copy permission is hereby granted provided that this notice is
39: * retained on all partial or complete copies.
40: *
41: * For more info on this and all of my stuff, mail edjames@berkeley.edu.
42: */
43:
1.4 lukem 44: #include <sys/cdefs.h>
1.1 cgd 45: #ifndef lint
1.3 cgd 46: #if 0
47: static char sccsid[] = "@(#)list.c 8.1 (Berkeley) 5/31/93";
48: #else
1.6 ! agc 49: __RCSID("$NetBSD: list.c,v 1.5 2001/06/19 13:42:08 wiz Exp $");
1.3 cgd 50: #endif
1.1 cgd 51: #endif /* not lint */
52:
53: #include "include.h"
54:
55: PLANE *
56: newplane()
57: {
58: return ((PLANE *) calloc(1, sizeof (PLANE)));
59: }
60:
1.4 lukem 61: void
1.1 cgd 62: append(l, p)
63: LIST *l;
64: PLANE *p;
65: {
66: PLANE *q = NULL, *r = NULL;
67:
68: if (l->head == NULL) {
69: p->next = p->prev = NULL;
70: l->head = l->tail = p;
71: } else {
72: q = l -> head;
73:
74: while (q != NULL && q->plane_no < p->plane_no) {
75: r = q;
76: q = q -> next;
77: }
78:
79: if (q) {
80: if (r) {
81: p->prev = r;
82: r->next = p;
83: p->next = q;
84: q->prev = p;
85: } else {
86: p->next = q;
87: p->prev = NULL;
88: q->prev = p;
89: l->head = p;
90: }
91: } else {
92: l->tail->next = p;
93: p->next = NULL;
94: p->prev = l->tail;
95: l->tail = p;
96: }
97: }
98: }
99:
1.4 lukem 100: void
1.1 cgd 101: delete(l, p)
102: LIST *l;
103: PLANE *p;
104: {
105: if (l->head == NULL)
1.5 wiz 106: loser(p, "deleted a non-existent plane! Get help!");
1.1 cgd 107:
108: if (l->head == p && l->tail == p)
109: l->head = l->tail = NULL;
110: else if (l->head == p) {
111: l->head = p->next;
112: l->head->prev = NULL;
113: } else if (l->tail == p) {
114: l->tail = p->prev;
115: l->tail->next = NULL;
116: } else {
117: p->prev->next = p->next;
118: p->next->prev = p->prev;
119: }
120: }
CVSweb <webmaster@jp.NetBSD.org>