// // NdbTagIterators.swift // damus // // Created by William Casarin on 2023-07-21. // import Foundation struct TagSequence: Sequence { let note: UnsafeMutablePointer let tag: UnsafeMutablePointer func makeIterator() -> TagIterator { return TagIterator(note: note, tag: tag) } } struct TagIterator: IteratorProtocol { typealias Element = NdbTagElem mutating func next() -> NdbTagElem? { guard index < tag.pointee.count else { return nil } let el = NdbTagElem(note: note, tag: tag, index: index) index += 1 return el } var index: Int32 let note: UnsafeMutablePointer var tag: UnsafeMutablePointer init(note: UnsafeMutablePointer, tag: UnsafeMutablePointer) { self.note = note self.tag = tag self.index = 0 } } func ndb_maybe_pointee(_ p: UnsafeMutablePointer!) -> T? { guard p != nil else { return nil } return p.pointee }