lib-ruby-parser 3.0.11

Ruby parser
Documentation
use crate::blobs::{MaybePtrBlob, PtrBlob};

use crate::{Node, Token};

pub trait GetDropPtrFn {
    fn get_drop_ptr_fn() -> unsafe extern "C" fn(*mut PtrBlob);
    fn get_drop_maybe_ptr_fn() -> unsafe extern "C" fn(*mut MaybePtrBlob);
}

macro_rules! ptr_impl {
    ($t:ty, $drop_ptr_fn:ident, $drop_maybe_ptr_fn:ident) => {
        extern "C" {
            fn $drop_ptr_fn(ptr: *mut PtrBlob);
            fn $drop_maybe_ptr_fn(ptr: *mut MaybePtrBlob);
        }

        impl GetDropPtrFn for $t {
            fn get_drop_ptr_fn() -> unsafe extern "C" fn(*mut PtrBlob) {
                $drop_ptr_fn
            }

            fn get_drop_maybe_ptr_fn() -> unsafe extern "C" fn(*mut MaybePtrBlob) {
                $drop_maybe_ptr_fn
            }
        }
    };
}

ptr_impl!(
    Node,
    lib_ruby_parser__external__ptr__of_node__drop,
    lib_ruby_parser__external__maybe_ptr__of_node__drop
);
ptr_impl!(
    Token,
    lib_ruby_parser__external__ptr__of_token__drop,
    lib_ruby_parser__external__maybe_ptr__of_token__drop
);