Warning, /sdk/rust-qt-binding-generator/src/lib.rs is written in an unsupported language. File is not indexed.
0001 extern crate regex;
0002 #[macro_use]
0003 extern crate serde_derive;
0004 extern crate serde_json;
0005 extern crate serde_xml_rs;
0006 extern crate toml;
0007
0008 pub mod build;
0009 pub mod configuration;
0010 mod configuration_private;
0011 mod cpp;
0012 mod rust;
0013 mod util;
0014
0015 use configuration::Config;
0016 use std::error::Error;
0017 use std::path::Path;
0018
0019 /// Read a file with bindings.
0020 pub fn read_bindings_file<P: AsRef<Path>>(config_file: P) -> Result<Config, Box<dyn Error>> {
0021 configuration::parse(config_file)
0022 }
0023
0024 /// Generate bindings from a bindings configuration.
0025 pub fn generate_bindings(config: &Config) -> Result<(), Box<dyn Error>> {
0026 cpp::write_header(config)?;
0027 cpp::write_cpp(config)?;
0028 rust::write_interface(config)?;
0029 rust::write_implementation(config)?;
0030 Ok(())
0031 }
0032
0033 /// Generate bindings from a bindings configuration file.
0034 pub fn generate_bindings_from_config_file<P: AsRef<Path>>(
0035 config_file: P,
0036 overwrite_implementation: bool,
0037 ) -> Result<(), Box<dyn Error>> {
0038 let mut config = read_bindings_file(config_file)?;
0039 if overwrite_implementation {
0040 config.overwrite_implementation = true;
0041 }
0042 generate_bindings(&config)
0043 }