Skip to main content

native/pdf_elixide_nif/src/lib.rs

use std::sync::Mutex;

use pdf_oxide::{editor::DocumentEditor, PdfDocument};

mod document;
mod editor;
mod error;
mod form;

// Atoms ------------------------------------------------------------------------------------------

pub(crate) mod atoms {
    rustler::atoms! {
        ok, error,
        button, text, choice, signature, unknown
    }
}

// Resources --------------------------------------------------------------------------------------

struct DocumentResource {
    doc: Mutex<PdfDocument>,
}

#[rustler::resource_impl]
impl rustler::Resource for DocumentResource {}

struct EditorResource {
    editor: Mutex<DocumentEditor>,
}

#[rustler::resource_impl]
impl rustler::Resource for EditorResource {}

// ------------------------------------------------------------------------------------------------

rustler::init!("Elixir.PdfElixide.Native");