#line 3223 "/home/travis/build/felix-lang/felix/src/packages/sdl.fdoc"
  
  
  //Module        : SDL_timer_h
  //Timestamp     : 2006/1/6 2:5:23 UTC
  //Timestamp     : 2006/1/6 13:5:23 (local)
  //Raw Header    : SDL_timer.h
  //Preprocessor  : gcc -E
  //Input file: sdl.flxcc.i
  //Flxcc Control : sdl.flxcc
  //Felix Version : 1.1.2_rc1
  
  //#define TIMER_RESOLUTION      10      /* Experimentally determined */
  //#define SDL_TIMESLICE         10
  //#define _SDL_timer_h
  
  // DO NOT USE Felix has its own timer
  open module SDL_timer_h
  {
    requires package "sdl";
    header '#include "SDL_timer.h"';
  
    //C FUNCTION POINTER TYPES
    header '''typedef Uint32 (*SDL_timer_h_cft_2)(Uint32,  void *);''';
    type SDL_timer_h_cft_2 = 'SDL_timer_h_cft_2';
    header '''typedef Uint32 (*SDL_timer_h_cft_1)(Uint32);''';
    type SDL_timer_h_cft_1 = 'SDL_timer_h_cft_1';
  
    //PURE INCOMPLETE TYPES
    type _struct__SDL_TimerID = 'struct _SDL_TimerID'; //local
  
    //TYPE ALIASES
    typedef SDL_NewTimerCallback = SDL_timer_h_cft_2;
    typedef SDL_TimerID = &_struct__SDL_TimerID;
    typedef SDL_TimerCallback = SDL_timer_h_cft_1;
  
    //PROCEDURES
    proc SDL_Delay: uint32;
  
    //FUNCTIONS
    fun SDL_AddTimer: uint32 * SDL_timer_h_cft_2 * address -> SDL_TimerID;
    fun SDL_GetTicks: 1 -> uint32;
    fun SDL_RemoveTimer: SDL_TimerID -> SDL_bool;
    fun SDL_SetTimer: uint32 * SDL_timer_h_cft_1 -> int;
  
    //CALLBACK TYPE WRAPPERS
    //callback type SDL_timer_h_cft_2, client data at 1
    typedef _fcbat_SDL_timer_h_cft_2 = uint32;
    export type (_fcbat_SDL_timer_h_cft_2) as "_fcbat_SDL_timer_h_cft_2";
    typedef _fcbt_SDL_timer_h_cft_2 = uint32 -> uint32;
    export type (_fcbt_SDL_timer_h_cft_2) as "_fcbt_SDL_timer_h_cft_2";
    header '''Uint32 _fcbw_SDL_timer_h_cft_2(Uint32 a1,  void *a2);''';
  
    const _fcbw_SDL_timer_h_cft_2: SDL_timer_h_cft_2 = "_fcbw_SDL_timer_h_cft_2";
    body '''
    Uint32 _fcbw_SDL_timer_h_cft_2(Uint32 a1,  void *a2){
      return ((_fcbt_SDL_timer_h_cft_2)a2)->apply(a1);
    }''';
  
  
    //CALLBACK CLIENT WRAPPERS
    //callback client SDL_AddTimer, client data at 1, callback at 2
    fun wrapper_SDL_AddTimer(a1: uint32, a2: _fcbt_SDL_timer_h_cft_2): SDL_TimerID= {
      return SDL_AddTimer(a1, _fcbw_SDL_timer_h_cft_2, C_hack::cast[address]a2);
    }
  }