(import chicken scheme foreign foreigners) #> typedef enum { Val1, Val2, Val3 } some_enum; void garmonbozia (some_enum * x) { printf("give me back my garmonbozia!\n"); } <# (define-foreign-type some-enum int) (define (garmonbozia) (define internal (foreign-lambda* void (((c-pointer int) a)) "garmonbozia((some_enum *) a);")) (let-location ((a int)) (internal (location a)))) (garmonbozia) ;;(foreign-code "some_enum* a; garmonbozia(a);")