fu/FU.xs

76 lines
1.3 KiB
Text

#include <dlfcn.h>
#define PERL_NO_GET_CONTEXT
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
#include "c/common.c"
#include "c/jsonfmt.c"
#include "c/jsonparse.c"
#include "c/libpq.h"
#include "c/pgconn.c"
MODULE = FU
PROTOTYPES: DISABLE
TYPEMAP: <<EOT
TYPEMAP
fupg_conn * FUPG_CONN
INPUT
FUPG_CONN
if (sv_derived_from($arg, \"FU::PG::conn\")) $var = (fupg_conn *)SvIVX(SvRV($arg));
else croak(\"invalid object\");
#"
EOT
MODULE = FU PACKAGE = FU::Util
void json_format(SV *val, ...)
CODE:
ST(0) = fujson_fmt_xs(aTHX_ ax, items, val);
void json_parse(SV *val, ...)
CODE:
ST(0) = fujson_parse_xs(aTHX_ ax, items, val);
MODULE = FU PACKAGE = FU::PG
void _load_libpq()
CODE:
if (!PQconnectdb) fupg_load();
int lib_version()
CODE:
RETVAL = PQlibVersion();
OUTPUT:
RETVAL
void connect(const char *pkg, const char *conninfo)
CODE:
(void)pkg;
ST(0) = sv_setref_pv(sv_newmortal(), "FU::PG::conn", fupg_connect(aTHX_ conninfo));
MODULE = FU PACKAGE = FU::PG::conn
int server_version(fupg_conn *c)
CODE:
RETVAL = PQserverVersion(c->conn);
OUTPUT:
RETVAL
void exec(fupg_conn *c, SV *sv)
CODE:
ST(0) = fupg_exec(c, SvPVutf8_nolen(sv));
void DESTROY(fupg_conn *c)
CODE:
fupg_destroy(c);