libperl_sys/
lib.rs

1pub mod perl_core;
2pub use perl_core::*;
3
4pub mod conv_opcode;
5
6use std::ffi::CStr;
7
8// use std::os::raw::{c_char, c_int /*, c_void, c_schar*/};
9
10fn core_op_name(o: &op) -> Option<String> {
11    let ty = o.op_type();
12    if (ty as usize) < unsafe {PL_op_name.len()} {
13        let op_name = unsafe {CStr::from_ptr(PL_op_name[ty as usize])};
14        Some(String::from(op_name.to_str().unwrap()))
15    } else {
16        None
17    }
18}
19
20impl std::fmt::Display for op {
21    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
22        write!(f, "{{ {:?}={:#?} {:?} }}"
23               , core_op_name(&self)
24               , (self as *const op)
25               , self)
26    }
27}
28
29#[cfg(test)]
30mod tests {
31    #[test]
32    fn it_works() {
33        let perl = unsafe { super::perl_alloc() };
34        unsafe {
35            super::perl_construct(perl);
36        };
37    }
38}