;; compile with: ;; ;; csc -O2 -d0 -c++ bind-typedef-enum.scm -C "-Wno-write-strings" (import chicken scheme foreign) (use (srfi 1) extras foreigners) #> typedef enum { Foo, Bar, Baz, Quux } MetasyntacticVariable; int a_function (MetasyntacticVariable v) { return 0; } int a_function (void* p) { return 1; } <# (define-foreign-enum-type (metasyntacticvariable int) (metasyntacticvariable->int int->metasyntacticvariable) (mv/foo Foo) (mv/bar Bar) (mv/baz Baz) (mv/quux Quux)) (define a_function (foreign-lambda int "a_function" metasyntacticvariable)) (pp (a_function 'mv/foo))