#![doc = include_str!("../README.md")]
#![cfg_attr(not(feature = "loadable-extension"), forbid(unsafe_code))]
mod options;
mod register;
#[cfg(feature = "loadable-extension")]
#[doc(hidden)]
pub mod __private;
pub use options::{Arity, FunctionOptions};
pub use register::{register_aggregate, register_scalar};
pub use rusqlite;
#[cfg(feature = "loadable-extension")]
#[macro_export]
macro_rules! export_extension {
($register:path) => {
#[doc = "SQLite loadable-extension entry point."]
#[unsafe(no_mangle)]
pub unsafe extern "C" fn sqlite3_extension_init(
db: *mut $crate::rusqlite::ffi::sqlite3,
error_message: *mut *mut ::std::os::raw::c_char,
api: *mut $crate::rusqlite::ffi::sqlite3_api_routines,
) -> ::std::os::raw::c_int {
fn register(
connection: $crate::rusqlite::Connection,
) -> $crate::rusqlite::Result<bool> {
$register(&connection)?;
Ok(false)
}
unsafe { $crate::__private::initialize(db, error_message, api, register) }
}
};
}