Skip to main content

tinyshader_sys/
lib.rs

1use std::os::raw::c_char;
2
3#[repr(C)]
4pub struct TsCompilerOptions {
5    _private: [u8; 0]
6}
7
8#[repr(C)]
9pub struct TsCompilerOutput {
10    _private: [u8; 0]
11}
12
13#[repr(C)]
14pub enum TsShaderStage {
15    Vertex = 0,
16    Fragment = 1,
17    Compute = 2,
18}
19
20extern "C" {
21    pub fn tsCompilerOptionsCreate() -> *mut TsCompilerOptions;
22    pub fn tsCompilerOptionsSetStage(options: *mut TsCompilerOptions, stage: TsShaderStage);
23    pub fn tsCompilerOptionsSetEntryPoint(options: *mut TsCompilerOptions, entry_point: *const c_char, length: usize);
24    pub fn tsCompilerOptionsSetSource(
25        options: *mut TsCompilerOptions,
26        source: *const c_char,
27        source_length: usize,
28        path: *const c_char,
29        path_length: usize,
30    );
31    pub fn tsCompilerOptionsAddIncludePath(options: *mut TsCompilerOptions, include_path: *const c_char, length: usize);
32    pub fn tsCompilerOptionsDestroy(options: *mut TsCompilerOptions);
33
34    pub fn tsCompile(options: *mut TsCompilerOptions) -> *mut TsCompilerOutput;
35    pub fn tsCompilerOutputGetErrors(output: *mut TsCompilerOutput) -> *const c_char;
36    pub fn tsCompilerOutputGetSpirv(output: *mut TsCompilerOutput, length: *mut usize) -> *const u8;
37    pub fn tsCompilerOutputDestroy(output: *mut TsCompilerOutput);
38}
39
40