hsqml-0.1.0: cbits/hsqml.h
#ifndef HSQML_H
#define HSQML_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stddef.h>
#include <HsFFI.h>
/* Manager */
extern void hsqml_init(
void (*)(HsFunPtr),
void (*)(HsStablePtr));
extern void hsqml_run();
extern void hsqml_set_debug_loglevel(int);
/* String */
typedef char HsQMLStringHandle;
typedef unsigned short UTF16;
extern size_t hsqml_get_string_size();
extern void hsqml_init_string(
HsQMLStringHandle*);
extern void hsqml_deinit_string(
HsQMLStringHandle*);
extern UTF16* hsqml_marshal_string(
int, HsQMLStringHandle*);
extern int hsqml_unmarshal_string(
HsQMLStringHandle*, UTF16**);
/* URL */
typedef char HsQMLUrlHandle;
extern size_t hsqml_get_url_size();
extern void hsqml_init_url(
HsQMLUrlHandle*);
extern void hsqml_deinit_url(
HsQMLUrlHandle*);
extern void hsqml_marshal_url(
char*, int, HsQMLUrlHandle*);
extern int hsqml_unmarshal_url(
HsQMLUrlHandle*, char**);
/* Class */
typedef char HsQMLClassHandle;
typedef void (*HsQMLUniformFunc)(void*, void**);
extern int hsqml_get_next_class_id();
extern HsQMLClassHandle* hsqml_create_class(
unsigned int*, char*, HsQMLUniformFunc*, HsQMLUniformFunc*);
extern void hsqml_finalise_class_handle(
HsQMLClassHandle* hndl);
/* Object */
typedef char HsQMLObjectHandle;
extern HsQMLObjectHandle* hsqml_create_object(
HsStablePtr, HsQMLClassHandle*);
extern HsStablePtr hsqml_object_get_haskell(
HsQMLObjectHandle*);
extern void* hsqml_object_get_pointer(
HsQMLObjectHandle*);
extern HsQMLObjectHandle* hsqml_get_object_handle(
void*, HsQMLClassHandle*);
extern void hsqml_finalise_object_handle(
HsQMLObjectHandle*);
/* Engine */
extern void hsqml_create_engine(
HsQMLObjectHandle*,
HsQMLUrlHandle*,
int,
int,
HsQMLStringHandle*);
#ifdef __cplusplus
}
#endif
#endif /*HSQML_H*/