The FFI Reference Manual a Foreign Function Interface (Version 1.0) for MIT/GNU Scheme Version 9.0.1 2018-06-10
The FFI Reference Manual a Foreign Function Interface (version 1.0) for MIT/GNU Scheme version 9.0.1 2018-06-10 by Matt Birkholz i Table of Contents 1 Introduction ::::::::::::::::::::::::::::::::::::: 2 2 C Declarations ::::::::::::::::::::::::::::::::::: 6 3 Alien Data ::::::::::::::::::::::::::::::::::::::: 7 4 Alien Functions :::::::::::::::::::::::::::::::::: 8 5 Callbacks ::::::::::::::::::::::::::::::::::::::::: 9 6 Compiling and Linking :::::::::::::::::::::::: 10 7 Hello World :::::::::::::::::::::::::::::::::::: 12 Appendix A GNU Free Documentation License :: 16 A.1 ADDENDUM: How to use this License for your documents :::: 22 1 This manual documents FFI 1.0. Copyright c 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Massachusetts Institute of Technology Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts and no Back-Cover Texts. A copy of the license is included in the section entitled \GNU Free Documentation License." 2 1 Introduction This FFI provides Scheme syntax for calling C functions and accessing C data. The func- tions and data structures are declared in a case sensitive .cdecl file, which is used by a shim generator to produce callout and callback trampoline functions. The trampolines are com- piled and linked to the C toolkit, producing a shared object that Scheme can dynamically load. Synopsis Examples of the new syntax: (C-include "prhello") (malloc (C-sizeof "GdkEvent")) ) #[alien 42 0x081afc60] (C->= #@42 "GdkEvent any type" 14) (C-> #@42 "GdkEvent any type") ) 14 (C-enum "GdkEventType" 14) ) |GDK_MAP| (C-enum "GDK_MAP") ) 14 (C-sizeof "GdkColor") ) 12 (C-offset "GdkColor blue") ) 8 (C-array-loc #@43 "GdkColor" (C-enum "GTK_STATE_NORMAL")) ) #[alien 44 0x081afc60] ; New alien.
[Show full text]