ObjFW  Artifact [b7bf801aac]

Artifact b7bf801aac7a6188639ef57e64ab7e6d703455e981effcce839b03c39ff55e14:

  • File src/autorelease-foundation.m — part of check-in [9d802a786d] at 2025-01-01 12:58:18 on branch trunk — Update copyright (user: js size: 1410)

/*
 * Copyright (c) 2008-2025 Jonathan Schleifer <js@nil.im>
 *
 * All rights reserved.
 *
 * This program is free software: you can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License version 3.0 only,
 * as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
 * version 3.0 for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * version 3.0 along with this program. If not, see
 * <https://www.gnu.org/licenses/>.
 */

/*
 * This file provides a wrapper to use the Foundation implementation for
 * autorelease pools.
 *
 * If we're using the Apple runtime and it doesn't have autorelease pools, we
 * need to use the implementation from Foundation to make ObjFWBridge work. We
 * can't use the ObjFWRT implementation as that would result in two parallel
 * autorelease pool chains.
 */

#include "config.h"

#import <Foundation/Foundation.h>

void *
objc_autoreleasePoolPush(void)
{
	return [[NSAutoreleasePool alloc] init];
}

void
objc_autoreleasePoolPop(void *pool)
{
	return [(id)pool drain];
}

id
_objc_rootAutorelease(id object)
{
	[NSAutoreleasePool addObject: object];

	return object;
}