AntTweakBar
view release on metacpan or search on metacpan
lib/AntTweakBar.xs view on Meta::CPAN
}
void TW_CALL _int_setter_cb(const void* value, void* data){
dTHX;
SV** cb = hv_fetch(_cb_write_map, (char*) data, sizeof(SV*), 0);
dSP;
ENTER;
SAVETMPS;
PUSHMARK(SP);
XPUSHs(sv_2mortal(newSViv(*(int*)value)));
PUTBACK;
call_sv(*cb, G_DISCARD);
FREETMPS;
LEAVE;
}
/* number(double) callbacks */
void TW_CALL _number_getter(void* value, void* data){
dTHX;
SV* sv = SvRV((SV*) data);
lib/AntTweakBar.xs view on Meta::CPAN
}
void TW_CALL _number_setter_cb(const void* value, void* data){
dTHX;
SV** cb = hv_fetch(_cb_write_map, (char*) data, sizeof(SV*), 0);
dSP;
ENTER;
SAVETMPS;
PUSHMARK(SP);
XPUSHs(sv_2mortal(newSVnv(*(double*)value)));
PUTBACK;
call_sv(*cb, G_DISCARD);
FREETMPS;
LEAVE;
}
/* string callbacks */
void TW_CALL _string_getter(void* value, void* data){
dTHX;
SV* sv = SvRV((SV*) data);
lib/AntTweakBar.xs view on Meta::CPAN
}
void TW_CALL _string_setter_cb(const void* value, void* data){
dTHX;
SV** cb = hv_fetch(_cb_write_map, (char*) data, sizeof(SV*), 0);
dSP;
ENTER;
SAVETMPS;
PUSHMARK(SP);
XPUSHs(sv_2mortal(newSVpv(*(char**)value, 0)));
PUTBACK;
call_sv(*cb, G_DISCARD);
FREETMPS;
LEAVE;
}
/* double/float array callback generators */
#define DOUBLE_CALLBACK_GETTER(NAME, NUMBER, TYPE) \
void TW_CALL NAME(void* value, void* data) { \
dTHX; \
lib/AntTweakBar.xs view on Meta::CPAN
\
AV* av = (AV*)sv_2mortal((SV*)newAV()); \
TYPE* values = (TYPE*) value; \
int i; \
for(i = 0; i < NUMBER; i++) { \
av_push(av, newSVnv(values[i])); \
} \
\
PUSHMARK(SP); \
XPUSHs(sv_2mortal(newRV_inc((SV*)av))); \
PUTBACK; \
\
call_sv(*cb, G_DISCARD); \
\
FREETMPS; \
LEAVE; \
};
DOUBLE_CALLBACK_GETTER (_color3f_getter, 3, float);
DOUBLE_CALLBACK_GETTER_CB(_color3f_getter_cb, 3, float);
src/ppport.h view on Meta::CPAN
PTR2ul|5.007001||p
PTRV|5.006000||p
PUSHMARK|||
PUSH_MULTICALL||5.019003|
PUSHi|||
PUSHmortal|5.009002||p
PUSHn|||
PUSHp|||
PUSHs|||
PUSHu|5.004000||p
PUTBACK|||
PadARRAY||5.019003|
PadMAX||5.019003|
PadlistARRAY||5.019003|
PadlistMAX||5.019003|
PadlistNAMESARRAY||5.019003|
PadlistNAMESMAX||5.019003|
PadlistNAMES||5.019003|
PadlistREFCNT||5.017004|
PadnameIsOUR|||
PadnameIsSTATE|||
src/ppport.h view on Meta::CPAN
{
dSP;
SV* sv = newSVpv(p, 0);
PUSHMARK(sp);
eval_sv(sv, G_SCALAR);
SvREFCNT_dec(sv);
SPAGAIN;
sv = POPs;
PUTBACK;
if (croak_on_error && SvTRUE(GvSV(errgv)))
croak(SvPVx(GvSV(errgv), na));
return sv;
}
#endif
#endif
TwGraphAPI T_IV
TwBar* T_PTRREF
TwType T_UV
SDL_Event * O_OBJECT
INPUT
O_OBJECT
if( sv_isobject($arg) && (SvTYPE(SvRV($arg)) == SVt_PVMG) ) {
void** pointers = (void**)INT2PTR(void *, SvIV((SV *)SvRV( $arg )));
$var = ($type)(pointers[0]);
} else if ($arg == 0) {
XSRETURN(0);
} else {
XSRETURN_UNDEF;
}
( run in 0.336 second using v1.01-cache-2.11-cpan-4e96b696675 )