-#ifndef STATIC_H
-#define STATIC_H
+#pragma once
-void __static_init() { }
+void __static_init() {}
#define static_init() CALL_ACCUMULATED_FUNCTION(__static_init)
-void __static_init_late() { }
+void __static_init_late() {}
#define static_init_late() CALL_ACCUMULATED_FUNCTION(__static_init_late)
-
-#define REGISTER_REGISTRY(func) ACCUMULATE_FUNCTION(__static_init, func)
+void __static_init_precache() {}
+#define static_init_precache() CALL_ACCUMULATED_FUNCTION(__static_init_precache)
+void __shutdown() {}
+#define shutdownhooks() CALL_ACCUMULATED_FUNCTION(__shutdown)
#define _STATIC_INIT(where, func) \
- void _static_##func(); \
- ACCUMULATE_FUNCTION(where, _static_##func) \
- void _static_##func()
-
-#define STATIC_INIT(func) _STATIC_INIT(__static_init, func)
-#define STATIC_INIT_LATE(func) _STATIC_INIT(__static_init_late, func##_late)
+ void _static_##func(); \
+ ACCUMULATE_FUNCTION(where, _static_##func) \
+ void _static_##func()
-#endif
+#define STATIC_INIT(func) _STATIC_INIT(__static_init, func)
+#define STATIC_INIT_LATE(func) _STATIC_INIT(__static_init_late, func##_late)
+#define PRECACHE(func) _STATIC_INIT(__static_init_precache, func##_precache)
+#define SHUTDOWN(func) _STATIC_INIT(__shutdown, func##_shutdown)