summaryrefslogtreecommitdiff
path: root/include/NMWException.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/NMWException.h')
-rw-r--r--include/NMWException.h36
1 files changed, 23 insertions, 13 deletions
diff --git a/include/NMWException.h b/include/NMWException.h
index 9cf7e48..d3e6290 100644
--- a/include/NMWException.h
+++ b/include/NMWException.h
@@ -1,26 +1,36 @@
-#ifndef NMWEXCEPTION_H
-#define NMWEXCEPTION_H
+#ifndef _NMWEXCEPTION
+#define _NMWEXCEPTION
+
+#include <stddef.h>
#ifdef __cplusplus
extern "C" {
#endif
-typedef void (dtor_func)(void *object, int free_object);
-typedef struct destructor_chain dtor_chain;
+#define CTORARG_TYPE int
+#define CTORARG_PARTIAL (0)
+#define CTORARG_COMPLETE (1)
+
+#define CTORCALL_COMPLETE(ctor, objptr) \
+ (((void (*)(void*, CTORARG_TYPE))ctor)(objptr, CTORARG_COMPLETE))
+
+#define DTORARG_TYPE int
-struct destructor_chain {
- dtor_chain *next;
- dtor_func *destructor;
- void *object;
-};
+#define DTORCALL_COMPLETE(dtor, objptr) (((void (*)(void*, DTORARG_TYPE))dtor)(objptr, -1))
+
+typedef struct DestructorChain {
+ struct DestructorChain* next;
+ void* destructor;
+ void* object;
+} DestructorChain;
void __unregister_fragment(int fragmentID);
-int __register_fragment(struct __eti_init_info *info, char *TOC);
-void *__register_global_object(void *object, dtor_func *destructor, dtor_chain *regmem);
-void __destroy_global_chain();
+int __register_fragment(struct __eti_init_info* info, char* TOC);
+void* __register_global_object(void* object, void* destructor, void* regmem);
+void __destroy_global_chain(void);
#ifdef __cplusplus
}
#endif
-#endif
+#endif // _NMWEXCEPTION