@@ -65,11 +65,12 @@ public class ValuesBufferBuilder<T>: BaseBufferBuilder {
6565 }
6666}
6767
68- public class FixedBufferBuilder < T> : ValuesBufferBuilder < T > , ArrowBufferBuilder {
68+ /// A builder for fixed-width buffers.
69+ public class FixedBufferBuilder < T> : ValuesBufferBuilder < T > , ArrowBufferBuilder where T: Numeric {
6970 public typealias ItemType = T
70- private let defaultVal : ItemType
71+ private let defaultVal : ItemType = 0
72+
7173 public required init ( ) throws {
72- self . defaultVal = try FixedBufferBuilder< T> . defaultValueForType( )
7374 let values = ArrowBuffer . createBuffer ( 0 , size: UInt ( MemoryLayout< T> . stride) )
7475 let nulls = ArrowBuffer . createBuffer ( 0 , size: UInt ( MemoryLayout< UInt8> . stride) )
7576 super. init ( values: values, nulls: nulls)
@@ -114,33 +115,6 @@ public class FixedBufferBuilder<T>: ValuesBufferBuilder<T>, ArrowBufferBuilder {
114115 ArrowBuffer . copyCurrent ( self . nulls, to: & nulls, len: nulls. capacity)
115116 return [ nulls, values]
116117 }
117-
118- fileprivate static func defaultValueForType( ) throws -> T {
119- let type = T . self
120- if type == Int8 . self {
121- return Int8 ( 0 ) as! T // swiftlint:disable:this force_cast
122- } else if type == Int16 . self {
123- return Int16 ( 0 ) as! T // swiftlint:disable:this force_cast
124- } else if type == Int32 . self {
125- return Int32 ( 0 ) as! T // swiftlint:disable:this force_cast
126- } else if type == Int64 . self {
127- return Int64 ( 0 ) as! T // swiftlint:disable:this force_cast
128- } else if type == UInt8 . self {
129- return UInt8 ( 0 ) as! T // swiftlint:disable:this force_cast
130- } else if type == UInt16 . self {
131- return UInt16 ( 0 ) as! T // swiftlint:disable:this force_cast
132- } else if type == UInt32 . self {
133- return UInt32 ( 0 ) as! T // swiftlint:disable:this force_cast
134- } else if type == UInt64 . self {
135- return UInt64 ( 0 ) as! T // swiftlint:disable:this force_cast
136- } else if type == Float . self {
137- return Float ( 0 ) as! T // swiftlint:disable:this force_cast
138- } else if type == Double . self {
139- return Double ( 0 ) as! T // swiftlint:disable:this force_cast
140- }
141-
142- throw ArrowError . unknownType ( " Unable to determine default value " )
143- }
144118}
145119
146120public class BoolBufferBuilder : ValuesBufferBuilder < Bool > , ArrowBufferBuilder {
@@ -280,7 +254,7 @@ public class VariableBufferBuilder<T>: ValuesBufferBuilder<T>, ArrowBufferBuilde
280254 }
281255}
282256
283- public class AbstractWrapperBufferBuilder < T, U> : ArrowBufferBuilder {
257+ public class AbstractWrapperBufferBuilder < T, U> : ArrowBufferBuilder where U : Numeric {
284258 public typealias ItemType = T
285259 public var capacity : UInt { return self . bufferBuilder. capacity }
286260 public var length : UInt { return self . bufferBuilder. length }
0 commit comments