ObjFW  autorelease-foundation.m at [9d802a786d]

File src/autorelease-foundation.m artifact b7bf801aac part of check-in 9d802a786d


/*
 * 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;
}