lib-ruby-parser-bindings 0.13.0

Tools to generate bindings for lib-ruby-parser
use super::{fields, ns};
use crate::options;
use lib_ruby_parser_nodes::MessageField;

/// Returns name of the field getter for the given `message`/`field` pair
pub fn name(message_field: &MessageField) -> String {
    format!(
        "{ns}__{variant}__get_{field_name}",
        ns = ns(),
        variant = message_field.message.lower_name(),
        field_name = fields::field_name(&message_field)
    )
}

/// Returns C signature of the field getter for the given `message`/`field` pair
pub fn sig(message_field: &MessageField) -> String {
    format!(
        "const {return_type} *{fn_attributes} {getter_name}(const {message_variant_blob} *self_blob)",
        return_type = fields::field_type(&message_field),
        fn_attributes = options().fn_attributes,
        getter_name = name(message_field),
        message_variant_blob = options().message_variant_blob_name(&message_field.message),
    )
}