memory/mozjemalloc/linkedlist.h

Wed, 31 Dec 2014 13:27:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 13:27:57 +0100
branch
TOR_BUG_3246
changeset 6
8bccb770b82d
permissions
-rw-r--r--

Ignore runtime configuration files generated during quality assurance.

     1 /* -*- Mode: C; tab-width: 8; c-basic-offset: 8; indent-tabs-mode: t -*- */
     2 /* vim:set softtabstop=8 shiftwidth=8 noet: */
     3 /*-
     4  * Copyright (C) the Mozilla Foundation.
     5  * All rights reserved.
     6  *
     7  * Redistribution and use in source and binary forms, with or without
     8  * modification, are permitted provided that the following conditions
     9  * are met:
    10  * 1. Redistributions of source code must retain the above copyright
    11  *    notice(s), this list of conditions and the following disclaimer as
    12  *    the first lines of this file unmodified other than the possible
    13  *    addition of one or more copyright notices.
    14  * 2. Redistributions in binary form must reproduce the above copyright
    15  *    notice(s), this list of conditions and the following disclaimer in
    16  *    the documentation and/or other materials provided with the
    17  *    distribution.
    18  *
    19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) ``AS IS'' AND ANY
    20  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
    22  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) BE
    23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
    26  * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
    27  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
    28  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    29  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    30  *
    31  *******************************************************************************/
    33 #ifndef linkedlist_h__
    34 #define linkedlist_h__
    36 #include <stddef.h>
    38 typedef struct LinkedList_s LinkedList;
    40 struct LinkedList_s {
    41 	LinkedList *next;
    42 	LinkedList *prev;
    43 };
    45 /* Convert from LinkedList* to foo*. */
    46 #define LinkedList_Get(e, type, prop) \
    47   (type*)((char*)(e) - offsetof(type, prop))
    49 /* Insert |e| at the beginning of |l|.  */
    50 void LinkedList_InsertHead(LinkedList *l, LinkedList *e)
    51 {
    52 	e->next = l;
    53 	e->prev = l->prev;
    54 	e->next->prev = e;
    55 	e->prev->next = e;
    56 }
    58 void LinkedList_Remove(LinkedList *e)
    59 {
    60 	e->prev->next = e->next;
    61 	e->next->prev = e->prev;
    62 	e->next = e;
    63 	e->prev = e;
    64 }
    66 bool LinkedList_IsEmpty(LinkedList *e)
    67 {
    68 	return e->next == e;
    69 }
    71 void LinkedList_Init(LinkedList *e)
    72 {
    73 	e->next = e;
    74 	e->prev = e;
    75 }
    77 #endif

mercurial