0001 http://www.apache.org/licenses/LICENSE-2.0
0021 #if os(OSX) || os(iOS) || os(tvOS) || os(watchOS)
0022 import Darwin
0023 import Foundation
0024 #elseif os(Linux)
0025 import Foundation
0026 import Glibc
0027 #endif
0028
0029
0031 public extension String {
0032
0033 Parameter Parameter static func fromCString(cs: UnsafePointer<CChar>, length: Int!) -> String? {
0042
0043 guard length != .None else {
0044 return String.fromCString(cs)
0045 }
0046
0047 let buflen = length + 1
0048 let buf = UnsafeMutablePointer<CChar>.alloc(buflen)
0049 memcpy(buf, cs, length)
0050 buf[length] = 0
0051 let s = String.fromCString(buf)
0052 buf.dealloc(buflen)
0053 return s
0054 }
0055
0056 Returns public func toCString() -> UnsafeMutablePointer<Int8> {
0062
0063 return strdup(self)
0064 }
0065
0066 }
0067
0068 #if os(Linux)
0069
0070
0072 func fdZero(inout set: fd_set) {
0073 set.__fds_bits = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
0074 }
0075
0076
0077
0079 func fdSet(fd: Int32, inout set: fd_set) {
0080 let intOffset = Int(fd / 16)
0081 let bitOffset: Int = Int(fd % 16)
0082 let mask: Int = 1 << bitOffset
0083 switch intOffset {
0084 case 0: set.__fds_bits.0 = set.__fds_bits.0 | mask
0085 case 1: set.__fds_bits.1 = set.__fds_bits.1 | mask
0086 case 2: set.__fds_bits.2 = set.__fds_bits.2 | mask
0087 case 3: set.__fds_bits.3 = set.__fds_bits.3 | mask
0088 case 4: set.__fds_bits.4 = set.__fds_bits.4 | mask
0089 case 5: set.__fds_bits.5 = set.__fds_bits.5 | mask
0090 case 6: set.__fds_bits.6 = set.__fds_bits.6 | mask
0091 case 7: set.__fds_bits.7 = set.__fds_bits.7 | mask
0092 case 8: set.__fds_bits.8 = set.__fds_bits.8 | mask
0093 case 9: set.__fds_bits.9 = set.__fds_bits.9 | mask
0094 case 10: set.__fds_bits.10 = set.__fds_bits.10 | mask
0095 case 11: set.__fds_bits.11 = set.__fds_bits.11 | mask
0096 case 12: set.__fds_bits.12 = set.__fds_bits.12 | mask
0097 case 13: set.__fds_bits.13 = set.__fds_bits.13 | mask
0098 case 14: set.__fds_bits.14 = set.__fds_bits.14 | mask
0099 case 15: set.__fds_bits.15 = set.__fds_bits.15 | mask
0100 default: break
0101 }
0102 }
0103
0104
0105
0107 func fdClr(fd: Int32, inout set: fd_set) {
0108 let intOffset = Int(fd / 16)
0109 let bitOffset: Int = Int(fd % 16)
0110 let mask: Int = ~(1 << bitOffset)
0111 switch intOffset {
0112 case 0: set.__fds_bits.0 = set.__fds_bits.0 & mask
0113 case 1: set.__fds_bits.1 = set.__fds_bits.1 & mask
0114 case 2: set.__fds_bits.2 = set.__fds_bits.2 & mask
0115 case 3: set.__fds_bits.3 = set.__fds_bits.3 & mask
0116 case 4: set.__fds_bits.4 = set.__fds_bits.4 & mask
0117 case 5: set.__fds_bits.5 = set.__fds_bits.5 & mask
0118 case 6: set.__fds_bits.6 = set.__fds_bits.6 & mask
0119 case 7: set.__fds_bits.7 = set.__fds_bits.7 & mask
0120 case 8: set.__fds_bits.8 = set.__fds_bits.8 & mask
0121 case 9: set.__fds_bits.9 = set.__fds_bits.9 & mask
0122 case 10: set.__fds_bits.10 = set.__fds_bits.10 & mask
0123 case 11: set.__fds_bits.11 = set.__fds_bits.11 & mask
0124 case 12: set.__fds_bits.12 = set.__fds_bits.12 & mask
0125 case 13: set.__fds_bits.13 = set.__fds_bits.13 & mask
0126 case 14: set.__fds_bits.14 = set.__fds_bits.14 & mask
0127 case 15: set.__fds_bits.15 = set.__fds_bits.15 & mask
0128 default: break
0129 }
0130 }
0131
0132
0133
0135 func fdIsSet(fd: Int32, inout set: fd_set) -> Bool {
0136 let intOffset = Int(fd / 16)
0137 let bitOffset = Int(fd % 16)
0138 let mask: Int = 1 << bitOffset
0139 switch intOffset {
0140 case 0: return set.__fds_bits.0 & mask != 0
0141 case 1: return set.__fds_bits.1 & mask != 0
0142 case 2: return set.__fds_bits.2 & mask != 0
0143 case 3: return set.__fds_bits.3 & mask != 0
0144 case 4: return set.__fds_bits.4 & mask != 0
0145 case 5: return set.__fds_bits.5 & mask != 0
0146 case 6: return set.__fds_bits.6 & mask != 0
0147 case 7: return set.__fds_bits.7 & mask != 0
0148 case 8: return set.__fds_bits.8 & mask != 0
0149 case 9: return set.__fds_bits.9 & mask != 0
0150 case 10: return set.__fds_bits.10 & mask != 0
0151 case 11: return set.__fds_bits.11 & mask != 0
0152 case 12: return set.__fds_bits.12 & mask != 0
0153 case 13: return set.__fds_bits.13 & mask != 0
0154 case 14: return set.__fds_bits.14 & mask != 0
0155 case 15: return set.__fds_bits.15 & mask != 0
0156 default: return false
0157 }
0158
0159 }
0160
0161 #else
0162
0163
0165 func fdZero| BlueSocket.swift:609 | fdZero(&readfds) |
| BlueSocket.swift:613 | fdZero(&writefds) |
(inout set: fd_set) {
0166 set.fds_bits = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
0167 }
0168
0169
0170
0172 func fdSet| BlueSocket.swift:610 | fdSet(self.socketfd, set: &readfds) |
| BlueSocket.swift:614 | fdSet(self.socketfd, set: &writefds) |
(fd: Int32, inout set: fd_set) {
0173 let intOffset = Int(fd / 32)
0174 let bitOffset = fd % 32
0175 let mask = 1 << bitOffset
0176 switch intOffset {
0177 case 0: set.fds_bits.0 = set.fds_bits.0 | mask
0178 case 1: set.fds_bits.1 = set.fds_bits.1 | mask
0179 case 2: set.fds_bits.2 = set.fds_bits.2 | mask
0180 case 3: set.fds_bits.3 = set.fds_bits.3 | mask
0181 case 4: set.fds_bits.4 = set.fds_bits.4 | mask
0182 case 5: set.fds_bits.5 = set.fds_bits.5 | mask
0183 case 6: set.fds_bits.6 = set.fds_bits.6 | mask
0184 case 7: set.fds_bits.7 = set.fds_bits.7 | mask
0185 case 8: set.fds_bits.8 = set.fds_bits.8 | mask
0186 case 9: set.fds_bits.9 = set.fds_bits.9 | mask
0187 case 10: set.fds_bits.10 = set.fds_bits.10 | mask
0188 case 11: set.fds_bits.11 = set.fds_bits.11 | mask
0189 case 12: set.fds_bits.12 = set.fds_bits.12 | mask
0190 case 13: set.fds_bits.13 = set.fds_bits.13 | mask
0191 case 14: set.fds_bits.14 = set.fds_bits.14 | mask
0192 case 15: set.fds_bits.15 = set.fds_bits.15 | mask
0193 case 16: set.fds_bits.16 = set.fds_bits.16 | mask
0194 case 17: set.fds_bits.17 = set.fds_bits.17 | mask
0195 case 18: set.fds_bits.18 = set.fds_bits.18 | mask
0196 case 19: set.fds_bits.19 = set.fds_bits.19 | mask
0197 case 20: set.fds_bits.20 = set.fds_bits.20 | mask
0198 case 21: set.fds_bits.21 = set.fds_bits.21 | mask
0199 case 22: set.fds_bits.22 = set.fds_bits.22 | mask
0200 case 23: set.fds_bits.23 = set.fds_bits.23 | mask
0201 case 24: set.fds_bits.24 = set.fds_bits.24 | mask
0202 case 25: set.fds_bits.25 = set.fds_bits.25 | mask
0203 case 26: set.fds_bits.26 = set.fds_bits.26 | mask
0204 case 27: set.fds_bits.27 = set.fds_bits.27 | mask
0205 case 28: set.fds_bits.28 = set.fds_bits.28 | mask
0206 case 29: set.fds_bits.29 = set.fds_bits.29 | mask
0207 case 30: set.fds_bits.30 = set.fds_bits.30 | mask
0208 case 31: set.fds_bits.31 = set.fds_bits.31 | mask
0209 default: break
0210 }
0211 }
0212
0213
0214
0216 func fdClr(fd: Int32, inout set: fd_set) {
0217 let intOffset = Int(fd / 32)
0218 let bitOffset = fd % 32
0219 let mask = ~(1 << bitOffset)
0220 switch intOffset {
0221 case 0: set.fds_bits.0 = set.fds_bits.0 & mask
0222 case 1: set.fds_bits.1 = set.fds_bits.1 & mask
0223 case 2: set.fds_bits.2 = set.fds_bits.2 & mask
0224 case 3: set.fds_bits.3 = set.fds_bits.3 & mask
0225 case 4: set.fds_bits.4 = set.fds_bits.4 & mask
0226 case 5: set.fds_bits.5 = set.fds_bits.5 & mask
0227 case 6: set.fds_bits.6 = set.fds_bits.6 & mask
0228 case 7: set.fds_bits.7 = set.fds_bits.7 & mask
0229 case 8: set.fds_bits.8 = set.fds_bits.8 & mask
0230 case 9: set.fds_bits.9 = set.fds_bits.9 & mask
0231 case 10: set.fds_bits.10 = set.fds_bits.10 & mask
0232 case 11: set.fds_bits.11 = set.fds_bits.11 & mask
0233 case 12: set.fds_bits.12 = set.fds_bits.12 & mask
0234 case 13: set.fds_bits.13 = set.fds_bits.13 & mask
0235 case 14: set.fds_bits.14 = set.fds_bits.14 & mask
0236 case 15: set.fds_bits.15 = set.fds_bits.15 & mask
0237 case 16: set.fds_bits.16 = set.fds_bits.16 & mask
0238 case 17: set.fds_bits.17 = set.fds_bits.17 & mask
0239 case 18: set.fds_bits.18 = set.fds_bits.18 & mask
0240 case 19: set.fds_bits.19 = set.fds_bits.19 & mask
0241 case 20: set.fds_bits.20 = set.fds_bits.20 & mask
0242 case 21: set.fds_bits.21 = set.fds_bits.21 & mask
0243 case 22: set.fds_bits.22 = set.fds_bits.22 & mask
0244 case 23: set.fds_bits.23 = set.fds_bits.23 & mask
0245 case 24: set.fds_bits.24 = set.fds_bits.24 & mask
0246 case 25: set.fds_bits.25 = set.fds_bits.25 & mask
0247 case 26: set.fds_bits.26 = set.fds_bits.26 & mask
0248 case 27: set.fds_bits.27 = set.fds_bits.27 & mask
0249 case 28: set.fds_bits.28 = set.fds_bits.28 & mask
0250 case 29: set.fds_bits.29 = set.fds_bits.29 & mask
0251 case 30: set.fds_bits.30 = set.fds_bits.30 & mask
0252 case 31: set.fds_bits.31 = set.fds_bits.31 & mask
0253 default: break
0254 }
0255 }
0256
0257
0258
0260 func fdIsSet| BlueSocket.swift:629 | return (fdIsSet(self.socketfd, set: &readfds), fdIsSet(self.socketfd, set: &writefds)) |
| BlueSocket.swift:629 | return (fdIsSet(self.socketfd, set: &readfds), fdIsSet(self.socketfd, set: &writefds)) |
(fd: Int32, inout set: fd_set) -> Bool {
0261 let intOffset = Int(fd / 32)
0262 let bitOffset = fd % 32
0263 let mask = 1 << bitOffset
0264 switch intOffset {
0265 case 0: return set.fds_bits.0 & mask != 0
0266 case 1: return set.fds_bits.1 & mask != 0
0267 case 2: return set.fds_bits.2 & mask != 0
0268 case 3: return set.fds_bits.3 & mask != 0
0269 case 4: return set.fds_bits.4 & mask != 0
0270 case 5: return set.fds_bits.5 & mask != 0
0271 case 6: return set.fds_bits.6 & mask != 0
0272 case 7: return set.fds_bits.7 & mask != 0
0273 case 8: return set.fds_bits.8 & mask != 0
0274 case 9: return set.fds_bits.9 & mask != 0
0275 case 10: return set.fds_bits.10 & mask != 0
0276 case 11: return set.fds_bits.11 & mask != 0
0277 case 12: return set.fds_bits.12 & mask != 0
0278 case 13: return set.fds_bits.13 & mask != 0
0279 case 14: return set.fds_bits.14 & mask != 0
0280 case 15: return set.fds_bits.15 & mask != 0
0281 case 16: return set.fds_bits.16 & mask != 0
0282 case 17: return set.fds_bits.17 & mask != 0
0283 case 18: return set.fds_bits.18 & mask != 0
0284 case 19: return set.fds_bits.19 & mask != 0
0285 case 20: return set.fds_bits.20 & mask != 0
0286 case 21: return set.fds_bits.21 & mask != 0
0287 case 22: return set.fds_bits.22 & mask != 0
0288 case 23: return set.fds_bits.23 & mask != 0
0289 case 24: return set.fds_bits.24 & mask != 0
0290 case 25: return set.fds_bits.25 & mask != 0
0291 case 26: return set.fds_bits.26 & mask != 0
0292 case 27: return set.fds_bits.27 & mask != 0
0293 case 28: return set.fds_bits.28 & mask != 0
0294 case 29: return set.fds_bits.29 & mask != 0
0295 case 30: return set.fds_bits.30 & mask != 0
0296 case 31: return set.fds_bits.31 & mask != 0
0297 default: return false
0298 }
0299
0300 }
0301
0302 #endif
0303