Skip to main content

luaur_ast/methods/
printer_maybe_advance_and_write.rs

1use crate::records::position::Position;
2use crate::records::printer::Printer;
3
4impl<'a> Printer<'a> {
5    pub fn maybe_advance_and_write(&mut self, pos: &Position, s: &str, always_write: bool) {
6        if pos.has_value() {
7            self.advance(pos);
8            self.writer.write(s);
9        } else if always_write {
10            self.writer.write(s);
11        }
12    }
13}
14
15#[no_mangle]
16pub extern "C" fn printer_maybe_advance_and_write(
17    this: *mut Printer,
18    pos: *const Position,
19    s_ptr: *const core::ffi::c_char,
20    s_len: usize,
21    always_write: bool,
22) {
23    unsafe {
24        let s =
25            core::str::from_utf8_unchecked(core::slice::from_raw_parts(s_ptr as *const u8, s_len));
26        (*this).maybe_advance_and_write(&*pos, s, always_write);
27    }
28}