2 ;;; Copyright (C) 2013 Daniel Hartwig <mandyke@gmail.com>
4 ;;; Figl is free software: you can redistribute it and/or modify it
5 ;;; under the terms of the GNU Lesser General Public License as
6 ;;; published by the Free Software Foundation, either version 3 of the
7 ;;; License, or (at your option) any later version.
9 ;;; Figl is distributed in the hope that it will be useful, but WITHOUT
10 ;;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
11 ;;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
12 ;;; Public License for more details.
14 ;;; You should have received a copy of the GNU Lesser General Public
15 ;;; License along with this program. If not, see
16 ;;; <http://www.gnu.org/licenses/>.
20 ;; Mappings from OpenGL to FFI types.
24 (define-module (figl gl types)
25 #:use-module (figl runtime)
26 #:use-module ((system foreign) #:renamer (symbol-prefix-proc 'ffi:))
76 (else (error "unknown pointer size"))))
78 (define-simple-foreign-type void ffi:void)
79 (define-simple-foreign-type GLboolean ffi:uint8)
80 (define-simple-foreign-type GLbyte ffi:int8)
81 (define-simple-foreign-type GLubyte ffi:uint8)
82 (define-simple-foreign-type GLchar ffi:int8)
83 (define-simple-foreign-type Glshort ffi:int16)
84 (define-simple-foreign-type GLushort ffi:uint16)
85 (define-simple-foreign-type GLint ffi:int32)
86 (define-simple-foreign-type GLuint ffi:uint32)
87 (define-simple-foreign-type GLsizei ffi:int32)
88 (define-simple-foreign-type GLenum ffi:uint32)
89 (define-simple-foreign-type GLintptr %ptr)
90 (define-simple-foreign-type GLsizeiptr %ptr)
91 (define-simple-foreign-type GLbitfield ffi:uint32)
92 (define-simple-foreign-type GLfloat ffi:float)
93 (define-simple-foreign-type GLclampf ffi:float)
94 (define-simple-foreign-type GLdouble ffi:double)
95 (define-simple-foreign-type GLclampd ffi:double)
97 ;; All of these have different meanings and we should be able to do a
98 ;; basic job at teasing them out, but for now, just use the limited
99 ;; annotation from (system foreign).
100 (define-simple-foreign-type GLboolean-* '*)
101 (define-simple-foreign-type GLchar-* '*)
102 (define-simple-foreign-type GLdouble-* '*)
103 (define-simple-foreign-type GLenum-* '*)
104 (define-simple-foreign-type GLfloat-* '*)
105 (define-simple-foreign-type GLint-* '*)
106 (define-simple-foreign-type GLsizei-* '*)
107 (define-simple-foreign-type GLubyte-* '*)
108 (define-simple-foreign-type GLuint-* '*)
109 (define-simple-foreign-type GLvoid-* '*)
110 (define-simple-foreign-type const-GLchar-* '*)
111 (define-simple-foreign-type const-GLchar-** '*)
112 (define-simple-foreign-type const-GLclampf-* '*)
113 (define-simple-foreign-type const-GLdouble-* '*)
114 (define-simple-foreign-type const-GLenum-* '*)
115 (define-simple-foreign-type const-GLfloat-* '*)
116 (define-simple-foreign-type const-GLint-* '*)
117 (define-simple-foreign-type const-GLsizei-* '*)
118 (define-simple-foreign-type const-GLubyte* '*)
119 (define-simple-foreign-type const-GLubyte-* '*)
120 (define-simple-foreign-type const-GLubyte-* '*)
121 (define-simple-foreign-type const-GLuint-* '*)
122 (define-simple-foreign-type const-GLvoid-* '*)
123 (define-simple-foreign-type const-GLvoid-** '*)
124 (define-simple-foreign-type void-* '*)