luaur_ast/methods/
printer_maybe_advance_and_write.rs1use 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}