use std::sync::Once;
use tree_sitter_language::LanguageFn;
use zstd_sys as _;
macro_rules! grammar {
($name:ident, $unpack:ident, $constructor:ident) => {
pub const $name: LanguageFn = {
unsafe extern "C" fn language() -> *const () {
extern "C" {
fn $unpack();
fn $constructor() -> *const ();
}
static UNPACKED: Once = Once::new();
UNPACKED.call_once(|| unsafe { $unpack() });
unsafe { $constructor() }
}
unsafe { LanguageFn::from_raw(language) }
};
};
}
include!(concat!(env!("OUT_DIR"), "/grammars.rs"));