#ifndef TYPES_H #define TYPES_H #include typedef s8 unk8; typedef s16 unk16; typedef s32 unk32; #define CEIL_DIV(a, b) (((a) + (b) - 1) / (b)) #ifdef __cplusplus #define DECL_PTMF(name, ...) \ template struct name { \ typedef R (T::*PTMFCallback)(__VA_ARGS__); \ \ PTMFCallback callback; \ }; #define CALL_PTMF(type, data, ...) \ { \ type &ptr = (data); \ (this->*ptr.callback)(__VA_ARGS__); \ } #define STATIC_CALL_PTMF(type, data, thisx, ...) \ { \ type &ptr = (data); \ ((thisx)->*ptr.callback)(__VA_ARGS__); \ } #define STATIC_PTMFCALLBACK(type, data, thisx, ...) \ { \ type::PTMFCallback &ptr = (data); \ ((thisx)->*ptr)(__VA_ARGS__); \ } DECL_PTMF(PTMF); typedef void (*UnkCallback)(u16 param1); template class Instance { public: Instance(); ~Instance(); }; template class AutoInstance : public Instance { public: AutoInstance() {} ~AutoInstance() {} }; #define DECL_INSTANCE(T, gpInstance) \ template Instance::Instance() { \ gpInstance = (T *) this; \ } \ template Instance::~Instance() { \ gpInstance = NULL; \ } \ template class Instance #endif #endif