Commit | Line | Data |
---|---|---|
bb892cde GM |
1 | /* |
2 | Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 2001, 2002, 2003, | |
114f9c96 | 3 | 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. |
8ac6262d | 4 | |
4eaa4034 | 5 | This program is free software: you can redistribute it and/or modify |
8ac6262d | 6 | it under the terms of the GNU General Public License as published by |
4eaa4034 GM |
7 | the Free Software Foundation, either version 3 of the License, or |
8 | (at your option) any later version. | |
8ac6262d RS |
9 | |
10 | This program is distributed in the hope that it will be useful, | |
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
13 | GNU General Public License for more details. | |
14 | ||
15 | You should have received a copy of the GNU General Public License | |
4eaa4034 | 16 | along with this program. If not, see <http://www.gnu.org/licenses/>. */ |
b398a621 | 17 | |
e745ede7 | 18 | /* This file implements the emacs_insque and emacs_remque functions, |
8ac6262d | 19 | clones of the insque and remque functions of BSD. They and all |
e745ede7 DL |
20 | their callers have been renamed to emacs_mumble to allow us to |
21 | include this file in the menu library on all systems. */ | |
22 | ||
23 | ||
24 | struct qelem { | |
25 | struct qelem *q_forw; | |
26 | struct qelem *q_back; | |
27 | char q_data[1]; | |
28 | }; | |
29 | ||
30 | /* Insert ELEM into a doubly-linked list, after PREV. */ | |
31 | ||
32 | void | |
b782e2d7 | 33 | emacs_insque (struct qelem *elem, struct qelem *prev) |
e745ede7 DL |
34 | { |
35 | struct qelem *next = prev->q_forw; | |
36 | prev->q_forw = elem; | |
37 | if (next) | |
38 | next->q_back = elem; | |
39 | elem->q_forw = next; | |
40 | elem->q_back = prev; | |
41 | } | |
42 | ||
43 | /* Unlink ELEM from the doubly-linked list that it is in. */ | |
44 | ||
b782e2d7 | 45 | emacs_remque (struct qelem *elem) |
e745ede7 DL |
46 | { |
47 | struct qelem *next = elem->q_forw; | |
48 | struct qelem *prev = elem->q_back; | |
49 | if (next) | |
50 | next->q_back = prev; | |
51 | if (prev) | |
52 | prev->q_forw = next; | |
53 | } | |
ab5796a9 MB |
54 | |
55 | /* arch-tag: a8719d1a-5c3f-4bce-b36b-173106d36165 | |
56 | (do not change this comment) */ |