#ifndef RITUAL_GLOBAL_H
#define RITUAL_GLOBAL_H
#include <stdint.h>
#include <iostream>
#include <assert.h>
#include <new>
#include <cstdlib>
#ifdef _WIN32
#define RITUAL_EXPORT __declspec(dllexport)
#else
#define RITUAL_EXPORT
#endif
#define ritual_assert(x) \
if (!(x)) { \
std::cout << "assertion failed: " << #x << "\n"; \
exit(1); \
}
namespace ritual {
template<typename T>
void call_destructor(T* x) {
x->~T();
}
template<class T>
class Callback {
public:
Callback() {
m_data = nullptr;
m_deleter = nullptr;
m_callback = nullptr;
}
~Callback() {
if (m_deleter) {
m_deleter(m_data);
}
}
void set(T callback, void (*deleter)(void*), void* data) {
if (m_deleter) {
m_deleter(m_data);
}
m_callback = callback;
m_deleter = deleter;
m_data = data;
}
T get() const { return m_callback; }
void* data() const { return m_data; }
private:
void* m_data;
void (*m_deleter)(void*);
T m_callback;
};
}
#endif #include "QtQml"