Files
st/libs/runtime/include/MWException.h
T
Yanis 0f74fd4201 Misc Stuff 5 (#63)
* name item 31 to 34

* name item 25 to 29

* decompile PassengerManager (95%)

* started cargo manager

* local attribute

* passenger/cargo manager ov001 functions

* name item manager functions

* fix build issues & more docs on 027e0cd8

* format
2026-05-11 17:27:59 +02:00

56 lines
1.6 KiB
C

#ifndef _RUNTIME_MWEXCEPTION_H
#define _RUNTIME_MWEXCEPTION_H
#include <types.h>
typedef void (*DestructorFunc)(void *);
typedef short vbase_ctor_arg_type;
typedef u8 local_cond_type;
typedef struct CatchInfo {
void *location;
void *typeinfo;
void *dtor;
void *sublocation;
long pointercopy;
void *stacktop;
} CatchInfo;
typedef struct DestructorChain {
/* 0x00 */ struct DestructorChain *next;
/* 0x04 */ DestructorFunc dtor;
/* 0x08 */ void *object;
} DestructorChain;
void __end_catch(CatchInfo *catchinfo);
extern DestructorChain *__global_destructor_chain;
void *__register_global_object(void *object, void *destructor, DestructorChain *link);
/**
* @brief Call all static initializers
*/
extern void __call_static_initializers(void);
/**
* @brief Destroy all constructed global objects
*/
extern void __destroy_global_chain(void);
extern void __throw(char *throwtype, void *location, void *dtor);
extern void __rethrow(void);
extern char __throw_catch_compare(const u8 *throwtype, const u8 *catchtype, s32 *offset_result);
#define DTORARG_TYPE short
#define DTORARG_PARTIAL (0) // destroy non-virtual bases
#define DTORARG_COMPLETE (-1) // destroy all bases
#define DTORARG_DELETE (1) // destroy all bases and delete object
#define DTORCALL_COMPLETE(dtor, objptr) (((void (*)(void *, DTORARG_TYPE)) dtor)(objptr, DTORARG_COMPLETE))
#define DTORCALL_PARTIAL(dtor, objptr) (((void (*)(void *, DTORARG_TYPE)) dtor)(objptr, DTORARG_PARTIAL))
#define DTORCALL_VTTOBJECT(dtor, objptr, vttptr) (((void (*)(void *, void *)) dtor)(objptr, vttptr))
#endif