Files
st/include/types.h
T
Yanis bc04021bc0 Add support for clangd in the python tools (#120)
* initial clangd support through python

* update install instructions

* invert configure.py behavior

* fix oopsie

* fix few issues from clangd

* fix related build issues
2026-07-21 19:37:21 +02:00

94 lines
2.5 KiB
C++

#ifndef TYPES_H
#define TYPES_H
#include <nitro/types.h>
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 <typename T, typename R = void> 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 <typename T> class Instance {
public:
Instance(); //! TODO: should this be inlined?
~Instance(); //! TODO: should this be inlined?
};
template <typename T> class AutoInstance : public Instance<T> {
public:
AutoInstance() {}
~AutoInstance() {}
};
#define DECL_INSTANCE_CTOR(type, gpInstance) \
template <typename T> Instance<T>::Instance() { \
gpInstance = (type *) this; \
} \
template class Instance<type>;
#define DECL_INSTANCE_DTOR(type, gpInstance) \
template <> Instance<type>::~Instance() { \
gpInstance = NULL; \
}
#define DECL_INSTANCE(type, gpInstance) \
DECL_INSTANCE_CTOR(type, gpInstance) \
DECL_INSTANCE_DTOR(type, gpInstance)
template <typename T> struct StaticInstance {
static T sInstance;
};
#define DECL_STATIC_INSTANCE(T) T StaticInstance<T>::sInstance
#endif
//! TODO: move elsewhere
#ifdef __cplusplus
extern "C" {
#endif
typedef struct SPAHeader {
/* 00 */ u32 magic; // always 'SPA '
/* 04 */ unk32 mUnk_04;
/* 08 */ u16 mUnk_08;
/* 0A */ char pad[0x18 - 0x0A];
/* 18 */ unk32 mUnk_18;
} SPAHeader;
#ifdef __cplusplus
}
#endif
#endif