pg: Adventures in writing a new postgresql client
This commit is contained in:
parent
0d19ccdc1b
commit
b242176071
7 changed files with 132 additions and 4 deletions
54
FU.xs
54
FU.xs
|
|
@ -1,3 +1,5 @@
|
|||
#include <dlfcn.h>
|
||||
|
||||
#define PERL_NO_GET_CONTEXT
|
||||
#include "EXTERN.h"
|
||||
#include "perl.h"
|
||||
|
|
@ -6,12 +8,28 @@
|
|||
#include "c/common.c"
|
||||
#include "c/jsonfmt.c"
|
||||
#include "c/jsonparse.c"
|
||||
#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
|
||||
|
||||
PROTOTYPES: DISABLE
|
||||
|
||||
void json_format(SV *val, ...)
|
||||
CODE:
|
||||
ST(0) = fujson_fmt_xs(aTHX_ ax, items, val);
|
||||
|
|
@ -19,3 +37,35 @@ void json_format(SV *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 DESTROY(fupg_conn *c)
|
||||
CODE:
|
||||
fupg_destroy(c);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue