GSAPI
view release on metacpan or search on metacpan
CB_CALL;
rv = POPi;
CB_SUFFIX;
return rv;
#endif
}
/* Allocate memory for bitmap */
static void *display_memalloc(void *handle, void *device,
unsigned long size)
{
void *mem;
if(DEBUG) warn( "memalloc %i", size );
Newx( mem, size, void );
if(DEBUG) warn( "memalloc %x", mem );
return mem;
}
/* Free memory for bitmap */
static int
display_memfree(void *handle, void *device, void *mem )
{
if(DEBUG) warn( "memfree %x", mem );
Safefree( mem );
return 0;
}
/* callback structure for "display" device */
display_callback display_cb = {
sizeof(display_callback),
DISPLAY_VERSION_MAJOR,
DISPLAY_VERSION_MINOR,
display_open,
display_preclose,
display_close,
display_presize,
display_size,
display_sync,
display_page,
display_update,
display_memalloc,
display_memfree
};
/* -------------------------------------------------------- */
MODULE = GSAPI PACKAGE = GSAPI
INCLUDE: const-xs.inc
void
revision()
PROTOTYPE:
PREINIT:
gsapi_revision_t rev;
PPCODE:
gsapi_revision(&rev, sizeof(rev));
EXTEND(SP, 4);
PUSHs(sv_2mortal(newSVpv(rev.product,0)));
PUSHs(sv_2mortal(newSVpv(rev.copyright, 0)));
PUSHs(sv_2mortal(newSViv(rev.revision)));
PUSHs(sv_2mortal(newSViv(rev.revisiondate)));
GSAPI::instance
new_instance()
PROTOTYPE:
PREINIT:
gs_main_instance *inst = 0;
CODE:
gsapi_new_instance(&inst, 0); // we don't need to check rc.
RETVAL = inst;
OUTPUT:
RETVAL
void
delete_instance(inst)
GSAPI::instance inst
PROTOTYPE: $
CODE:
gsapi_delete_instance(inst);
IV
set_stdio(inst, Fstdin, Fstdout, Fstderr)
GSAPI::instance inst
SV *Fstdin
SV *Fstdout
SV *Fstderr
PROTOTYPE: $$$$
PREINIT:
int i;
CODE:
for(i = 0; i < 3; i++) {
if( cb_io[i] == NULL)
cb_io[i] = NEWSV(0, 0);
}
sv_setsv(cb_io[0], Fstdin);
sv_setsv(cb_io[1], Fstdout);
sv_setsv(cb_io[2], Fstderr);
RETVAL = gsapi_set_stdio(inst, run_stdin, run_stdout, run_stderr);
OUTPUT:
RETVAL
IV
set_display_callback(inst, Fdisplay)
GSAPI::instance inst
SV *Fdisplay
PROTOTYPE: $$
CODE:
cb_display = NEWSV(0,0);
sv_setsv( cb_display, Fdisplay );
RETVAL = gsapi_set_display_callback(inst, &display_cb);
OUTPUT:
RETVAL
( run in 0.707 second using v1.01-cache-2.11-cpan-5511b514fd6 )