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;
}
}