automated C# glue FFI glue code

This commit is contained in:
2025-11-28 03:51:05 -07:00
parent 6b69cc1459
commit c97c5763ae
9 changed files with 130 additions and 54 deletions

View File

@@ -0,0 +1,3 @@
fn main() -> std::io::Result<()> {
::slang::generate_headers()
}

View File

@@ -15,10 +15,10 @@ pub struct FfiToken {
}
#[ffi_export]
pub fn compile_from_string(input: safer_ffi::String) -> safer_ffi::String {
pub fn compile_from_string(input: safer_ffi::char_p::char_p_ref<'_>) -> safer_ffi::String {
let mut writer = BufWriter::new(Vec::new());
let tokenizer = Tokenizer::from(String::from(input));
let tokenizer = Tokenizer::from(input.to_str());
let parser = Parser::new(tokenizer);
let compiler = Compiler::new(parser, &mut writer, None);
@@ -35,8 +35,8 @@ pub fn compile_from_string(input: safer_ffi::String) -> safer_ffi::String {
}
#[ffi_export]
pub fn tokenize_line(input: safer_ffi::String) -> safer_ffi::Vec<FfiToken> {
let tokenizer = Tokenizer::from(String::from(input));
pub fn tokenize_line(input: safer_ffi::char_p::char_p_ref<'_>) -> safer_ffi::Vec<FfiToken> {
let tokenizer = Tokenizer::from(input.to_str());
let mut tokens = Vec::<FfiToken>::new();
@@ -73,6 +73,6 @@ pub fn tokenize_line(input: safer_ffi::String) -> safer_ffi::Vec<FfiToken> {
pub fn generate_headers() -> std::io::Result<()> {
::safer_ffi::headers::builder()
.with_language(safer_ffi::headers::Language::CSharp)
.to_file("SlangGlue.cs")?
.to_file("../csharp_mod/SlangGlue.cs")?
.generate()
}