Files
swift-inotify/Sources/Inotify/InotifyEventMask.swift
T. R. Bernstein d57f998fd4 Use C integer types
Instead of using hardcoded fixed width integers, use C integer types.
As the actual integer size of C depends on the implementation, even if
it is often 32bit, we use the C integer types to guard against cases,
where that is not the case.
2026-03-12 00:32:14 +01:00

48 lines
2.3 KiB
Swift

import CInotify
public struct InotifyEventMask: OptionSet, Sendable, Hashable {
public let rawValue: CUnsignedInt
public init(rawValue: UInt32) {
self.rawValue = rawValue
}
// MARK: - Watchable Events
public static let access = InotifyEventMask(rawValue: CUnsignedInt(IN_ACCESS))
public static let attrib = InotifyEventMask(rawValue: CUnsignedInt(IN_ATTRIB))
public static let closeWrite = InotifyEventMask(rawValue: CUnsignedInt(IN_CLOSE_WRITE))
public static let closeNoWrite = InotifyEventMask(rawValue: CUnsignedInt(IN_CLOSE_NOWRITE))
public static let create = InotifyEventMask(rawValue: CUnsignedInt(IN_CREATE))
public static let delete = InotifyEventMask(rawValue: CUnsignedInt(IN_DELETE))
public static let deleteSelf = InotifyEventMask(rawValue: CUnsignedInt(IN_DELETE_SELF))
public static let modify = InotifyEventMask(rawValue: CUnsignedInt(IN_MODIFY))
public static let moveSelf = InotifyEventMask(rawValue: CUnsignedInt(IN_MOVE_SELF))
public static let movedFrom = InotifyEventMask(rawValue: CUnsignedInt(IN_MOVED_FROM))
public static let movedTo = InotifyEventMask(rawValue: CUnsignedInt(IN_MOVED_TO))
public static let open = InotifyEventMask(rawValue: CUnsignedInt(IN_OPEN))
// MARK: - Combinations
public static let move: InotifyEventMask = [.movedFrom, .movedTo]
public static let close: InotifyEventMask = [.closeWrite, .closeNoWrite]
public static let allEvents: InotifyEventMask = [
.access, .attrib, .closeWrite, .closeNoWrite,
.create, .delete, .deleteSelf, .modify,
.moveSelf, .movedFrom, .movedTo, .open
]
// MARK: - Watch Flags
public static let dontFollow = InotifyEventMask(rawValue: CUnsignedInt(IN_DONT_FOLLOW))
public static let onlyDir = InotifyEventMask(rawValue: CUnsignedInt(IN_ONLYDIR))
public static let oneShot = InotifyEventMask(rawValue: CUnsignedInt(IN_ONESHOT))
// MARK: - Kernel-Only Flags
public static let isDir = InotifyEventMask(rawValue: CUnsignedInt(IN_ISDIR))
public static let ignored = InotifyEventMask(rawValue: CUnsignedInt(IN_IGNORED))
public static let queueOverflow = InotifyEventMask(rawValue: CUnsignedInt(IN_Q_OVERFLOW))
public static let unmount = InotifyEventMask(rawValue: CUnsignedInt(IN_UNMOUNT))
}