use std::mem::MaybeUninit;
pub struct Dataframe {
pub(crate) raw: *mut ffi::AMPL_DATAFRAME,
}
impl Dataframe {
pub fn new(numIndexColumns: &usize, numDataColumns: &usize, headers: &[&str]) -> Self {
let mut df = MaybeUninit::uninit();
let cstrings: Vec<CString> = headers.iter()
.map(|&s| CString::new(s).unwrap())
.collect();
let mut c_char_ptrs: Vec<*const c_char> = cstrings.iter()
.map(|s| s.as_ptr())
.collect();
c_char_ptrs.push(std::ptr::null());
let ptr = c_char_ptrs.as_ptr();
unsafe { ffi::AMPL_DataFrameCreate(df.as_mut_ptr(), numIndexColumns, numDataColumns, ptr) };
let df = unsafe { df.assume_init() };
Dataframe { raw: df }
}
}