| #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 FSEventStreamSetDispatchQueue(FSEventStreamRef stream, dispatch_queue_t q); |
| unsigned char FSEventStreamStart(FSEventStreamRef stream); |
| void FSEventStreamStop(FSEventStreamRef stream); |
| void FSEventStreamInvalidate(FSEventStreamRef stream); |
| void FSEventStreamRelease(FSEventStreamRef stream); |
| |
| #endif /* !clang */ |
| #endif /* FSM_DARWIN_GCC_H */ |