@@ -135,10 +135,8 @@ public extension Parcel {
135135 func marshal( start: Int = 0 , length: Int ? = nil ) throws ( AndroidBinderError) -> [ UInt8 ] {
136136 let len = length ?? ( dataSize - start)
137137 var buffer = [ UInt8] ( repeating: 0 , count: len)
138- try buffer. withUnsafeMutableBufferPointer { buf in
139- if let base = buf. baseAddress {
140- try handle. marshal ( into: base, start: start, length: len) . get ( )
141- }
138+ if let base = buffer. withUnsafeMutableBufferPointer ( { $0. baseAddress } ) {
139+ try handle. marshal ( into: base, start: start, length: len) . get ( )
142140 }
143141 return buffer
144142 }
@@ -151,10 +149,8 @@ public extension Parcel {
151149 * \param data the bytes to unmarshal.
152150 */
153151 func unmarshal( _ data: [ UInt8 ] ) throws ( AndroidBinderError) {
154- try data. withUnsafeBufferPointer { buf in
155- if let base = buf. baseAddress {
156- try handle. unmarshal ( base, length: data. count) . get ( )
157- }
152+ if let base = data. withUnsafeBufferPointer ( { $0. baseAddress } ) {
153+ try handle. unmarshal ( base, length: data. count) . get ( )
158154 }
159155 }
160156}
@@ -800,24 +796,25 @@ internal extension Parcel.Handle {
800796 func readString( ) -> Result < String , AndroidBinderError > {
801797 var ctx = ParcelStringReadContext ( buffer: nil )
802798 let status = withUnsafeMutablePointer ( to: & ctx) { ctxPtr -> binder_status_t in
803- AParcel_readString ( pointer, ctxPtr) { userData, length -> UnsafeMutablePointer < CChar > ? in
804- guard let userData = userData else { return nil }
799+ AParcel_readString ( pointer, ctxPtr) { userData, length, outBuffer -> Bool in
800+ guard let userData = userData else { return false }
805801 let buf = UnsafeMutablePointer< CChar> . allocate( capacity: Int ( length) + 1 )
806802 buf [ Int ( length) ] = 0
807803 userData. assumingMemoryBound ( to: ParcelStringReadContext . self) . pointee. buffer = buf
808- return buf
804+ outBuffer? . pointee = buf
805+ return true
809806 }
810807 }
811808 defer { ctx. buffer? . deallocate ( ) }
812- guard status == STATUS_OK else { return status. mapError ( ) }
809+ guard status == STATUS_OK else { return status. mapError ( as : String . self ) }
813810 guard let buf = ctx. buffer else { return . success( " " ) }
814811 return . success( String ( cString: buf) )
815812 }
816813
817814 func readStrongBinder( ) -> Result < AndroidBinder , AndroidBinderError > {
818815 var binderPtr : OpaquePointer ? = nil
819816 let status = AParcel_readStrongBinder ( pointer, & binderPtr)
820- guard status == STATUS_OK else { return status. mapError ( ) }
817+ guard status == STATUS_OK else { return status. mapError ( as : AndroidBinder . self ) }
821818 guard let ptr = binderPtr else {
822819 return . failure( AndroidBinderError ( AndroidBinderError . ErrorCode. unexpectedNull) )
823820 }
@@ -832,7 +829,7 @@ internal extension Parcel.Handle {
832829 func readStatusHeader( ) -> Result < Status , AndroidBinderError > {
833830 var statusPtr : OpaquePointer ? = nil
834831 let statusCode = AParcel_readStatusHeader ( pointer, & statusPtr)
835- guard statusCode == STATUS_OK else { return statusCode. mapError ( ) }
832+ guard statusCode == STATUS_OK else { return statusCode. mapError ( as : Status . self ) }
836833 guard let ptr = statusPtr else {
837834 return . failure( AndroidBinderError ( AndroidBinderError . ErrorCode. unexpectedNull) )
838835 }
@@ -979,7 +976,7 @@ internal extension Parcel.Handle {
979976 }
980977 }
981978 defer { ctx. buffer? . deallocate ( ) }
982- guard status == STATUS_OK else { return status. mapError ( ) }
979+ guard status == STATUS_OK else { return status. mapError ( as : [ Int8 ] ? . self ) }
983980 if ctx. isNull { return . success( nil ) }
984981 if let buf = ctx. buffer {
985982 return . success( Array ( UnsafeBufferPointer ( start: buf, count: Int ( ctx. count) ) ) )
@@ -1004,7 +1001,7 @@ internal extension Parcel.Handle {
10041001 }
10051002 }
10061003 defer { ctx. buffer? . deallocate ( ) }
1007- guard status == STATUS_OK else { return status. mapError ( ) }
1004+ guard status == STATUS_OK else { return status. mapError ( as : [ Int32 ] ? . self ) }
10081005 if ctx. isNull { return . success( nil ) }
10091006 if let buf = ctx. buffer {
10101007 return . success( Array ( UnsafeBufferPointer ( start: buf, count: Int ( ctx. count) ) ) )
@@ -1029,7 +1026,7 @@ internal extension Parcel.Handle {
10291026 }
10301027 }
10311028 defer { ctx. buffer? . deallocate ( ) }
1032- guard status == STATUS_OK else { return status. mapError ( ) }
1029+ guard status == STATUS_OK else { return status. mapError ( as : [ UInt32 ] ? . self ) }
10331030 if ctx. isNull { return . success( nil ) }
10341031 if let buf = ctx. buffer {
10351032 return . success( Array ( UnsafeBufferPointer ( start: buf, count: Int ( ctx. count) ) ) )
@@ -1054,7 +1051,7 @@ internal extension Parcel.Handle {
10541051 }
10551052 }
10561053 defer { ctx. buffer? . deallocate ( ) }
1057- guard status == STATUS_OK else { return status. mapError ( ) }
1054+ guard status == STATUS_OK else { return status. mapError ( as : [ Int64 ] ? . self ) }
10581055 if ctx. isNull { return . success( nil ) }
10591056 if let buf = ctx. buffer {
10601057 return . success( Array ( UnsafeBufferPointer ( start: buf, count: Int ( ctx. count) ) ) )
@@ -1079,7 +1076,7 @@ internal extension Parcel.Handle {
10791076 }
10801077 }
10811078 defer { ctx. buffer? . deallocate ( ) }
1082- guard status == STATUS_OK else { return status. mapError ( ) }
1079+ guard status == STATUS_OK else { return status. mapError ( as : [ UInt64 ] ? . self ) }
10831080 if ctx. isNull { return . success( nil ) }
10841081 if let buf = ctx. buffer {
10851082 return . success( Array ( UnsafeBufferPointer ( start: buf, count: Int ( ctx. count) ) ) )
@@ -1104,7 +1101,7 @@ internal extension Parcel.Handle {
11041101 }
11051102 }
11061103 defer { ctx. buffer? . deallocate ( ) }
1107- guard status == STATUS_OK else { return status. mapError ( ) }
1104+ guard status == STATUS_OK else { return status. mapError ( as : [ Float ] ? . self ) }
11081105 if ctx. isNull { return . success( nil ) }
11091106 if let buf = ctx. buffer {
11101107 return . success( Array ( UnsafeBufferPointer ( start: buf, count: Int ( ctx. count) ) ) )
@@ -1129,7 +1126,7 @@ internal extension Parcel.Handle {
11291126 }
11301127 }
11311128 defer { ctx. buffer? . deallocate ( ) }
1132- guard status == STATUS_OK else { return status. mapError ( ) }
1129+ guard status == STATUS_OK else { return status. mapError ( as : [ Double ] ? . self ) }
11331130 if ctx. isNull { return . success( nil ) }
11341131 if let buf = ctx. buffer {
11351132 return . success( Array ( UnsafeBufferPointer ( start: buf, count: Int ( ctx. count) ) ) )
@@ -1154,7 +1151,7 @@ internal extension Parcel.Handle {
11541151 }
11551152 }
11561153 defer { ctx. buffer? . deallocate ( ) }
1157- guard status == STATUS_OK else { return status. mapError ( ) }
1154+ guard status == STATUS_OK else { return status. mapError ( as : [ UInt16 ] ? . self ) }
11581155 if ctx. isNull { return . success( nil ) }
11591156 if let buf = ctx. buffer {
11601157 return . success( Array ( UnsafeBufferPointer ( start: buf, count: Int ( ctx. count) ) ) )
@@ -1184,7 +1181,7 @@ internal extension Parcel.Handle {
11841181 )
11851182 }
11861183 defer { ctx. elements? . deallocate ( ) }
1187- guard status == STATUS_OK else { return status. mapError ( ) }
1184+ guard status == STATUS_OK else { return status. mapError ( as : [ Bool ] ? . self ) }
11881185 if ctx. isNull { return . success( nil ) }
11891186 if let elements = ctx. elements {
11901187 return . success( Array ( UnsafeBufferPointer ( start: elements, count: Int ( ctx. count) ) ) )
@@ -1255,4 +1252,4 @@ private struct ParcelUInt16ArrayReadContext {
12551252 var buffer : UnsafeMutablePointer < UInt16 > ?
12561253 var count : Int32
12571254 var isNull : Bool
1258- }
1255+ }
0 commit comments