use crate::ir::dispatch_table::FunctionPrototype;
use crate::type_info::TypeInfo;
use inkwell::context::Context;
use inkwell::targets::TargetData;
use inkwell::types::FunctionType;
use std::ffi;
#[macro_use]
mod macros;
pub trait Intrinsic: Sync {
fn prototype(&self, context: &Context, target: &TargetData) -> FunctionPrototype;
fn ir_type<'ink>(&self, context: &'ink Context, target: &TargetData) -> FunctionType<'ink>;
}
intrinsics! {
pub fn new(type: *const TypeInfo, alloc_handle: *mut ffi::c_void) -> *const *mut ffi::c_void;
}