1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
#include <vector>
#import "cube.h"
#import "protos.h"
static std::vector<void (^)(void)> *queue;
void
enqueueInit(void (^init)(void))
{
if (queue == NULL)
queue = new std::vector<void (^)(void)>();
queue->push_back(init);
}
void
processInitQueue(void)
{
for (auto &init : *queue)
init();
queue->clear();
}
|
<
<
<
>
|
>
|
|
|
|
|
>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
#import "cube.h"
static void **queue;
static size_t queueCount;
void
enqueueInit(void (^init)(void))
{
queue = realloc(queue, (queueCount + 1) * sizeof(void *));
if (queue == NULL)
fatal(@"cannot allocate init queue");
queue[queueCount++] = (__bridge void *)init;
}
void
processInitQueue(void)
{
for (size_t i = 0; i < queueCount; i++)
((__bridge void (^)())queue[i])();
free(queue);
queueCount = 0;
}
|