foreign type added by khepin on Tue Aug 14 23:58:06 2018

(use posix)
(import foreign)
#>
#include <CoreServices/CoreServices.h>
#include <sys/stat.h>

static CFArrayRef ArrayCreateMutable(int len) {
  return CFArrayCreateMutable(NULL, len, &kCFTypeArrayCallBacks);
}

extern void fsevtCallback(FSEventStreamRef p0, void * info, size_t p1, char** p2, FSEventStreamEventFlags* p3, FSEventStreamEventId* p4);

static FSEventStreamRef EventStreamCreateRelativeToDevice(FSEventStreamContext * context, dev_t dev, CFArrayRef paths, FSEventStreamEventId since, CFTimeInterval latency, FSEventStreamCreateFlags flags) {
  return FSEventStreamCreateRelativeToDevice(NULL, (FSEventStreamCallback) fsevtCallback, context, dev, paths, since, latency, flags);
}

static FSEventStreamRef EventStreamCreate(FSEventStreamContext * context, CFArrayRef paths, FSEventStreamEventId since, CFTimeInterval latency, FSEventStreamCreateFlags flags) {
  return FSEventStreamCreate(NULL, (FSEventStreamCallback) fsevtCallback, context, paths, since, latency, flags);
}
<#

(define (absolute-path relpath #!key (relative-to (current-directory)))
  (when (not (absolute-pathname? relpath))
    (normalize-pathname (make-absolute-pathname relative-to relpath))))

(define (displayln string)
  (display string)
  (newline))

(define path (absolute-path "./"))

(define-foreign-type array-ref CFArrayRef)
(define-foreign-variable x array-ref)

(define blah (foreign-lambda array-ref ArrayCreateMutable int))

(displayln path)