1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
use libc::c_char; use std::borrow::Borrow; use std::ffi::{ CStr, CString }; use ::*; pub use ::dynamic::CaseType; #[no_mangle] pub unsafe extern "C" fn caseconv_convert_case(src: *const c_char, src_case: CaseType, dst_case: CaseType) -> *mut c_char { let src = CStr::from_ptr(src).to_string_lossy(); let src = src.borrow(); let ret_owned = CString::from_vec_unchecked(convert(src, &src_case, &dst_case).into_bytes()); ret_owned.into_raw() } #[no_mangle] pub unsafe extern "C" fn caseconv_guess_case(src: *const c_char) -> CaseType { let src = CStr::from_ptr(src).to_string_lossy(); let src = src.borrow(); CaseType::guess(src) } #[no_mangle] pub unsafe extern "C" fn caseconv_guess_and_convert(src: *const c_char, dst_case: CaseType) -> *mut c_char { let src = CStr::from_ptr(src).to_string_lossy(); let src = src.borrow(); let ret_owned = guess_and_convert(src, &dst_case); CString::from_vec_unchecked(ret_owned.into_bytes()).into_raw() }