changes to hooks
This commit is contained in:
@@ -50,28 +50,28 @@ struct Lambda<R(Args...)>
|
||||
};
|
||||
|
||||
|
||||
struct Hook : Array_List<Lambda<void()>> {
|
||||
struct Hook {
|
||||
Array_List<Lambda<void()>> lambdas;
|
||||
Hook() {
|
||||
alloc();
|
||||
lambdas.alloc();
|
||||
}
|
||||
~Hook () {
|
||||
dealloc();
|
||||
lambdas.dealloc();
|
||||
}
|
||||
void operator<<(Lambda<void()> f) {
|
||||
// FIXME(Felix): Why can I not call Array_List::append here??? Hallo?
|
||||
if (count == length) {
|
||||
length *= 2;
|
||||
data = (Lambda<void()>*)realloc(data, length * sizeof(Lambda<void()>));
|
||||
if (lambdas.count == lambdas.length) {
|
||||
lambdas.length *= 2;
|
||||
lambdas.data = (Lambda<void()>*)realloc(lambdas.data, lambdas.length * sizeof(Lambda<void()>));
|
||||
}
|
||||
data[count] = f;
|
||||
count++;
|
||||
lambdas.data[lambdas.count] = f;
|
||||
lambdas.count++;
|
||||
}
|
||||
void operator()() {
|
||||
while(count --> 0) {
|
||||
fflush(stdout);
|
||||
data[count]();
|
||||
while(lambdas.count --> 0) {
|
||||
lambdas.data[lambdas.count]();
|
||||
}
|
||||
count = 0;
|
||||
lambdas.count = 0;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -79,6 +79,6 @@ struct __System_Shutdown_Hook : Hook {
|
||||
void operator()() = delete;
|
||||
~__System_Shutdown_Hook() {
|
||||
Hook::operator()();
|
||||
dealloc();
|
||||
lambdas.dealloc();
|
||||
}
|
||||
} system_shutdown_hook;
|
||||
|
||||
Reference in New Issue
Block a user