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);")