1pub mod perl_core;
2pub use perl_core::*;
3
4pub mod conv_opcode;
5
6use std::ffi::CStr;
7
8fn 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}