root/oldXMenu/insque.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. emacs_insque
  2. emacs_remque

     1 /*
     2 Copyright (C) 1993-1998, 2001-2023 Free Software Foundation, Inc.
     3 
     4 This program is free software: you can redistribute it and/or modify
     5 it under the terms of the GNU General Public License as published by
     6 the Free Software Foundation, either version 3 of the License, or (at
     7 your option) any later version.
     8 
     9 This program is distributed in the hope that it will be useful,
    10 but WITHOUT ANY WARRANTY; without even the implied warranty of
    11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    12 GNU General Public License for more details.
    13 
    14 You should have received a copy of the GNU General Public License
    15 along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
    16 
    17 /* This file implements the emacs_insque and emacs_remque functions,
    18    clones of the insque and remque functions of BSD.  They and all
    19    their callers have been renamed to emacs_mumble to allow us to
    20    include this file in the menu library on all systems.  */
    21 
    22 #include "XMenuInt.h"
    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
    33 emacs_insque (void *velem, void *vprev)
    34 {
    35   struct qelem *elem = velem;
    36   struct qelem *prev = vprev;
    37   struct qelem *next = prev->q_forw;
    38   prev->q_forw = elem;
    39   if (next)
    40     next->q_back = elem;
    41   elem->q_forw = next;
    42   elem->q_back = prev;
    43 }
    44 
    45 /* Unlink ELEM from the doubly-linked list that it is in.  */
    46 
    47 void
    48 emacs_remque (void *velem)
    49 {
    50   struct qelem *elem = velem;
    51   struct qelem *next = elem->q_forw;
    52   struct qelem *prev = elem->q_back;
    53   if (next)
    54     next->q_back = prev;
    55   if (prev)
    56     prev->q_forw = next;
    57 }

/* [<][>][^][v][top][bottom][index][help] */