Skip to content

Commit

Permalink
Styling of recently added stuff
Browse files Browse the repository at this point in the history
  • Loading branch information
yglukhov committed Jan 17, 2025
1 parent e900969 commit 63a4c09
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 51 deletions.
13 changes: 8 additions & 5 deletions darwin/core_foundation/cfrunloop.nim
Original file line number Diff line number Diff line change
@@ -1,16 +1,19 @@
import cfbase

type
CFRunLoop* = ptr object of CFString
CFRunLoop* = ptr object of CFObject
CFRunLoopMode* = ptr object of CFString

const
kCFRunLoopRunTimedOut* = 3
CFRunLoopRunResult* {.size: sizeof(int32).} = enum
kCFRunLoopRunFinished = 1
kCFRunLoopRunStopped = 2
kCFRunLoopRunTimedOut = 3
kCFRunLoopRunHandledSource = 4

let
kCFRunLoopDefaultMode* {.importc, extern: "kCFRunLoopDefaultMode".}: CFRunLoopMode
kCFRunLoopCommonModes* {.importc, extern: "kCFRunLoopCommonModes".}: CFRunLoopMode

proc CFRunLoopGetCurrent*(): CFRunLoop {.importc.}
proc CFRunLoopRunInMode*(mode: CFRunLoopMode, seconds: CFTimeInterval, returnAfterSourceHandled: bool): cint {.importc.}
proc CFRunLoopStop*(loop: CFRunLoop) {.importc.}
proc runInMode*(mode: CFRunLoopMode, seconds: CFTimeInterval, returnAfterSourceHandled: bool): CFRunLoopRunResult {.importc: "CFRunLoopRunInMode".}
proc stop*(loop: CFRunLoop) {.importc: "CFRunLoopStop".}
61 changes: 15 additions & 46 deletions darwin/core_services/fsstream.nim
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@

import darwin / core_foundation / [cfbase, cfarray, cfrunloop]
import ../core_foundation/[cfbase, cfarray, cfrunloop]

type
FSEventStream* = distinct pointer
FSEventStream* = ptr object
FSEventStreamEventId* = distinct culonglong

FSEventStreamCreateFlags* = distinct cuint
Expand Down Expand Up @@ -50,6 +49,10 @@ type
release*: pointer
copyDescription*: pointer

FSEventStreamCallback* = proc (streamRef: FSEventStream, clientCallBackInfo: pointer, numEvents: csize_t,
eventPaths: pointer, eventFlags: ptr FSEventStreamEventFlags,
eventIds: ptr FSEventStreamEventId) {.cdecl.}

const
kFSEventStreamEventIdSinceNow* = 0xFFFFFFFFFFFFFFFF'u64

Expand All @@ -59,58 +62,24 @@ const
# FSEvents Functions
proc FSEventStreamCreate*(
allocator: CFAllocator,
callback: proc (
streamRef: FSEventStream,
clientCallBackInfo: pointer,
numEvents: csize_t,
eventPaths: pointer,
eventFlags: ptr FSEventStreamEventFlags,
eventIds: ptr FSEventStreamEventId,
) {.cdecl.},
callback: FSEventStreamCallback,
context: ptr FSEventStreamContext,
pathsToWatch: CFArray,
pathsToWatch: CFArray[CFString],
sinceWhen: FSEventStreamEventId,
latency: CFTimeInterval,
flags: FSEventStreamCreateFlags
): FSEventStream {.importc.} ## Function to create FSStreams
## Note that `ptr FSEventStreamEventFlags` is actually a
## `set[FSEventStreamEventFlag]`, but I left them raw

proc FSEventStreamScheduleWithRunLoop*(
proc scheduleWithRunLoop*(
streamRef: FSEventStream,
runLoop: CFRunLoop,
runLoopMode: CFRunLoopMode
) {.importc.}

proc FSEventStreamStart*(streamRef: FSEventStream): bool {.importc.}
proc FSEventStreamStop*(streamRef: FSEventStream) {.importc.}
proc FSEventStreamInvalidate*(streamRef: FSEventStream) {.importc.}
proc FSEventStreamRelease*(streamRef: FSEventStream) {.importc.}

proc createBasicDefaultCFAllocator*(): CFAllocator =
## creates a simple alloctor using Nim's standard allocators
proc dmonCfMalloc(allocSize: CFIndex, hint: CFOptionFlags, info: pointer): pointer {.cdecl.} =
result = allocShared0(allocSize.csize_t)

proc dmonCfFree(pt: pointer, info: pointer) {.cdecl.} =
if pt != nil:
deallocShared(pt)

proc dmonCfRealloc(pt: pointer, newsize: CFIndex, hint: CFOptionFlags,
info: pointer): pointer {.cdecl.} =
result = reallocShared(pt, newsize.csize_t)

var ctx = CFAllocatorContext(
version: 0,
info: nil,
retain: nil,
release: nil,
copyDescription: nil,
allocate: dmonCfMalloc,
reallocate: dmonCfRealloc,
deallocate: dmonCfFree,
preferredSize: nil
)

result = CFAllocatorCreate(nil.CFAllocator, ctx)
) {.importc: "FSEventStreamScheduleWithRunLoop", deprecated: "use setDispatchQueue instead".}

proc start*(streamRef: FSEventStream): bool {.importc: "FSEventStreamStart".}
proc stop*(streamRef: FSEventStream) {.importc: "FSEventStreamStop".}
proc invalidate*(streamRef: FSEventStream) {.importc: "FSEventStreamInvalidate".}
proc retain*(streamRef: FSEventStream) {.importc: "FSEventStreamRetain".}
proc release*(streamRef: FSEventStream) {.importc: "FSEventStreamRelease".}

0 comments on commit 63a4c09

Please sign in to comment.