]> git.jsancho.org Git - guile-irrlicht.git/blob - irrlicht/util.scm
Support for aabbox3d
[guile-irrlicht.git] / irrlicht / util.scm
1 ;;; guile-irrlicht --- FFI bindings for Irrlicht Engine
2 ;;; Copyright (C) 2019 Javier Sancho <jsf@jsancho.org>
3 ;;;
4 ;;; This file is part of guile-irrlicht.
5 ;;;
6 ;;; Guile-irrlicht is free software; you can redistribute it and/or modify
7 ;;; it under the terms of the GNU Lesser General Public License as
8 ;;; published by the Free Software Foundation; either version 3 of the
9 ;;; License, or (at your option) any later version.
10 ;;;
11 ;;; Guile-irrlicht is distributed in the hope that it will be useful, but
12 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 ;;; General Public License for more details.
15 ;;;
16 ;;; You should have received a copy of the GNU Lesser General Public
17 ;;; License along with guile-irrlicht.  If not, see
18 ;;; <http://www.gnu.org/licenses/>.
19
20
21 (define-module (irrlicht util)
22   #:use-module (system foreign)
23   #:export (bool->integer
24             integer->bool
25             define-foreign))
26
27 (define (bool->integer var)
28   (if var 1 0))
29
30 (define (integer->bool var)
31   (if (= var 0) #f #t))
32
33 ;; Based on guile-sdl2 function, thanks a lot
34 (define irrlicht-func
35   (let ((cirr (dynamic-link "libCIrrlicht")))
36     (lambda (return-type function-name arg-types)
37       (pointer->procedure return-type
38                           (dynamic-func function-name cirr)
39                           arg-types))))
40
41 (define-syntax-rule (define-foreign name return-type func-name arg-types)
42   (define-public name
43     (irrlicht-func return-type func-name arg-types)))