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

typemap  view on Meta::CPAN

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 )