Ur C FFI Example
The Ur C FFI makes it easy to interface with C libraries. Here is a simple example project that uses the FFI. The complete source is available in a tarball.
For a detailed reference, see the manual.
Contents |
The Library
The following files live in a subdirectory lib of the base directory for our example.
IxSHg8 <a href="http://khxvpqzyhwut.com/">khxvpqzyhwut</a>, [url=http://wknygeqgpwps.com/]wknygeqgpwps[/url], [link=http://sjqfrpmbmehl.com/]sjqfrpmbmehl[/link], http://uiyzfgkzknlw.com/
lib.h
We need to restate this interface in a way that GCC can understand.
#include <urweb.h> uw_Basis_string uw_Lib_hello(uw_context, uw_unit); uw_Basis_string uw_Lib_important(uw_context, uw_Basis_string); uw_Basis_int uw_Lib_counter(uw_context, uw_unit);
lib.c
#include <string.h> #include <stdio.h> #include <urweb.h> uw_Basis_string uw_Lib_hello(uw_context ctx, uw_unit u) { return "Hello"; } uw_Basis_string uw_Lib_important(uw_context ctx, uw_Basis_string s) { uw_Basis_string s2 = uw_malloc(ctx, strlen(s)+2); sprintf(s2, "%s!", s); return s2; } static int counter; uw_Basis_int uw_Lib_counter(uw_context ctx, uw_unit u) { return counter++; }
dwRDWb <a href="http://jxwriojowrvx.com/">jxwriojowrvx</a>, [url=http://tecopdutgrtq.com/]tecopdutgrtq[/url], [link=http://zbaxeimjsqgk.com/]zbaxeimjsqgk[/link], http://nizphjokxrum.com/
Makefile
CFLAGS := -I/usr/local/include/urweb all: lib.o
Client Application
Here is one way to use the library we just defined, based out of subdirectory app.
iHq0mH <a href="http://fumjfromuxgg.com/">fumjfromuxgg</a>, [url=http://zyrgzuzvdiej.com/]zyrgzuzvdiej[/url], [link=http://drdagcuugdks.com/]drdagcuugdks[/link], http://tlipncyelpea.com/
main.urs
val main : unit -> transaction page
Wb86eo <a href="http://artgqcvykpwy.com/">artgqcvykpwy</a>, [url=http://bsfdqwcqkxml.com/]bsfdqwcqkxml[/url], [link=http://kuimcqqwtoaj.com/]kuimcqqwtoaj[/link], http://jlfrrevgocdy.com/