JNR Gen

JNR Gen is a program to generate Java enums, structs, and constants from a c header file. To run JNR Gen and update the java files, run the following command:

gradlew wgpuj:updateBindings

Example Enum

package io.github.kgpu.wgpuj.jni;


/** NOTE: THIS FILE WAS PRE-GENERATED BY JNR_GEN! */
public enum WgpuBindingType {
    UNIFORM_BUFFER,
    STORAGE_BUFFER,
    READONLY_STORAGE_BUFFER,
    SAMPLER,
    COMPARISON_SAMPLER,
    SAMPLED_TEXTURE,
    READONLY_STORAGE_TEXTURE,
    WRITEONLY_STORAGE_TEXTURE,
}

Example Struct

package io.github.kgpu.wgpuj.jni;

import io.github.kgpu.wgpuj.WgpuJava;
import io.github.kgpu.wgpuj.util.WgpuJavaStruct;
import io.github.kgpu.wgpuj.util.CStrPointer;
import io.github.kgpu.wgpuj.util.RustCString;
import jnr.ffi.Runtime;
import jnr.ffi.Struct;

/** NOTE: THIS FILE WAS PRE-GENERATED BY JNR_GEN! */
public class WgpuBindGroupDescriptor extends WgpuJavaStruct {

    private final @CStrPointer Struct.Pointer label = new Struct.Pointer();
    private final DynamicStructRef<WgpuBindGroupEntry> entries = new DynamicStructRef<>(WgpuBindGroupEntry.class);

    protected WgpuBindGroupDescriptor(boolean direct){
         if(direct){
             useDirectMemory();
        }
    }

    @Deprecated
    public WgpuBindGroupDescriptor(Runtime runtime){
        super(runtime);
    }

    public static WgpuBindGroupDescriptor createHeap(){
        return new WgpuBindGroupDescriptor(false);
    }

    public static WgpuBindGroupDescriptor createDirect(){
        return new WgpuBindGroupDescriptor(true);
    }

    public java.lang.String getLabel(){
        return RustCString.fromPointer(label.get());
    }

    public void setLabel(java.lang.String x){
        this.label.set(RustCString.toPointer(x));
    }

    public DynamicStructRef<WgpuBindGroupEntry> getEntries(){
        return entries;
    }

    public void setEntries(WgpuBindGroupEntry... x){
        if(x.length == 0 || x[0] == null){
            this.entries.set(WgpuJava.createNullPointer());
        } else {
            this.entries.set(x);
        }
    }

}

Example Constants

package io.github.kgpu.wgpuj.jni;


/** NOTE: THIS FILE WAS PRE-GENERATED BY JNR_GEN! */
public final class Wgpu{

    public static final int BIND_BUFFER_ALIGNMENT = 256;
    public static final int COPY_BYTES_PER_ROW_ALIGNMENT = 256;
    public static final int DEFAULT_BIND_GROUPS = 4;
    public static final int DESIRED_NUM_FRAMES = 3;
    public static final int MAX_ANISOTROPY = 16;
    public static final int MAX_COLOR_TARGETS = 4;
    public static final int MAX_MIP_LEVELS = 16;
    public static final int MAX_VERTEX_BUFFERS = 16;

    public static final class ShaderStage{
        public static final int NONE = 0;
        public static final int VERTEX = 1;
        public static final int FRAGMENT = 2;
        public static final int COMPUTE = 4;
    }

}