#pragma once #include #include "rute_base.h" class QWidget; class QString; extern std::map s_host_data_lookup; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// struct PrivData { QWidget* parent; }; RUArray alloc_primitive_array(int size); /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// template void destroy_generic(struct RUBase* qt_data) { QT* qt_obj = (QT*)qt_data; delete qt_obj; } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// template T create_widget_func( struct RUBase* priv_data, RUDeleteCallback delete_callback, void* host_data) { PrivData* data = (PrivData*)priv_data; QT* qt_obj = nullptr; if (data) { qt_obj = new QT(data->parent); } else { qt_obj = new QT(nullptr); } s_host_data_lookup[(void*)qt_obj] = host_data; qt_obj->m_delete_callback = delete_callback; T ctl; ctl.qt_data = (struct RUBase*)qt_obj; ctl.host_data = nullptr; return ctl; } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// template T generic_create_func(void* priv_data) { (void)priv_data; QT* qt_obj = new QT(); T ctl; ctl.qt_data = (struct RUBase*)qt_obj; ctl.host_data = nullptr; return ctl; } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// template T generic_create_func_with_delete( struct RUBase* priv_data, RUDeleteCallback delete_callback, void* private_user_data) { (void)priv_data; QT* qt_obj = new QT(); qt_obj->m_delete_callback = delete_callback; qt_obj->m_private_data = private_user_data; T ctl; ctl.qt_data = (struct RUBase*)qt_obj; ctl.host_data = nullptr; return ctl; } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// const char* q_string_to_const_char(const QString& v); /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// struct RUApplication create_application(struct RUBase* priv_data); void destroy_application(struct RUBase* priv_data);