100_scan_ops/
100_scan_ops.rs1use libperl_rs::Perl;
2use libperl_sys::{op, PL_op_name};
3
4use std::env;
5use std::ffi::CStr;
6
7fn scan_ops(mut op: *const op) {
8 while !op.is_null() {
9 let ty = unsafe {(*op).op_type()};
10 print!("{:#?} {}\t{:?}\n",
17 op,
18 unsafe {
20 CStr::from_ptr(PL_op_name[ty as usize])
21 }
22 .to_str().unwrap(),
23 unsafe {*op},
24 );
25 op = unsafe {(*op).op_next as *const op};
26 }
27}
28
29#[cfg(perl_useithreads)]
30fn my_test() {
31 let mut perl = Perl::new();
32 perl.parse_env_args(env::args(), env::vars());
33 scan_ops(unsafe {*perl.my_perl}.Imain_start);
34}
35
36#[cfg(not(perl_useithreads))]
37fn my_test() {
38 let mut perl = Perl::new();
39 perl.parse_env_args(env::args(), env::vars());
40 scan_ops(unsafe {libperl_sys::PL_main_start});
41}
42
43fn main() {
46 my_test();
47}