#ifndef MXMINIAUDIO_H #define MXMINIAUDIO_H #include "mxtypes.h" #include #include template class MxMiniaudio : public T { public: MxMiniaudio() : m_initialized(false) {} template ma_result Init(Fn p_init, Args&&... p_args) { ma_result result = p_init(std::forward(p_args)..., this); if (result == MA_SUCCESS) { m_initialized = true; } return result; } template void Destroy(Fn p_uninit) { if (m_initialized) { p_uninit(this); m_initialized = false; } } private: bool m_initialized; }; #endif // MXMINIAUDIO_H