ObjFW
Toggle main menu visibility
Loading...
Searching...
No Matches
pre_ivar.h
1
/*
2
* Copyright (c) 2008-2026 Jonathan Schleifer <js@nil.im>
3
*
4
* All rights reserved.
5
*
6
* This program is free software: you can redistribute it and/or modify it
7
* under the terms of the GNU Lesser General Public License version 3.0 only,
8
* as published by the Free Software Foundation.
9
*
10
* This program is distributed in the hope that it will be useful, but WITHOUT
11
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
13
* version 3.0 for more details.
14
*
15
* You should have received a copy of the GNU Lesser General Public License
16
* version 3.0 along with this program. If not, see
17
* <https://www.gnu.org/licenses/>.
18
*/
19
20
enum
_objc_object_info {
21
_OBJC_OBJECT_INFO_WEAK_REFERENCES = 0x1,
22
_OBJC_OBJECT_INFO_ASSOCIATIONS = 0x02
23
};
24
25
struct
objc_pre_ivars {
26
#ifdef OF_MSDOS
27
ptrdiff_t offset;
28
#endif
29
volatile
int
retainCount;
30
volatile
unsigned
int
info;
31
#if !defined(OF_HAVE_ATOMIC_OPS) && !defined(OF_AMIGAOS)
32
OFSpinlock retainCountSpinlock;
33
#endif
34
};
35
36
#define _OBJC_PRE_IVARS_ALIGNED \
37
OFRoundUpToPowerOf2(sizeof(struct objc_pre_ivars), OF_BIGGEST_ALIGNMENT)
38
#define _OBJC_PRE_IVARS(obj) \
39
((struct objc_pre_ivars *)(void *)((char *)obj - \
40
_OBJC_PRE_IVARS_ALIGNED))
src
runtime
pre_ivar.h
Generated by
1.17.0