/src/SDLx/Timer.xs
http://github.com/PerlGameDev/SDL · Unknown · 156 lines · 135 code · 21 blank · 0 comment · 0 complexity · c79e5b41fabb051e91cb8f6fcb944dbe MD5 · raw file
- #include "EXTERN.h"
- #include "perl.h"
- #include "XSUB.h"
- #include "ppport.h"
- #ifndef aTHX_
- #define aTHX_
- #endif
- #include <SDL.h>
- #include "SDLx/Timer.h"
- MODULE = SDLx::Controller::Timer PACKAGE = SDLx::Controller::Timer PREFIX = timerx_
- sdlx_timer *
- timerx_new (CLASS, ... )
- char* CLASS
- CODE:
- RETVAL = (sdlx_timer *)safemalloc( sizeof(sdlx_timer) );
- RETVAL->started_ticks = 0;
- RETVAL->paused_ticks = 0;
- RETVAL->started = 0;
- RETVAL->paused = 0;
- OUTPUT:
- RETVAL
- int
- timerx_started_ticks ( timer, ... )
- sdlx_timer *timer
- CODE:
- if (items > 1 ) timer->started_ticks = SvIV(ST(1));
- RETVAL = timer->started_ticks;
- OUTPUT:
- RETVAL
- int
- timerx_paused_ticks ( timer, ... )
- sdlx_timer *timer
- CODE:
- if (items > 1 ) timer->paused_ticks = SvIV(ST(1));
- RETVAL = timer->paused_ticks;
- OUTPUT:
- RETVAL
- int
- timerx_started ( timer, ... )
- sdlx_timer *timer
- CODE:
- if (items > 1 ) timer->started = SvIV(ST(1));
- RETVAL = timer->started;
- OUTPUT:
- RETVAL
- int
- timerx_paused ( timer, ... )
- sdlx_timer *timer
- CODE:
- if (items > 1 ) timer->paused = SvIV(ST(1));
- RETVAL = timer->paused;
- OUTPUT:
- RETVAL
- void
- timerx_start ( timer )
- sdlx_timer *timer
- CODE:
- timer->started = 1;
- timer->started_ticks = SDL_GetTicks();
- void
- timerx_stop ( timer )
- sdlx_timer *timer
- CODE:
- timer->started = 0;
- timer->paused = 0;
- void
- timerx_pause ( timer )
- sdlx_timer *timer
- CODE:
- if( timer->started == 1 && timer->paused == 0)
- {
- timer->paused = 1;
- timer->paused_ticks = SDL_GetTicks() - timer->started_ticks;
- }
- void
- timerx_unpause ( timer )
- sdlx_timer *timer
- CODE:
- timer->paused = 0;
- timer->started_ticks = SDL_GetTicks() - timer->started_ticks;
- timer->paused_ticks = 0;
- int
- timerx_get_ticks ( timer )
- sdlx_timer *timer
- CODE:
- if(timer->started == 1)
- {
- if(timer->paused == 1)
- {
- RETVAL = timer->paused_ticks;
- }
- else
- {
- int update = SDL_GetTicks();
- int diff = update - timer->started_ticks;
- RETVAL = diff;
- }
- }
- else
- {
- RETVAL = 0;
- }
- OUTPUT:
- RETVAL
- int
- timerx_is_started ( timer )
- sdlx_timer *timer
- CODE:
- RETVAL = timer->started;
- OUTPUT:
- RETVAL
- int
- timerx_is_paused ( timer)
- sdlx_timer *timer
- CODE:
- RETVAL = timer->paused;
- OUTPUT:
- RETVAL
- void
- timerx_DESTROY(bag)
- SV *bag
- CODE:
- if( sv_isobject(bag) && (SvTYPE(SvRV(bag)) == SVt_PVMG) ) {
- void** pointers = (void**)INT2PTR(void *, SvIV((SV *)SvRV( bag )));
- sdlx_timer * timer = (sdlx_timer*)(pointers[0]);
- if (PERL_GET_CONTEXT == pointers[1]) {
- pointers[0] = NULL;
- safefree( pointers );
- safefree(timer);
- }
- } else if (bag == 0) {
- XSRETURN(0);
- } else {
- XSRETURN_UNDEF;
- }