/*
 * Copyright (c) Huawei Technologies Co., Ltd. 2024-2024. All rights reserved.
 */
package cbor4cj

import std.io.OutputStream


public class ByteStringEncoder <: AbstractEncoder<ByteString> {
    public init(encoder: CborEncoder, outputStream: OutputStream) {
        super(encoder, outputStream)
    }

    public override func encode(byteString: ByteString): Unit {
        let bytes = byteString.getBytes() // )
        if (byteString.isChunked()) {
            encodeTypeChunked(MajorType.BYTE_STRING)
            if (bytes.isSome()) {
                encode(ByteString(bytes))
            }
        } else if (bytes.isNone()) {
            encoder.getOrThrow().encode(SimpleValue.NULL)
        } else {
            encodeTypeAndLength(MajorType.BYTE_STRING, bytes.getOrThrow().size)
            write(bytes.getOrThrow())
        }
    }
}