#[cxx::bridge(namespace = "mcrl2::data")]
#[allow(clippy::missing_safety_doc)]
pub mod ffi {
unsafe extern "C++" {
include!("mcrl2-sys/cpp/data/data.h");
type data_specification;
#[namespace = "mcrl2::data::detail"]
type RewriterJitty;
#[namespace = "mcrl2::data::detail"]
type RewriterCompilingJitty;
#[namespace = "atermpp"]
type aterm = crate::atermpp::ffi::aterm;
#[namespace = "atermpp::detail"]
type _aterm = crate::atermpp::ffi::_aterm;
fn parse_data_specification(text: &str) -> Result<UniquePtr<data_specification>>;
fn parse_data_expression(text: &str, data_spec: &data_specification) -> Result<UniquePtr<aterm>>;
fn parse_variable(text: &str, data_spec: &data_specification) -> Result<UniquePtr<aterm>>;
fn get_data_specification_equations(data_spec: &data_specification) -> UniquePtr<CxxVector<aterm>>;
unsafe fn get_data_specification_constructors(
data_spec: &data_specification,
sort: *const _aterm,
) -> UniquePtr<CxxVector<aterm>>;
fn create_jitty_rewriter(data_spec: &data_specification) -> UniquePtr<RewriterJitty>;
fn create_jitty_compiling_rewriter(data_spec: &data_specification) -> UniquePtr<RewriterCompilingJitty>;
unsafe fn rewrite(rewriter: Pin<&mut RewriterJitty>, term: *const _aterm) -> UniquePtr<aterm>;
fn data_specification_clone(data_spec: &data_specification) -> UniquePtr<data_specification>;
unsafe fn get_data_function_symbol_index(term: *const _aterm) -> usize;
fn true_term() -> UniquePtr<aterm>;
fn false_term() -> UniquePtr<aterm>;
unsafe fn is_data_variable(term: *const _aterm) -> bool;
fn create_data_variable(name: String) -> *const _aterm;
unsafe fn create_sorted_data_variable(name: String, sort: *const _aterm) -> *const _aterm;
unsafe fn is_data_function_symbol(term: *const _aterm) -> bool;
fn create_data_function_symbol(name: String) -> *const _aterm;
unsafe fn is_data_sort_expression(term: *const _aterm) -> bool;
unsafe fn is_data_basic_sort(term: *const _aterm) -> bool;
unsafe fn is_data_function_sort(term: *const _aterm) -> bool;
unsafe fn is_data_where_clause(term: *const _aterm) -> bool;
unsafe fn is_data_abstraction(term: *const _aterm) -> bool;
unsafe fn is_data_untyped_identifier(term: *const _aterm) -> bool;
unsafe fn is_data_machine_number(term: *const _aterm) -> bool;
}
}