pygomx/pygomx-module/build_ffi.py

46 lines
1.7 KiB
Python
Raw Normal View History

2026-01-09 18:52:31 +01:00
#!/usr/bin/python
from cffi import FFI
ffibuilder = FFI()
ffibuilder.set_source(
module_name="_pygomx",
source=""" //passed to the real C compiler
#include "libmxclient.h"
""",
libraries=["mxclient"],
)
ffibuilder.cdef(
csource="""
typedef void (*on_event_handler_ptr) (char*, void*);
typedef void (*on_message_handler_ptr) (char*, void*);
2026-01-19 17:55:44 +01:00
extern void FreeCString(char* s);
2026-01-13 13:11:02 +01:00
extern char* cli_discoverhs(char* mxid);
extern char* cli_mkmxtoken(char* mxid, char* pw);
extern char* cli_whoami(char* hs, char* accessToken);
extern char* cli_accountinfo(char* hs, char* accessToken);
extern char* cli_clearaccount(char* hs, char* accessToken);
extern char* cli_serverinfo(char* url);
2026-01-31 08:13:53 +01:00
extern int apiv0_initialize();
extern int apiv0_deinitialize();
extern char* apiv0_discover(char* mxid);
extern char* apiv0_login(char* data);
extern char* apiv0_createclient(char* storage_path, char* hs, char* mxid, char* accessToken);
extern char* apiv0_createclient_pass(char* mxpassfile, char* storage_path, char* hs, char* localpart, char* domain);
extern char* apiv0_set_on_event_handler(int cid, on_event_handler_ptr ptr, void* pobj);
extern char* apiv0_set_on_message_handler(int cid, on_message_handler_ptr ptr, void* pobj);
2026-01-31 08:13:53 +01:00
extern char* apiv0_startclient(int cid);
extern char* apiv0_stopclient(int cid);
extern char* apiv0_sendmessage(int cid, char* data);
2026-02-07 10:43:11 +01:00
extern char* apiv0_leaveroom(int cid, char* roomid);
2026-01-31 08:13:53 +01:00
extern int apiv0_removeclient(int cid);
extern char* apiv0_listclients();
extern char* apiv0_getoptions(int cid);
extern int apiv0_setoptions(int cid, char* opts);
2026-01-09 18:52:31 +01:00
"""
)
if __name__ == "__main__":
ffibuilder.compile(verbose=True)