#ifndef FSM_DARWIN_GCC_H #define FSM_DARWIN_GCC_H #ifndef __clang__ /* * It is possible to #include CoreFoundation/CoreFoundation.h when compiling * with clang, but not with GCC as of time of writing. * * See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93082 for details. */ typedef unsigned int FSEventStreamCreateFlags; #define kFSEventStreamEventFlagNone 0x00000000 #define kFSEventStreamEventFlagMustScanSubDirs 0x00000001 #define kFSEventStreamEventFlagUserDropped 0x00000002 #define kFSEventStreamEventFlagKernelDropped 0x00000004 #define kFSEventStreamEventFlagEventIdsWrapped 0x00000008 #define kFSEventStreamEventFlagHistoryDone 0x00000010 #define kFSEventStreamEventFlagRootChanged 0x00000020 #define kFSEventStreamEventFlagMount 0x00000040 #define kFSEventStreamEventFlagUnmount 0x00000080 #define kFSEventStreamEventFlagItemCreated 0x00000100 #define kFSEventStreamEventFlagItemRemoved 0x00000200 #define kFSEventStreamEventFlagItemInodeMetaMod 0x00000400 #define kFSEventStreamEventFlagItemRenamed 0x00000800 #define kFSEventStreamEventFlagItemModified 0x00001000 #define kFSEventStreamEventFlagItemFinderInfoMod 0x00002000 #define kFSEventStreamEventFlagItemChangeOwner 0x00004000 #define kFSEventStreamEventFlagItemXattrMod 0x00008000 #define kFSEventStreamEventFlagItemIsFile 0x00010000 #define kFSEventStreamEventFlagItemIsDir 0x00020000 #define kFSEventStreamEventFlagItemIsSymlink 0x00040000 #define kFSEventStreamEventFlagOwnEvent 0x00080000 #define kFSEventStreamEventFlagItemIsHardlink 0x00100000 #define kFSEventStreamEventFlagItemIsLastHardlink 0x00200000 #define kFSEventStreamEventFlagItemCloned 0x00400000 typedef struct __FSEventStream *FSEventStreamRef; typedef const FSEventStreamRef ConstFSEventStreamRef; typedef unsigned int CFStringEncoding; #define kCFStringEncodingUTF8 0x08000100 typedef const struct __CFString *CFStringRef; typedef const struct __CFArray *CFArrayRef; typedef const struct __CFRunLoop *CFRunLoopRef; struct FSEventStreamContext { long long version; void *cb_data, *retain, *release, *copy_description; }; typedef struct FSEventStreamContext FSEventStreamContext; typedef unsigned int FSEventStreamEventFlags; #define kFSEventStreamCreateFlagNoDefer 0x02 #define kFSEventStreamCreateFlagWatchRoot 0x04 #define kFSEventStreamCreateFlagFileEvents 0x10 typedef unsigned long long FSEventStreamEventId; #define kFSEventStreamEventIdSinceNow 0xFFFFFFFFFFFFFFFFULL typedef void (*FSEventStreamCallback)(ConstFSEventStreamRef streamRef, void *context, __SIZE_TYPE__ num_of_events, void *event_paths, const FSEventStreamEventFlags event_flags[], const FSEventStreamEventId event_ids[]); typedef double CFTimeInterval; FSEventStreamRef FSEventStreamCreate(void *allocator, FSEventStreamCallback callback, FSEventStreamContext *context, CFArrayRef paths_to_watch, FSEventStreamEventId since_when, CFTimeInterval latency, FSEventStreamCreateFlags flags); CFStringRef CFStringCreateWithCString(void *allocator, const char *string, CFStringEncoding encoding); CFArrayRef CFArrayCreate(void *allocator, const void **items, long long count, void *callbacks); void CFRunLoopRun(void); void CFRunLoopStop(CFRunLoopRef run_loop); CFRunLoopRef CFRunLoopGetCurrent(void); extern CFStringRef kCFRunLoopDefaultMode; void FSEventStreamScheduleWithRunLoop(FSEventStreamRef stream, CFRunLoopRef run_loop, CFStringRef run_loop_mode); unsigned char FSEventStreamStart(FSEventStreamRef stream); void FSEventStreamStop(FSEventStreamRef stream); void FSEventStreamInvalidate(FSEventStreamRef stream); void FSEventStreamRelease(FSEventStreamRef stream); #endif /* !clang */ #endif /* FSM_DARWIN_GCC_H */