Herramienta para conectar programas o bibliotecas escritas en óxido con otros idiomas. Generador API de idioma extranjero - Flapigen. El antiguo nombre Rust_Swig se cambió para no confundir con Swig. Actualmente implementó soporte para C++ y Java , pero puede escribir soporte para cualquier idioma de su elección. Para obtener una instrucción sobre cómo integrar Flapigen con su proyecto, busque aquí.
Supongamos que tiene el siguiente código de óxido:
struct Foo {
data : i32
}
impl Foo {
fn new ( val : i32 ) -> Foo {
Foo { data : val }
}
fn f ( & self , a : i32 , b : i32 ) -> i32 {
self . data + a + b
}
fn set_field ( & mut self , v : i32 ) {
self . data = v ;
}
}
fn f2 ( a : i32 ) -> i32 {
a * 2
}Y quieres escribir en Java algo como esto:
Foo foo = new Foo ( 5 );
int res = foo . f ( 1 , 2 );
assert res == 8 ;o en C ++ algo como esto:
Foo foo ( 5 );
int res = foo.f( 1 , 2 );
assert (res == 8 );Para implementarlo, Flapigen sugiere la siguiente funcionalidad, en el proyecto de óxido que escribe (en lenguaje de óxido):
foreign_class ! ( class Foo {
self_type Foo ;
constructor Foo :: new ( _ : i32 ) -> Foo ;
fn Foo :: set_field ( & mut self , _ : i32 ) ;
fn Foo :: f ( & self , _ : i32 , _ : i32 ) -> i32 ;
fn f2 ( _ : i32 ) -> i32 ;
} ) ;Y eso es todo, como resultado, Flapigen genera envoltorios JNI para funciones de óxido y código Java para llamar a estas funciones JNI o genera envoltorios compatibles con C en caso de código C ++ y C ++ para llamar a estas funciones C.
Si desea que el archivo de interfaz (el archivo que contenga foreign_class! etc.) se genere automáticamente para usted, consulte Rifgen.
¡Lea la Guía de usuarios flapigen aquí!