;;; 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: ;; ;; SDL3 errors. ;; ;;; Code: (define-module (sdl3 errors) #:use-module (ice-9 exceptions) #:use-module (sdl3 bindings error) #:use-module (system foreign) #:export (sdl-get-error make-sdl-error sdl-assert sdl-assert-non-null)) (define (sdl-get-error) (pointer->string (SDL_GetError))) (define-exception-type &sdl-exception &error make-sdl-exception sdl-exception?) (define* (make-sdl-error origin #:key (message (sdl-get-error)) (irritants '())) (make-exception (make-sdl-exception) (make-exception-with-message message) (make-exception-with-irritants irritants) (make-exception-with-origin origin))) (define (sdl-assert origin bool) (unless (eq? bool 1) (raise-exception (make-sdl-error origin)))) (define (sdl-assert-non-null origin pointer) (when (null-pointer? pointer) (raise-exception (make-sdl-error origin))) pointer)