JSONWriterUTF16JDK9UF.java

package com.alibaba.fastjson2;

import com.alibaba.fastjson2.util.IOUtils;

import static com.alibaba.fastjson2.JSONWriter.Feature.WriteBooleanAsNumber;
import static com.alibaba.fastjson2.util.JDKUtils.*;

final class JSONWriterUTF16JDK9UF
        extends JSONWriterUTF16 {
    JSONWriterUTF16JDK9UF(Context ctx) {
        super(ctx);
    }

    @Override
    public void writeString(String str) {
        if (str == null) {
            writeStringNull();
            return;
        }

        final byte[] value = STRING_VALUE.apply(str);
        if (STRING_CODER.applyAsInt(str) == 0) {
            writeStringLatin1(value);
        } else {
            writeStringUTF16(value);
        }
    }

    public void writeBool(boolean value) {
        int minCapacity = off + 5;
        if (minCapacity >= this.chars.length) {
            grow0(minCapacity);
        }

        char[] chars = this.chars;
        int off = this.off;
        if ((context.features & WriteBooleanAsNumber.mask) != 0) {
            chars[off++] = value ? '1' : '0';
        } else {
            off = IOUtils.putBoolean(chars, off, value);
        }
        this.off = off;
    }
}