From 9b1d91b4c68477145434021ea7392c16d849ebaa Mon Sep 17 00:00:00 2001 From: David Thompson Date: Wed, 2 Oct 2024 21:22:19 -0400 Subject: First commit! --- sdl3/events.scm | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 sdl3/events.scm (limited to 'sdl3/events.scm') diff --git a/sdl3/events.scm b/sdl3/events.scm new file mode 100644 index 0000000..be0e0ef --- /dev/null +++ b/sdl3/events.scm @@ -0,0 +1,43 @@ +;;; guile-sdl3 -- Scheme bindings for SDL3 +;;; Copyright © 2024 David Thompson +;;; +;;; Licensed under the Apache License, Version 2.0 (the "License"); +;;; you may not use this file except in compliance with the License. +;;; You may obtain a copy of the License at +;;; +;;; http://www.apache.org/licenses/LICENSE-2.0 +;;; +;;; Unless required by applicable law or agreed to in writing, software +;;; distributed under the License is distributed on an "AS IS" BASIS, +;;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +;;; See the License for the specific language governing permissions and +;;; limitations under the License. + +;;; Commentary: +;; +;; Low-level FFI binding utilities. +;; +;;; Code: + +(define-module (sdl3 events) + #:use-module (bstruct) + #:use-module (sdl3 bindings events) + #:use-module (system foreign) + #:export (event? + event-type + poll-event)) + +(define (make-event) + (bstruct-alloc SDL_Event)) + +(define (event? obj) + (bstruct? SDL_Event obj)) + +(define (event-type event) + (event-type->symbol (bstruct-ref SDL_Event event type))) + +(define (poll-event) + (and (eq? (SDL_PollEvent %null-pointer) 1) + (let ((event (make-event))) + (SDL_PollEvent (bstruct->pointer SDL_Event event)) + event))) -- cgit v1.2.3