`extern "C"` did not actually have an effect here since it only impacts
name mangling of functions, not structs (or other class types). Now this
can get in the way when we add C++ blocks with functions , e.g.
templates are not allowed in code with C-linkage.
Most of these were added in ad4b7741db, even though it was known that
this doesn't have any impact. Reason was because developers thought they
would have to add that to all direct and indirect includes to be able to
use a header in C++ (a common misconception). Now with most files
compiled in C++, it's obvious that this isn't the case.
Pull Request: https://projects.blender.org/blender/blender/pulls/111926
32 lines
826 B
C
32 lines
826 B
C
/* SPDX-FileCopyrightText: 2001-2002 NaN Holding BV. All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
|
|
/** \file
|
|
* \ingroup DNA
|
|
* \brief These structs are the foundation for all linked lists in the library system.
|
|
*
|
|
* Doubly-linked lists start from a ListBase and contain elements beginning
|
|
* with Link.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
/** Generic - all structs which are put into linked lists begin with this. */
|
|
typedef struct Link {
|
|
struct Link *next, *prev;
|
|
} Link;
|
|
|
|
/** Simple subclass of Link. Use this when it is not worth defining a custom one. */
|
|
typedef struct LinkData {
|
|
struct LinkData *next, *prev;
|
|
void *data;
|
|
} LinkData;
|
|
|
|
/** Never change the size of this! dna_genfile.cc detects pointer_size with it. */
|
|
typedef struct ListBase {
|
|
void *first, *last;
|
|
} ListBase;
|
|
|
|
/* 8 byte alignment! */
|