|  |  | @ -4,34 +4,59 @@ | 
			
		
	
		
			
				
					|  |  |  | include!(concat!(env!("OUT_DIR"), "/bindings.rs")); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | use std::env; | 
			
		
	
		
			
				
					|  |  |  | use std::ffi::CStr; | 
			
		
	
		
			
				
					|  |  |  | use std::ffi::{c_char, CStr}; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | fn klotski_tmain() { | 
			
		
	
		
			
				
					|  |  |  | pub trait CStringDump { | 
			
		
	
		
			
				
					|  |  |  |     fn dump(&self) -> String; | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | impl CStringDump for *const c_char { | 
			
		
	
		
			
				
					|  |  |  |     fn dump(&self) -> String { | 
			
		
	
		
			
				
					|  |  |  |         let cstr: &CStr; | 
			
		
	
		
			
				
					|  |  |  |         unsafe { | 
			
		
	
		
			
				
					|  |  |  |         tmain(); | 
			
		
	
		
			
				
					|  |  |  |             cstr = CStr::from_ptr(*self); | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |         String::from(cstr.to_str().unwrap()) | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | // fn klotski_tmain() {
 | 
			
		
	
		
			
				
					|  |  |  | //     unsafe {
 | 
			
		
	
		
			
				
					|  |  |  | //         tmain();
 | 
			
		
	
		
			
				
					|  |  |  | //     }
 | 
			
		
	
		
			
				
					|  |  |  | // }
 | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | // fn const_char_dump(i: *const c_char) {
 | 
			
		
	
		
			
				
					|  |  |  | //
 | 
			
		
	
		
			
				
					|  |  |  | // }
 | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | fn klotski_version() -> String { | 
			
		
	
		
			
				
					|  |  |  |     unsafe { | 
			
		
	
		
			
				
					|  |  |  |         // let v_major = get_version_major();
 | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         let v = get_version(); | 
			
		
	
		
			
				
					|  |  |  |         let csp: &CStr = CStr::from_ptr(v); | 
			
		
	
		
			
				
					|  |  |  |         let s: &str = csp.to_str().unwrap(); | 
			
		
	
		
			
				
					|  |  |  |         // let v = get_version();
 | 
			
		
	
		
			
				
					|  |  |  |         // let csp: &CStr = CStr::from_ptr(v);
 | 
			
		
	
		
			
				
					|  |  |  |         // let s: &str = csp.to_str().unwrap();
 | 
			
		
	
		
			
				
					|  |  |  |         // println!("klotski version -> {}", s);
 | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         String::from(s) | 
			
		
	
		
			
				
					|  |  |  |         String::from(get_version().dump()) | 
			
		
	
		
			
				
					|  |  |  |         // String::new()
 | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | fn klotski_system() -> String { | 
			
		
	
		
			
				
					|  |  |  |     unsafe { | 
			
		
	
		
			
				
					|  |  |  |         String::from(get_system_info().dump()) | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | fn main() { | 
			
		
	
		
			
				
					|  |  |  |     println!("rust start"); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     // klotski_tmain();
 | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     println!("version -> {}", klotski_version()); | 
			
		
	
		
			
				
					|  |  |  |     println!("system -> {}", klotski_system()); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     println!("rust exit"); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
	
		
			
				
					|  |  | 
 |