use super::super::Handle;
use super::refcount::{with_obj, with_obj_mut};
use super::types::PdfObjHandle;
#[unsafe(no_mangle)]
pub extern "C" fn pdf_obj_marked(_ctx: Handle, obj: PdfObjHandle) -> i32 {
with_obj(obj, 0, |o| i32::from(o.marked))
}
#[unsafe(no_mangle)]
pub extern "C" fn pdf_mark_obj(_ctx: Handle, obj: PdfObjHandle) -> i32 {
with_obj_mut(obj, 0, |o| {
let was_marked = o.marked;
o.marked = true;
i32::from(was_marked)
})
}
#[unsafe(no_mangle)]
pub extern "C" fn pdf_unmark_obj(_ctx: Handle, obj: PdfObjHandle) {
with_obj_mut(obj, (), |o| {
o.marked = false;
});
}
#[unsafe(no_mangle)]
pub extern "C" fn pdf_obj_is_dirty(_ctx: Handle, obj: PdfObjHandle) -> i32 {
with_obj(obj, 0, |o| i32::from(o.dirty))
}
#[unsafe(no_mangle)]
pub extern "C" fn pdf_dirty_obj(_ctx: Handle, obj: PdfObjHandle) {
with_obj_mut(obj, (), |o| {
o.dirty = true;
});
}
#[unsafe(no_mangle)]
pub extern "C" fn pdf_clean_obj(_ctx: Handle, obj: PdfObjHandle) {
with_obj_mut(obj, (), |o| {
o.dirty = false;
});
}
#[unsafe(no_mangle)]
pub extern "C" fn pdf_set_obj_parent(_ctx: Handle, obj: PdfObjHandle, num: i32) {
with_obj_mut(obj, (), |o| {
o.parent_num = num;
});
}
#[unsafe(no_mangle)]
pub extern "C" fn pdf_obj_parent_num(_ctx: Handle, obj: PdfObjHandle) -> i32 {
with_obj(obj, 0, |o| o.parent_num)
}
#[unsafe(no_mangle)]
pub extern "C" fn pdf_obj_refs(_ctx: Handle, obj: PdfObjHandle) -> i32 {
with_obj(obj, 0, |o| o.refs)
}
#[cfg(test)]
mod tests {
use super::super::create::pdf_new_int;
use super::*;
#[test]
fn test_pdf_obj_marked() {
let obj = pdf_new_int(0, 42);
assert_eq!(pdf_obj_marked(0, obj), 0);
pdf_mark_obj(0, obj);
assert_eq!(pdf_obj_marked(0, obj), 1);
pdf_unmark_obj(0, obj);
assert_eq!(pdf_obj_marked(0, obj), 0);
}
#[test]
fn test_pdf_mark_obj() {
let obj = pdf_new_int(0, 42);
let was = pdf_mark_obj(0, obj);
assert_eq!(was, 0);
let was2 = pdf_mark_obj(0, obj);
assert_eq!(was2, 1);
}
#[test]
fn test_pdf_obj_is_dirty() {
let obj = pdf_new_int(0, 42);
assert_eq!(pdf_obj_is_dirty(0, obj), 0);
pdf_dirty_obj(0, obj);
assert_eq!(pdf_obj_is_dirty(0, obj), 1);
pdf_clean_obj(0, obj);
assert_eq!(pdf_obj_is_dirty(0, obj), 0);
}
#[test]
fn test_pdf_set_obj_parent() {
let obj = pdf_new_int(0, 42);
assert_eq!(pdf_obj_parent_num(0, obj), 0);
pdf_set_obj_parent(0, obj, 100);
assert_eq!(pdf_obj_parent_num(0, obj), 100);
}
#[test]
fn test_pdf_obj_refs() {
let obj = pdf_new_int(0, 42);
assert_eq!(pdf_obj_refs(0, obj), 1);
}
}