// 
// Decompiled by Procyon v0.6.0
// 

package org.jline.terminal.impl.ffm;

import java.io.IOException;
import java.lang.foreign.ValueLayout;
import java.lang.foreign.Arena;
import java.lang.foreign.MemorySegment;
import org.jline.terminal.impl.AbstractWindowsConsoleWriter;

class NativeWinConsoleWriter extends AbstractWindowsConsoleWriter
{
    private final MemorySegment console;
    
    NativeWinConsoleWriter() {
        this.console = Kernel32.GetStdHandle(-11);
    }
    
    @Override
    protected void writeConsole(final char[] text, final int len) throws IOException {
        try (final Arena arena = Arena.ofConfined()) {
            final MemorySegment txt = arena.allocateFrom(ValueLayout.JAVA_CHAR, text);
            if (Kernel32.WriteConsoleW(this.console, txt, len, MemorySegment.NULL, MemorySegment.NULL) == 0) {
                throw new IOException("Failed to write to console: " + Kernel32.getLastErrorMessage());
            }
        }
    }
}
