blob: 8a3eca28218e6f8b680cfcfc0dc524d5e7f5dabd [file] [log] [blame]
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2016 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See http://swift.org/LICENSE.txt for license information
// See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
import CoreFoundation
#if os(OSX) || os(iOS)
let kCFCharacterSetControl = CFCharacterSetPredefinedSet.control
let kCFCharacterSetWhitespace = CFCharacterSetPredefinedSet.whitespace
let kCFCharacterSetWhitespaceAndNewline = CFCharacterSetPredefinedSet.whitespaceAndNewline
let kCFCharacterSetDecimalDigit = CFCharacterSetPredefinedSet.decimalDigit
let kCFCharacterSetLetter = CFCharacterSetPredefinedSet.letter
let kCFCharacterSetLowercaseLetter = CFCharacterSetPredefinedSet.lowercaseLetter
let kCFCharacterSetUppercaseLetter = CFCharacterSetPredefinedSet.uppercaseLetter
let kCFCharacterSetNonBase = CFCharacterSetPredefinedSet.nonBase
let kCFCharacterSetDecomposable = CFCharacterSetPredefinedSet.decomposable
let kCFCharacterSetAlphaNumeric = CFCharacterSetPredefinedSet.alphaNumeric
let kCFCharacterSetPunctuation = CFCharacterSetPredefinedSet.punctuation
let kCFCharacterSetCapitalizedLetter = CFCharacterSetPredefinedSet.capitalizedLetter
let kCFCharacterSetSymbol = CFCharacterSetPredefinedSet.symbol
let kCFCharacterSetNewline = CFCharacterSetPredefinedSet.newline
let kCFCharacterSetIllegal = CFCharacterSetPredefinedSet.illegal
#endif
public class NSCharacterSet : NSObject, NSCopying, NSMutableCopying, NSCoding {
typealias CFType = CFCharacterSet
private var _base = _CFInfo(typeID: CFCharacterSetGetTypeID())
private var _hashValue = CFHashCode(0)
private var _buffer: UnsafeMutablePointer<Void>? = nil
private var _length = CFIndex(0)
private var _annex: UnsafeMutablePointer<Void>? = nil
internal var _cfObject: CFType {
return unsafeBitCast(self, to: CFType.self)
}
internal var _cfMutableObject: CFMutableCharacterSet {
return unsafeBitCast(self, to: CFMutableCharacterSet.self)
}
public override var hash: Int {
return Int(bitPattern: CFHash(_cfObject))
}
public override func isEqual(_ object: AnyObject?) -> Bool {
if let cs = object as? NSCharacterSet {
return CFEqual(_cfObject, cs._cfObject)
} else {
return false
}
}
public override var description: String {
return CFCopyDescription(_cfObject)._swiftObject
}
deinit {
_CFDeinit(self)
}
public class func controlCharacters() -> NSCharacterSet {
return CFCharacterSetGetPredefined(kCFCharacterSetControl)._nsObject
}
public class func whitespaces() -> NSCharacterSet {
return CFCharacterSetGetPredefined(kCFCharacterSetWhitespace)._nsObject
}
public class func whitespacesAndNewlines() -> NSCharacterSet {
return CFCharacterSetGetPredefined(kCFCharacterSetWhitespaceAndNewline)._nsObject
}
public class func decimalDigits() -> NSCharacterSet {
return CFCharacterSetGetPredefined(kCFCharacterSetDecimalDigit)._nsObject
}
public class func letters() -> NSCharacterSet {
return CFCharacterSetGetPredefined(kCFCharacterSetLetter)._nsObject
}
public class func lowercaseLetters() -> NSCharacterSet {
return CFCharacterSetGetPredefined(kCFCharacterSetLowercaseLetter)._nsObject
}
public class func uppercaseLetters() -> NSCharacterSet {
return CFCharacterSetGetPredefined(kCFCharacterSetUppercaseLetter)._nsObject
}
public class func nonBaseCharacters() -> NSCharacterSet {
return CFCharacterSetGetPredefined(kCFCharacterSetNonBase)._nsObject
}
public class func alphanumerics() -> NSCharacterSet {
return CFCharacterSetGetPredefined(kCFCharacterSetAlphaNumeric)._nsObject
}
public class func decomposables() -> NSCharacterSet {
return CFCharacterSetGetPredefined(kCFCharacterSetDecomposable)._nsObject
}
public class func illegalCharacters() -> NSCharacterSet {
return CFCharacterSetGetPredefined(kCFCharacterSetIllegal)._nsObject
}
public class func punctuation() -> NSCharacterSet {
return CFCharacterSetGetPredefined(kCFCharacterSetPunctuation)._nsObject
}
public class func capitalizedLetters() -> NSCharacterSet {
return CFCharacterSetGetPredefined(kCFCharacterSetCapitalizedLetter)._nsObject
}
public class func symbols() -> NSCharacterSet {
return CFCharacterSetGetPredefined(kCFCharacterSetSymbol)._nsObject
}
public class func newlines() -> NSCharacterSet {
return CFCharacterSetGetPredefined(kCFCharacterSetNewline)._nsObject
}
public init(range aRange: NSRange) {
super.init()
_CFCharacterSetInitWithCharactersInRange(_cfMutableObject, CFRangeMake(aRange.location, aRange.length))
}
public init(charactersIn aString: String) {
super.init()
_CFCharacterSetInitWithCharactersInString(_cfMutableObject, aString._cfObject)
}
public init(bitmapRepresentation data: NSData) {
super.init()
_CFCharacterSetInitWithBitmapRepresentation(_cfMutableObject, data._cfObject)
}
public convenience init?(contentsOfFile fName: String) {
if let data = NSData(contentsOfFile: fName) {
self.init(bitmapRepresentation: data)
} else {
return nil
}
}
public convenience required init(coder aDecoder: NSCoder) {
self.init(charactersIn: "")
}
public func characterIsMember(_ aCharacter: unichar) -> Bool {
return CFCharacterSetIsCharacterMember(_cfObject, UniChar(aCharacter))
}
public var bitmapRepresentation: NSData {
return CFCharacterSetCreateBitmapRepresentation(kCFAllocatorSystemDefault, _cfObject)._nsObject
}
public var inverted: NSCharacterSet {
return CFCharacterSetCreateInvertedSet(kCFAllocatorSystemDefault, _cfObject)._nsObject
}
public func longCharacterIsMember(_ theLongChar: UTF32Char) -> Bool {
return CFCharacterSetIsLongCharacterMember(_cfObject, theLongChar)
}
public func isSuperset(of theOtherSet: NSCharacterSet) -> Bool {
return CFCharacterSetIsSupersetOfSet(_cfObject, theOtherSet._cfObject)
}
public func hasMemberInPlane(_ thePlane: UInt8) -> Bool {
return CFCharacterSetHasMemberInPlane(_cfObject, CFIndex(thePlane))
}
public override func copy() -> AnyObject {
return copyWithZone(nil)
}
public func copyWithZone(_ zone: NSZone) -> AnyObject {
return CFCharacterSetCreateCopy(kCFAllocatorSystemDefault, self._cfObject)
}
public override func mutableCopy() -> AnyObject {
return mutableCopyWithZone(nil)
}
public func mutableCopyWithZone(_ zone: NSZone) -> AnyObject {
return CFCharacterSetCreateMutableCopy(kCFAllocatorSystemDefault, _cfObject)._nsObject
}
public func encodeWithCoder(_ aCoder: NSCoder) {
}
}
public class NSMutableCharacterSet : NSCharacterSet {
public convenience required init(coder aDecoder: NSCoder) {
NSUnimplemented()
}
public func addCharacters(in aRange: NSRange) {
CFCharacterSetAddCharactersInRange(_cfMutableObject , CFRangeMake(aRange.location, aRange.length))
}
public func removeCharacters(in aRange: NSRange) {
CFCharacterSetRemoveCharactersInRange(_cfMutableObject , CFRangeMake(aRange.location, aRange.length))
}
public func addCharacters(in aString: String) {
CFCharacterSetAddCharactersInString(_cfMutableObject, aString._cfObject)
}
public func removeCharacters(in aString: String) {
CFCharacterSetRemoveCharactersInString(_cfMutableObject, aString._cfObject)
}
public func formUnion(with otherSet: NSCharacterSet) {
CFCharacterSetUnion(_cfMutableObject, otherSet._cfObject)
}
public func formIntersection(with otherSet: NSCharacterSet) {
CFCharacterSetIntersect(_cfMutableObject, otherSet._cfObject)
}
public func invert() {
CFCharacterSetInvert(_cfMutableObject)
}
public override class func controlCharacters() -> NSMutableCharacterSet {
return NSCharacterSet.controlCharacters().mutableCopy() as! NSMutableCharacterSet
}
public override class func whitespaces() -> NSMutableCharacterSet {
return NSCharacterSet.whitespaces().mutableCopy() as! NSMutableCharacterSet
}
public override class func whitespacesAndNewlines() -> NSMutableCharacterSet {
return NSCharacterSet.whitespacesAndNewlines().mutableCopy() as! NSMutableCharacterSet
}
public override class func decimalDigits() -> NSMutableCharacterSet {
return NSCharacterSet.decimalDigits().mutableCopy() as! NSMutableCharacterSet
}
public override class func letters() -> NSMutableCharacterSet {
return NSCharacterSet.letters().mutableCopy() as! NSMutableCharacterSet
}
public override class func lowercaseLetters() -> NSMutableCharacterSet {
return NSCharacterSet.lowercaseLetters().mutableCopy() as! NSMutableCharacterSet
}
public override class func uppercaseLetters() -> NSMutableCharacterSet {
return NSCharacterSet.uppercaseLetters().mutableCopy() as! NSMutableCharacterSet
}
public override class func nonBaseCharacters() -> NSMutableCharacterSet {
return NSCharacterSet.nonBaseCharacters().mutableCopy() as! NSMutableCharacterSet
}
public override class func alphanumerics() -> NSMutableCharacterSet {
return NSCharacterSet.alphanumerics().mutableCopy() as! NSMutableCharacterSet
}
public override class func decomposables() -> NSMutableCharacterSet {
return NSCharacterSet.decomposables().mutableCopy() as! NSMutableCharacterSet
}
public override class func illegalCharacters() -> NSMutableCharacterSet {
return NSCharacterSet.illegalCharacters().mutableCopy() as! NSMutableCharacterSet
}
public override class func punctuation() -> NSMutableCharacterSet {
return NSCharacterSet.punctuation().mutableCopy() as! NSMutableCharacterSet
}
public override class func capitalizedLetters() -> NSMutableCharacterSet {
return NSCharacterSet.capitalizedLetters().mutableCopy() as! NSMutableCharacterSet
}
public override class func symbols() -> NSMutableCharacterSet {
return NSCharacterSet.symbols().mutableCopy() as! NSMutableCharacterSet
}
public override class func newlines() -> NSMutableCharacterSet {
return NSCharacterSet.newlines().mutableCopy() as! NSMutableCharacterSet
}
}
extension CFCharacterSet : _NSBridgable {
typealias NSType = NSCharacterSet
internal var _nsObject: NSType {
return unsafeBitCast(self, to: NSType.self)
}
}