(system-include "GLFW/glfw3.h") (add-cflag "`pkg-config glfw3 --cflags --libs`") (mac-only (add-lib "-framework Cocoa -framework OpenGL -framework IOKit -framework CoreVideo")) (defmodule GLFW (register init (λ [] Int) "glfwInit") (register terminate (λ [] ()) "glfwTerminate") (register get-version (λ [(Ptr Int) (Ptr Int) (Ptr Int)] ()) "glfwGetVersion") (register set-error-callback (λ [GLFWerrorfun] GLFWerrorfun) "glfwSetErrorCallback") (register get-monitors (λ [(Ptr Int)] (Ptr (Ptr GLFWmonitor))) "glfwGetMonitors") (register get-primary-monitor (λ [] (Ptr GLFWmonitor)) "glfwGetPrimaryMonitor") (register get-monitor-pos (λ [(Ptr GLFWmonitor) (Ptr Int) (Ptr Int)] ()) "glfwGetMonitorPos") (register get-monitor-physical-size (λ [(Ptr GLFWmonitor) (Ptr Int) (Ptr Int)] ()) "glfwGetMonitorPhysicalSize") (register set-monitor-callback (λ [GLFWmonitorfun] GLFWmonitorfun) "glfwSetMonitorCallback") (register set-gamma (λ [(Ptr GLFWmonitor) Float] ()) "glfwSetGamma") (register set-gamma-ramp (λ [(Ptr GLFWmonitor) (Ptr GLFWgammaramp)] ()) "glfwSetGammaRamp") (register default-window-hints (λ [] ()) "glfwDefaultWindowHints") (register window-hint (λ [Int Int] ()) "glfwWindowHint") (register create-window (λ [Int Int (Ptr Char) (Ptr GLFWmonitor) (Ptr GLFWwindow)] (Ptr GLFWwindow)) "glfwCreateWindow") (register destroy-window (λ [(Ptr GLFWwindow)] ()) "glfwDestroyWindow") (register window-should-close (λ [(Ptr GLFWwindow)] Int) "glfwWindowShouldClose") (register set-window-should-close (λ [(Ptr GLFWwindow) Int] ()) "glfwSetWindowShouldClose") (register set-window-title (λ [(Ptr GLFWwindow) (Ptr Char)] ()) "glfwSetWindowTitle") (register set-window-icon (λ [(Ptr GLFWwindow) Int (Ptr GLFWimage)] ()) "glfwSetWindowIcon") (register get-window-pos (λ [(Ptr GLFWwindow) (Ptr Int) (Ptr Int)] ()) "glfwGetWindowPos") (register set-window-pos (λ [(Ptr GLFWwindow) Int Int] ()) "glfwSetWindowPos") (register get-window-size (λ [(Ptr GLFWwindow) (Ptr Int) (Ptr Int)] ()) "glfwGetWindowSize") (register set-window-size-limits (λ [(Ptr GLFWwindow) Int Int Int Int] ()) "glfwSetWindowSizeLimits") (register set-window-aspect-ratio (λ [(Ptr GLFWwindow) Int Int] ()) "glfwSetWindowAspectRatio") (register set-window-size (λ [(Ptr GLFWwindow) Int Int] ()) "glfwSetWindowSize") (register get-framebuffer-size (λ [(Ptr GLFWwindow) (Ptr Int) (Ptr Int)] ()) "glfwGetFramebufferSize") (register get-window-frame-size (λ [(Ptr GLFWwindow) (Ptr Int) (Ptr Int) (Ptr Int) (Ptr Int)] ()) "glfwGetWindowFrameSize") (register iconify-window (λ [(Ptr GLFWwindow)] ()) "glfwIconifyWindow") (register restore-window (λ [(Ptr GLFWwindow)] ()) "glfwRestoreWindow") (register maximize-window (λ [(Ptr GLFWwindow)] ()) "glfwMaximizeWindow") (register show-window (λ [(Ptr GLFWwindow)] ()) "glfwShowWindow") (register hide-window (λ [(Ptr GLFWwindow)] ()) "glfwHideWindow") (register focus-window (λ [(Ptr GLFWwindow)] ()) "glfwFocusWindow") (register get-window-monitor (λ [(Ptr GLFWwindow)] (Ptr GLFWmonitor)) "glfwGetWindowMonitor") (register set-window-monitor (λ [(Ptr GLFWwindow) (Ptr GLFWmonitor) Int Int Int Int Int] ()) "glfwSetWindowMonitor") (register get-window-attrib (λ [(Ptr GLFWwindow) Int] Int) "glfwGetWindowAttrib") (register set-window-user-pointer (λ [(Ptr GLFWwindow) (Ptr ())] ()) "glfwSetWindowUserPointer") (register get-window-user-pointer (λ [(Ptr GLFWwindow)] (Ptr ())) "glfwGetWindowUserPointer") (register set-window-pos-callback (λ [(Ptr GLFWwindow) GLFWwindowposfun] GLFWwindowposfun) "glfwSetWindowPosCallback") (register set-window-size-callback (λ [(Ptr GLFWwindow) GLFWwindowsizefun] GLFWwindowsizefun) "glfwSetWindowSizeCallback") (register set-window-close-callback (λ [(Ptr GLFWwindow) GLFWwindowclosefun] GLFWwindowclosefun) "glfwSetWindowCloseCallback") (register set-window-refresh-callback (λ [(Ptr GLFWwindow) GLFWwindowrefreshfun] GLFWwindowrefreshfun) "glfwSetWindowRefreshCallback") (register set-window-focus-callback (λ [(Ptr GLFWwindow) GLFWwindowfocusfun] GLFWwindowfocusfun) "glfwSetWindowFocusCallback") (register set-window-iconify-callback (λ [(Ptr GLFWwindow) GLFWwindowiconifyfun] GLFWwindowiconifyfun) "glfwSetWindowIconifyCallback") (register set-framebuffer-size-callback (λ [(Ptr GLFWwindow) GLFWframebuffersizefun] GLFWframebuffersizefun) "glfwSetFramebufferSizeCallback") (register poll-events (λ [] ()) "glfwPollEvents") (register wait-events (λ [] ()) "glfwWaitEvents") (register wait-events-timeout (λ [Double] ()) "glfwWaitEventsTimeout") (register post-empty-event (λ [] ()) "glfwPostEmptyEvent") (register get-input-mode (λ [(Ptr GLFWwindow) Int] Int) "glfwGetInputMode") (register set-input-mode (λ [(Ptr GLFWwindow) Int Int] ()) "glfwSetInputMode") (register get-key (λ [(Ptr GLFWwindow) Int] Int) "glfwGetKey") (register get-mouse-button (λ [(Ptr GLFWwindow) Int] Int) "glfwGetMouseButton") (register get-cursor-pos (λ [(Ptr GLFWwindow) (Ptr Double) (Ptr Double)] ()) "glfwGetCursorPos") (register set-cursor-pos (λ [(Ptr GLFWwindow) Double Double] ()) "glfwSetCursorPos") (register create-cursor (λ [(Ptr GLFWimage) Int Int] (Ptr GLFWcursor)) "glfwCreateCursor") (register create-standard-cursor (λ [Int] (Ptr GLFWcursor)) "glfwCreateStandardCursor") (register destroy-cursor (λ [(Ptr GLFWcursor)] ()) "glfwDestroyCursor") (register set-cursor (λ [(Ptr GLFWwindow) (Ptr GLFWcursor)] ()) "glfwSetCursor") (register set-key-callback (λ [(Ptr GLFWwindow) GLFWkeyfun] GLFWkeyfun) "glfwSetKeyCallback") (register set-char-callback (λ [(Ptr GLFWwindow) GLFWcharfun] GLFWcharfun) "glfwSetCharCallback") (register set-char-mods-callback (λ [(Ptr GLFWwindow) GLFWcharmodsfun] GLFWcharmodsfun) "glfwSetCharModsCallback") (register set-mouse-button-callback (λ [(Ptr GLFWwindow) GLFWmousebuttonfun] GLFWmousebuttonfun) "glfwSetMouseButtonCallback") (register set-cursor-pos-callback (λ [(Ptr GLFWwindow) GLFWcursorposfun] GLFWcursorposfun) "glfwSetCursorPosCallback") (register set-cursor-enter-callback (λ [(Ptr GLFWwindow) GLFWcursorenterfun] GLFWcursorenterfun) "glfwSetCursorEnterCallback") (register set-scroll-callback (λ [(Ptr GLFWwindow) GLFWscrollfun] GLFWscrollfun) "glfwSetScrollCallback") (register set-drop-callback (λ [(Ptr GLFWwindow) GLFWdropfun] GLFWdropfun) "glfwSetDropCallback") (register joystick-present (λ [Int] Int) "glfwJoystickPresent") (register set-joystick-callback (λ [GLFWjoystickfun] GLFWjoystickfun) "glfwSetJoystickCallback") (register set-clipboard-string (λ [(Ptr GLFWwindow) (Ptr Char)] ()) "glfwSetClipboardString") (register get-time (λ [] Double) "glfwGetTime") (register set-time (λ [Double] ()) "glfwSetTime") (register get-timer-value (λ [] uint64_t) "glfwGetTimerValue") (register get-timer-frequency (λ [] uint64_t) "glfwGetTimerFrequency") (register make-context-current (λ [(Ptr GLFWwindow)] ()) "glfwMakeContextCurrent") (register get-current-context (λ [] (Ptr GLFWwindow)) "glfwGetCurrentContext") (register swap-buffers (λ [(Ptr GLFWwindow)] ()) "glfwSwapBuffers") (register swap-interval (λ [Int] ()) "glfwSwapInterval") (register extension-supported (λ [(Ptr Char)] Int) "glfwExtensionSupported") (register get-proc-address (λ [(Ptr Char)] GLFWglproc) "glfwGetProcAddress") (register vulkan-supported (λ [] Int) "glfwVulkanSupported") (register get-instance-proc-address (λ [VkInstance (Ptr Char)] GLFWvkproc) "glfwGetInstanceProcAddress") (register get-physical-device-presentation-support (λ [VkInstance VkPhysicalDevice uint32_t] Int) "glfwGetPhysicalDevicePresentationSupport") (register create-window-surface (λ [VkInstance (Ptr GLFWwindow) (Ptr VkAllocationCallbacks) (Ptr VkSurfaceKHR)] VkResult) "glfwCreateWindowSurface") )