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