1 /* 2 * This program is free software; you can redistribute it and/or 3 * modify it under the terms of the GNU General Public License 4 * as published by the Free Software Foundation; either version 2 5 * of the License, or (at your option) any later version. 6 * 7 * This program is distributed in the hope that it will be useful, 8 * but WITHOUT ANY WARRANTY; without even the implied warranty of 9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 * GNU General Public License for more details. 11 * 12 * You should have received a copy of the GNU General Public License 13 * along with this program; if not, write to the Free Software Foundation, 14 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 15 * 16 * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. 17 * All rights reserved. 18 */ 19 20 /** \file 21 * \ingroup DNA 22 * \brief These structs are the foundation for all linked lists in the library system. 23 * 24 * Doubly-linked lists start from a ListBase and contain elements beginning 25 * with Link. 26 */ 27 28 #pragma once 29 30 #ifdef __cplusplus 31 extern "C" { 32 #endif 33 34 /** Generic - all structs which are put into linked lists begin with this. */ 35 typedef struct Link { 36 struct Link *next, *prev; 37 } Link; 38 39 /** Simple subclass of Link. Use this when it is not worth defining a custom one. */ 40 typedef struct LinkData { 41 struct LinkData *next, *prev; 42 void *data; 43 } LinkData; 44 45 /** Never change the size of this! dna_genfile.c detects pointer_size with it. */ 46 typedef struct ListBase { 47 void *first, *last; 48 } ListBase; 49 50 /* 8 byte alignment! */ 51 52 #ifdef __cplusplus 53 } 54 #endif 55