PasteRack.org | ||
Paste # 69797 | ||
2019-05-14 04:55:47 | ||
Fork as a new paste. | ||
Paste viewed 356 times. | ||
Tweet | ||
Embed: | ||
#lang racket/base (require ffi/unsafe racket/list) (define sdl-lib (ffi-lib "libSDL2" '("0" #f))) (define (get-ffi-vararg name lib ret-type . args) (lambda rest (define c-rest (map (lambda (x) (cond [(and (integer? x) (exact? x)) _int] [(and (number? x) (real? x)) _double*] [(string? x) _string] [(bytes? x) _bytes] [(symbol? x) _symbol] [else (error 'get-ffi-vararg "don't know how to deal with ~e" x)])) rest)) (apply (get-ffi-obj name lib (_cprocedure (drop (append args c-rest) (length args)) ret-type)) rest))) (define SDL_SetError (get-ffi-vararg "SDL_SetError" sdl-lib _void _string)) (SDL_SetError) (define SDL_GetError (get-ffi-obj "SDL_GetError" sdl-lib (_cprocedure '() _string))) (displayln (SDL_GetError))