pointer to enum type pasted by retroj on Thu Apr 26 22:09:34 2012
(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 (foreign-lambda void garmonbozia (c-pointer some-enum))) ;;(foreign-code "some_enum* a; garmonbozia(a);")
solution? added by retroj on Thu Apr 26 22:48:47 2012
(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);")