/*
* Copyright (c) Huawei Technologies Co., Ltd. 2024-2024. All rights reserved.
*/
package cbor4cj
public class ArrayBuilder<T> <: AbstractBuilder<T> {
private let array: CborArray
public init(parent: T, array: CborArray) {
super(parent)
this.array = array
}
public func add(dataItem: DataItem): ArrayBuilder<T> {
array.add(dataItem)
return this
}
public func add(value: Int64): ArrayBuilder<T> {
add(convert(value))
return this
}
public func add(value: Bool): ArrayBuilder<T> {
add(convert(value))
return this
}
public func add(value: Float32): ArrayBuilder<T> {
add(convert(value))
return this
}
public func add(value: Float64): ArrayBuilder<T> {
add(convert(value))
return this
}
public func add(bytes: Array<UInt8>): ArrayBuilder<T> {
add(convert(bytes))
return this
}
public func add(string: String): ArrayBuilder<T> {
add(convert(string))
return this
}
public func addArray(): ArrayBuilder<Object> {
let nestedArray = CborArray()
add(nestedArray)
return ArrayBuilder<Object>(this, nestedArray)
}
public func startArray(): ArrayBuilder<Object> {
let nestedArray = CborArray()
nestedArray.setChunked(true)
add(nestedArray)
return ArrayBuilder<Object>(this, nestedArray)
}
public func addMap(): MapBuilder<Object> {
let nestedMap = CborMap()
add(nestedMap)
return MapBuilder<Object>(this, nestedMap)
}
public func startMap(): MapBuilder<Object> {
let nestedMap = CborMap()
nestedMap.setChunked(true)
add(nestedMap)
return MapBuilder<Object>(this, nestedMap)
}
public func end(): ?T {
if (array.isChunked()) {
add(SimpleValue.BREAK)
}
return getParent()
}
}