︙ | | | ︙ | |
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
(OF_BIGGEST_ALIGNMENT - 1)) & ~(OF_BIGGEST_ALIGNMENT - 1))
#define PRE_IVARS ((struct pre_ivar *)(void *)((char *)self - PRE_IVARS_ALIGN))
static struct {
Class isa;
} allocFailedException;
uint32_t OFHashSeed;
void *
OFAllocMemory(size_t count, size_t size)
{
void *pointer;
if OF_UNLIKELY (count == 0 || size == 0)
|
|
|
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
(OF_BIGGEST_ALIGNMENT - 1)) & ~(OF_BIGGEST_ALIGNMENT - 1))
#define PRE_IVARS ((struct pre_ivar *)(void *)((char *)self - PRE_IVARS_ALIGN))
static struct {
Class isa;
} allocFailedException;
unsigned long OFHashSeed;
void *
OFAllocMemory(size_t count, size_t size)
{
void *pointer;
if OF_UNLIKELY (count == 0 || size == 0)
|
︙ | | | ︙ | |
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
|
OFRandom16(void)
{
#if defined(HAVE_ARC4RANDOM)
return arc4random();
#elif defined(HAVE_GETRANDOM)
uint16_t buffer;
OF_ENSURE(getrandom(&buffer, sizeof(buffer), 0) == sizeof(buffer));
return buffer;
#else
static OFOnceControl onceControl = OFOnceControlInitValue;
OFOnce(&onceControl, initRandom);
# ifdef HAVE_RANDOM
return random() & 0xFFFF;
|
|
|
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
|
OFRandom16(void)
{
#if defined(HAVE_ARC4RANDOM)
return arc4random();
#elif defined(HAVE_GETRANDOM)
uint16_t buffer;
OFEnsure(getrandom(&buffer, sizeof(buffer), 0) == sizeof(buffer));
return buffer;
#else
static OFOnceControl onceControl = OFOnceControlInitValue;
OFOnce(&onceControl, initRandom);
# ifdef HAVE_RANDOM
return random() & 0xFFFF;
|
︙ | | | ︙ | |
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
|
OFRandom32(void)
{
#if defined(HAVE_ARC4RANDOM)
return arc4random();
#elif defined(HAVE_GETRANDOM)
uint32_t buffer;
OF_ENSURE(getrandom(&buffer, sizeof(buffer), 0) == sizeof(buffer));
return buffer;
#else
return ((uint32_t)OFRandom16() << 16) | OFRandom16();
#endif
}
uint64_t
OFRandom64(void)
{
#if defined(HAVE_ARC4RANDOM_BUF)
uint64_t buffer;
arc4random_buf(&buffer, sizeof(buffer));
return buffer;
#elif defined(HAVE_GETRANDOM)
uint64_t buffer;
OF_ENSURE(getrandom(&buffer, sizeof(buffer), 0) == sizeof(buffer));
return buffer;
#else
return ((uint64_t)OFRandom32() << 32) | OFRandom32();
#endif
}
|
|
|
|
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
|
OFRandom32(void)
{
#if defined(HAVE_ARC4RANDOM)
return arc4random();
#elif defined(HAVE_GETRANDOM)
uint32_t buffer;
OFEnsure(getrandom(&buffer, sizeof(buffer), 0) == sizeof(buffer));
return buffer;
#else
return ((uint32_t)OFRandom16() << 16) | OFRandom16();
#endif
}
uint64_t
OFRandom64(void)
{
#if defined(HAVE_ARC4RANDOM_BUF)
uint64_t buffer;
arc4random_buf(&buffer, sizeof(buffer));
return buffer;
#elif defined(HAVE_GETRANDOM)
uint64_t buffer;
OFEnsure(getrandom(&buffer, sizeof(buffer), 0) == sizeof(buffer));
return buffer;
#else
return ((uint64_t)OFRandom32() << 32) | OFRandom32();
#endif
}
|
︙ | | | ︙ | |
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
|
{
return (object == self);
}
- (unsigned long)hash
{
uintptr_t ptr = (uintptr_t)self;
uint32_t hash;
OF_HASH_INIT(hash);
for (size_t i = 0; i < sizeof(ptr); i++) {
OF_HASH_ADD(hash, ptr & 0xFF);
ptr >>= 8;
}
OF_HASH_FINALIZE(hash);
return hash;
}
- (OFString *)description
{
/* Classes containing data should reimplement this! */
|
|
|
|
|
|
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
|
{
return (object == self);
}
- (unsigned long)hash
{
uintptr_t ptr = (uintptr_t)self;
unsigned long hash;
OFHashInit(&hash);
for (size_t i = 0; i < sizeof(ptr); i++) {
OFHashAdd(&hash, ptr & 0xFF);
ptr >>= 8;
}
OFHashFinalize(&hash);
return hash;
}
- (OFString *)description
{
/* Classes containing data should reimplement this! */
|
︙ | | | ︙ | |
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
|
Forbid();
# endif
PRE_IVARS->retainCount++;
# ifndef OF_AMIGAOS_M68K
Permit();
# endif
#else
OF_ENSURE(OFSpinlockLock(&PRE_IVARS->retainCountSpinlock) == 0);
PRE_IVARS->retainCount++;
OF_ENSURE(OFSpinlockUnlock(&PRE_IVARS->retainCountSpinlock) == 0);
#endif
return self;
}
- (unsigned int)retainCount
{
|
|
|
|
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
|
Forbid();
# endif
PRE_IVARS->retainCount++;
# ifndef OF_AMIGAOS_M68K
Permit();
# endif
#else
OFEnsure(OFSpinlockLock(&PRE_IVARS->retainCountSpinlock) == 0);
PRE_IVARS->retainCount++;
OFEnsure(OFSpinlockUnlock(&PRE_IVARS->retainCountSpinlock) == 0);
#endif
return self;
}
- (unsigned int)retainCount
{
|
︙ | | | ︙ | |
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
|
Permit();
if (retainCount == 0)
[self dealloc];
#else
int retainCount;
OF_ENSURE(OFSpinlockLock(&PRE_IVARS->retainCountSpinlock) == 0);
retainCount = --PRE_IVARS->retainCount;
OF_ENSURE(OFSpinlockUnlock(&PRE_IVARS->retainCountSpinlock) == 0);
if (retainCount == 0)
[self dealloc];
#endif
}
- (instancetype)autorelease
|
|
|
|
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
|
Permit();
if (retainCount == 0)
[self dealloc];
#else
int retainCount;
OFEnsure(OFSpinlockLock(&PRE_IVARS->retainCountSpinlock) == 0);
retainCount = --PRE_IVARS->retainCount;
OFEnsure(OFSpinlockUnlock(&PRE_IVARS->retainCountSpinlock) == 0);
if (retainCount == 0)
[self dealloc];
#endif
}
- (instancetype)autorelease
|
︙ | | | ︙ | |