Macro ion_c_sys::ionc[][src]

macro_rules! ionc {
    ($e:expr) => { ... };
}
Expand description

Macro to transform Ion C error code expressions into Result<(), IonCError>. Higher-level facades over Ion C functions could map this to Result<T, IonCError> or the like.

NB: ionc! implies unsafe code.

Usage

let mut data = String::from("42");
let mut ion_reader: hREADER = ptr::null_mut();
let mut ion_type: ION_TYPE = ptr::null_mut();
ionc!(
    ion_reader_open_buffer(
        &mut ion_reader,
        data.as_mut_ptr(),
        data.len() as i32,
        ptr::null_mut()
    )
)?;

ionc!(ion_reader_next(ion_reader, &mut ion_type))?;
assert_eq!(ion_type as u32, tid_INT_INT);

let mut value = 0;
ionc!(ion_reader_read_int64(ion_reader, &mut value))?;
assert_eq!(value, 42);

ionc!(ion_reader_close(ion_reader))