#![allow(unused_variables, unused_macros)]
#![allow(unused_imports, unused_parens)]
#![allow(dead_code)]
pub mod parser;
pub mod setting;
pub mod stream;
use std::{fs::File, io::Write, path::Path};
use clang::Entity;
pub use parser::*;
pub use setting::*;
pub use stream::*;
pub fn generate_trader_wrapper_code<P: AsRef<Path>>(e: &Entity, target_dir: P) {
let mut cfg = Config::for_api();
cfg.source_class_name = "CThostFtdcTraderApi".to_string();
cfg.generate_trait_name = "TraderApi".to_string();
cfg.wrap_spi_trait = "TraderSpi".to_string();
let mut ctx = setting::Context::for_api(cfg);
let api_code = prepare_api_wrapper_code(&mut ctx, e);
let mut cfg = setting::Config::for_spi();
cfg.source_class_name = "CThostFtdcTraderSpi".to_string();
cfg.generate_trait_name = "TraderSpi".to_string();
cfg.wrap_spi_trait = "TraderSpi".to_string();
let mut ctx = setting::Context::for_spi(cfg);
let spi_code = prepare_spi_wrapper_code(&mut ctx, e);
let mut file =
File::create(target_dir.as_ref().join("traderapi.rs")).expect("create file error");
file.write_all(api_code.as_bytes())
.expect("write code failed!");
let mut file =
File::create(target_dir.as_ref().join("traderspi.rs")).expect("create file error");
file.write_all(spi_code.as_bytes())
.expect("write code failed!");
}
pub fn generate_mduser_wrapper_code<P: AsRef<Path>>(e: &Entity, target_dir: P) {
let mut cfg = Config::for_api();
cfg.source_class_name = "CThostFtdcMdApi".to_string();
cfg.generate_trait_name = "MdApi".to_string();
cfg.wrap_spi_trait = "MdSpi".to_string();
let mut ctx = setting::Context::for_api(cfg);
let api_code = prepare_api_wrapper_code(&mut ctx, e);
let mut cfg = setting::Config::for_spi();
cfg.source_class_name = "CThostFtdcMdSpi".to_string();
cfg.generate_trait_name = "MdSpi".to_string();
cfg.wrap_spi_trait = "MdSpi".to_string();
let mut ctx = setting::Context::for_spi(cfg);
let spi_code = prepare_spi_wrapper_code(&mut ctx, e);
let mut file = File::create(target_dir.as_ref().join("mdapi.rs")).expect("create file error");
file.write_all(api_code.as_bytes())
.expect("write code failed!");
let mut file = File::create(target_dir.as_ref().join("mdspi.rs")).expect("create file error");
file.write_all(spi_code.as_bytes())
.expect("write code failed!");
}