cpp-inherit 0.1.1

Macros for enabling you to subclass a Rust struct from a C++ class
Documentation
use syn::{Attribute, ImplItemMethod};

fn is_override_attr(attr: &Attribute) -> bool {
    attr.path
        .get_ident()
        .map(|ident| ident.to_string() == "overridden")
        .unwrap_or(false)
}

pub fn filter_overrides(method: &mut ImplItemMethod) -> Option<&mut ImplItemMethod> {
    if method.attrs.iter().any(is_override_attr) {
        Some(method)
    } else {
        None
    }
}

pub fn remove_override_attr(method: &mut &mut ImplItemMethod) {
    method.attrs.retain(|attr| !is_override_attr(attr));
}

pub fn make_extern_c(method: &mut &mut ImplItemMethod) {
    method.sig.abi.replace(syn::parse_quote!(extern "C"));
}