38 lines
962 B
Swift

//
// FourCharCode.swift
// RSCore
//
// Created by Olof Hellman on 1/7/18.
// Copyright © 2018 Olof Hellman. All rights reserved.
//
import Foundation
public extension String {
/// Converts a string to a `FourCharCode`.
///
/// `FourCharCode` values like `OSType`, `DescType` or `AEKeyword` are really just
/// 4-byte values commonly represented as values like `'odoc'` where each byte is
/// represented as its ASCII character. This property turns a Swift string into
/// its `FourCharCode` equivalent, as Swift doesn't recognize `FourCharCode` types
/// natively just yet. With this extension, one can use `"odoc".fourCharCode`
/// where one would really want to use `'odoc'`.
var fourCharCode: FourCharCode {
precondition(count == 4)
var sum: UInt32 = 0
for scalar in self.unicodeScalars {
sum = (sum * 256) + scalar.value
}
return sum
}
}
public extension Int {
var fourCharCode: FourCharCode {
return UInt32(self)
}
}