152 lines
6.5 KiB
C
152 lines
6.5 KiB
C
// ============================================================
|
|
// vqt6/_bridge.h — C 桥接层头文件
|
|
//
|
|
// 作用: 把 Qt6 C++ API 包装成 extern "C" 函数,供 Viper FFI 调用
|
|
// 编译: 作为静态库 libvqt6_bridge.a 或动态库 vqt6_bridge.dll
|
|
// ============================================================
|
|
|
|
#ifndef VQT6_BRIDGE_H
|
|
#define VQT6_BRIDGE_H
|
|
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
|
|
#if defined(_WIN32)
|
|
# if defined(VQT6_BRIDGE_STATIC)
|
|
# define VQT6_API
|
|
# elif defined(VQT6_BRIDGE_BUILD)
|
|
# define VQT6_API __declspec(dllexport)
|
|
# else
|
|
# define VQT6_API __declspec(dllimport)
|
|
# endif
|
|
#else
|
|
# if defined(__GNUC__) && (__GNUC__ >= 4)
|
|
# define VQT6_API __attribute__((visibility("default")))
|
|
# else
|
|
# define VQT6_API
|
|
# endif
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
// ============================================================
|
|
// QString
|
|
// ============================================================
|
|
VQT6_API void* vqt6_qstring_create(const char* utf8);
|
|
VQT6_API size_t vqt6_qstring_to_utf8(void* qstr, char* buf, size_t buf_size);
|
|
VQT6_API void vqt6_qstring_free(void* qstr);
|
|
VQT6_API int vqt6_qstring_length(void* qstr);
|
|
VQT6_API int vqt6_qstring_is_empty(void* qstr);
|
|
VQT6_API int vqt6_qstring_equals(void* qstr, void* other);
|
|
VQT6_API void* vqt6_qstring_append(void* qstr, void* other);
|
|
|
|
// ============================================================
|
|
// QByteArray
|
|
// ============================================================
|
|
VQT6_API void* vqt6_qbytearray_create(const void* data, size_t size);
|
|
VQT6_API void* vqt6_qbytearray_data(void* qba, size_t* out_size);
|
|
VQT6_API size_t vqt6_qbytearray_size(void* qba);
|
|
VQT6_API void vqt6_qbytearray_free(void* qba);
|
|
|
|
// ============================================================
|
|
// QObject
|
|
// ============================================================
|
|
VQT6_API void vqt6_qobject_delete(void* obj);
|
|
VQT6_API void vqt6_qobject_delete_later(void* obj);
|
|
VQT6_API void vqt6_qobject_set_object_name(void* obj, void* name);
|
|
VQT6_API void* vqt6_qobject_object_name(void* obj);
|
|
VQT6_API void vqt6_qobject_set_parent(void* child, void* parent);
|
|
VQT6_API void* vqt6_qobject_parent(void* obj);
|
|
VQT6_API int vqt6_qobject_connect(void* sender, const char* signal_name,
|
|
void* receiver, const char* slot_name);
|
|
VQT6_API int vqt6_qobject_disconnect(void* sender, const char* signal_name,
|
|
void* receiver, const char* slot_name);
|
|
VQT6_API void vqt6_qobject_install_event_filter(void* watched, void* filter);
|
|
VQT6_API void vqt6_qobject_remove_event_filter(void* watched, void* filter);
|
|
|
|
// ============================================================
|
|
// QCoreApplication
|
|
// ============================================================
|
|
VQT6_API void* vqt6_qcoreapp_create(const char* app_name);
|
|
VQT6_API void* vqt6_qcoreapp_instance(void);
|
|
VQT6_API int vqt6_qcoreapp_exec(void* app);
|
|
VQT6_API void vqt6_qcoreapp_quit(void* app, int exit_code);
|
|
VQT6_API void vqt6_qcoreapp_exit(void* app, int exit_code);
|
|
VQT6_API void vqt6_qcoreapp_process_events(void* app, int flags);
|
|
VQT6_API void vqt6_qcoreapp_post_event(void* receiver, void* event);
|
|
VQT6_API int vqt6_qcoreapp_send_event(void* receiver, void* event);
|
|
VQT6_API void* vqt6_qcoreapp_organization_name(void* app);
|
|
VQT6_API void vqt6_qcoreapp_set_organization_name(void* app, void* name);
|
|
VQT6_API void* vqt6_qcoreapp_application_name(void* app);
|
|
VQT6_API void vqt6_qcoreapp_set_application_name(void* app, void* name);
|
|
|
|
// ============================================================
|
|
// QTimer
|
|
// ============================================================
|
|
VQT6_API void* vqt6_qtimer_create(void);
|
|
VQT6_API void* vqt6_qtimer_create_with_parent(void* parent);
|
|
VQT6_API void vqt6_qtimer_start(void* timer, int interval_ms);
|
|
VQT6_API void vqt6_qtimer_stop(void* timer);
|
|
VQT6_API void vqt6_qtimer_set_interval(void* timer, int interval_ms);
|
|
VQT6_API int vqt6_qtimer_interval(void* timer);
|
|
VQT6_API int vqt6_qtimer_is_active(void* timer);
|
|
VQT6_API void vqt6_qtimer_set_single_shot(void* timer, int single_shot);
|
|
VQT6_API int vqt6_qtimer_is_single_shot(void* timer);
|
|
|
|
// ============================================================
|
|
// QVariant
|
|
// ============================================================
|
|
VQT6_API void* vqt6_qvariant_create_int(int value);
|
|
VQT6_API void* vqt6_qvariant_create_double(double value);
|
|
VQT6_API void* vqt6_qvariant_create_bool(int value);
|
|
VQT6_API void* vqt6_qvariant_create_string(void* s);
|
|
VQT6_API int vqt6_qvariant_to_int(void* v, int* ok);
|
|
VQT6_API double vqt6_qvariant_to_double(void* v, int* ok);
|
|
VQT6_API int vqt6_qvariant_to_bool(void* v, int* ok);
|
|
VQT6_API void* vqt6_qvariant_to_string(void* v);
|
|
VQT6_API int vqt6_qvariant_type_id(void* v);
|
|
VQT6_API int vqt6_qvariant_is_valid(void* v);
|
|
VQT6_API void vqt6_qvariant_free(void* v);
|
|
|
|
// ============================================================
|
|
// QEvent
|
|
// ============================================================
|
|
VQT6_API int vqt6_qevent_type(void* event);
|
|
VQT6_API void vqt6_qevent_accept(void* event);
|
|
VQT6_API void vqt6_qevent_ignore(void* event);
|
|
VQT6_API int vqt6_qevent_is_accepted(void* event);
|
|
|
|
// ============================================================
|
|
// QStringList
|
|
// ============================================================
|
|
VQT6_API void* vqt6_qstringlist_create(void);
|
|
VQT6_API void vqt6_qstringlist_append(void* list, void* str);
|
|
VQT6_API int vqt6_qstringlist_size(void* list);
|
|
VQT6_API void* vqt6_qstringlist_at(void* list, int index);
|
|
VQT6_API void vqt6_qstringlist_free(void* list);
|
|
|
|
// ============================================================
|
|
// QByteArrayList
|
|
// ============================================================
|
|
VQT6_API void* vqt6_qbytearraylist_create(void);
|
|
VQT6_API void vqt6_qbytearraylist_append(void* list, void* qba);
|
|
VQT6_API int vqt6_qbytearraylist_size(void* list);
|
|
VQT6_API void* vqt6_qbytearraylist_at(void* list, int index);
|
|
VQT6_API void vqt6_qbytearraylist_free(void* list);
|
|
|
|
// ============================================================
|
|
// 全局回调注册表
|
|
// ============================================================
|
|
typedef void (*vqt6_slot_callback_t)(int slot_id, void* user_data);
|
|
VQT6_API void vqt6_register_slot(int slot_id, void* user_data);
|
|
VQT6_API void vqt6_unregister_slot(int slot_id);
|
|
VQT6_API void vqt6_trigger_slot(int slot_id);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // VQT6_BRIDGE_H
|