236
237
238
239
240
241
242
243
244
245
246
247
248
249
|
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
|
+
+
+
|
_Block_object_assign(void *dst_, const void *src_, const int flags_)
{
int flags = flags_ & (OF_BLOCK_FIELD_IS_BLOCK |
OF_BLOCK_FIELD_IS_OBJECT | OF_BLOCK_FIELD_IS_BYREF);
if (src_ == NULL)
return;
if (flags_ & OF_BLOCK_BYREF_CALLER)
return;
switch (flags) {
case OF_BLOCK_FIELD_IS_BLOCK:
*(of_block_literal_t**)dst_ = _Block_copy(src_);
break;
case OF_BLOCK_FIELD_IS_OBJECT:
*(id*)dst_ = [(id)src_ retain];
|
279
280
281
282
283
284
285
286
287
288
289
290
291
292
|
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
|
+
+
+
|
_Block_object_dispose(const void *obj_, const int flags_)
{
const int flags = flags_ & (OF_BLOCK_FIELD_IS_BLOCK |
OF_BLOCK_FIELD_IS_OBJECT | OF_BLOCK_FIELD_IS_BYREF);
if (obj_ == NULL)
return;
if (flags_ & OF_BLOCK_BYREF_CALLER)
return;
switch (flags) {
case OF_BLOCK_FIELD_IS_BLOCK:
_Block_release(obj_);
break;
case OF_BLOCK_FIELD_IS_OBJECT:
[(id)obj_ release];
|