112 lines
2 KiB
Text
112 lines
2 KiB
Text
#include <stdio.h>
|
|
#include <dlfcn.h>
|
|
|
|
#undef PERL_IMPLICIT_SYS
|
|
#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
|
|
fupg_st * FUPG_ST
|
|
|
|
INPUT
|
|
FUPG_CONN
|
|
if (sv_derived_from($arg, \"FU::PG::conn\")) $var = (fupg_conn *)SvIVX(SvRV($arg));
|
|
else croak(\"invalid connection object\");
|
|
|
|
FUPG_ST
|
|
if (sv_derived_from($arg, \"FU::PG::st\")) $var = (fupg_st *)SvIVX(SvRV($arg));
|
|
else croak(\"invalid statement 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) = fupg_connect(aTHX_ conninfo);
|
|
|
|
|
|
MODULE = FU PACKAGE = FU::PG::conn
|
|
|
|
int server_version(fupg_conn *c)
|
|
CODE:
|
|
RETVAL = PQserverVersion(c->conn);
|
|
OUTPUT:
|
|
RETVAL
|
|
|
|
void _debug_trace(fupg_conn *c, bool on)
|
|
CODE:
|
|
if (on) PQtrace(c->conn, stderr);
|
|
else PQuntrace(c->conn);
|
|
ST(0) = c->self;
|
|
|
|
void exec(fupg_conn *c, SV *sv)
|
|
CODE:
|
|
ST(0) = fupg_exec(aTHX_ c, SvPVutf8_nolen(sv));
|
|
|
|
void q(fupg_conn *c, SV *sv, ...)
|
|
CODE:
|
|
ST(0) = fupg_q(aTHX_ c, SvPVutf8_nolen(sv), ax, items);
|
|
|
|
void DESTROY(fupg_conn *c)
|
|
CODE:
|
|
fupg_destroy(c);
|
|
|
|
|
|
MODULE = FU PACKAGE = FU::PG::st
|
|
|
|
void params(fupg_st *st)
|
|
CODE:
|
|
ST(0) = fupg_st_params(aTHX_ st);
|
|
|
|
void columns(fupg_st *st)
|
|
CODE:
|
|
ST(0) = fupg_st_columns(aTHX_ st);
|
|
|
|
void exec(fupg_st *st)
|
|
CODE:
|
|
ST(0) = fupg_st_exec(aTHX_ st);
|
|
|
|
void DESTROY(fupg_st *st)
|
|
CODE:
|
|
fupg_st_destroy(st);
|