|
From: | Gregory Casamento |
Subject: | Re: Creating a block using the Macros.... |
Date: | Thu, 31 Oct 2019 19:53:52 -0400 |
|
Sender notified by Mailtrack 10/31/19, 07:51:42 PM |
This is not possible in the general case.
A block is a structure containing:
- A pointer to the invoke function.
- The type info for the call.
- A set of references to captured variables including:
- Helpers to destroy any captured variables.
- Helpers to copy any captured variables.
C macros are nowhere near expressive enough for this. You could
probably (just about) implement them using C++ templates, though it
would be a lot of work.
The block macros give a way of allowing functions / methods that take
blocks to be called, so that it is possible to build GNUstep with GCC
and link it to a program built with clang. To date, anything that needs
to create blocks, we have implemented a different way or conditionally
compiled out when building with GCC.
David
On 27/10/2019 15:55, Gregory Casamento wrote:
> How do I create a block using the macros? I know how to declare one,
> but not actually create one. Doing it in clang is easy, but I need
> something that will work for both....
>
> Any ideas?
>
> GC
> --
> Gregory Casamento
> GNUstep Lead Developer / OLC, Principal Consultant
> http://www.gnustep.org - http://heronsperch.blogspot.com
> http://ind.ie/phoenix/
>
> Mailtrack
> <https://mailtrack.io?utm_source=gmail&utm_medium=signature&utm_campaign=signaturevirality5&>
> Sender notified by
> Mailtrack
> <https://mailtrack.io?utm_source=gmail&utm_medium=signature&utm_campaign=signaturevirality5&>
> 10/27/19, 11:53:53 AM
>
[Prev in Thread] | Current Thread | [Next in Thread] |