//! Base of current FFI.
//!
//! Declaration of types, enums, cargo feature controls, etc.
//!
//! This file is generated automatically.

use core::ffi::*;
use num::Complex;

/* automatically generated by rust-bindgen 0.72.1 */

pub const TBLIS_ENABLE_CPLUSPLUS: u32 = 0;
pub const TBLIS_MAX_UNROLL: u32 = 8;
pub type scomplex = Complex<f32>;
pub type dcomplex = Complex<f64>;
pub type tblis_config = c_void;
impl reduce_t {
    pub const REDUCE_NORM_1: reduce_t = reduce_t::REDUCE_SUM_ABS;
}
impl reduce_t {
    pub const REDUCE_NORM_INF: reduce_t = reduce_t::REDUCE_MAX_ABS;
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum reduce_t {
    REDUCE_SUM = 0,
    REDUCE_SUM_ABS = 1,
    REDUCE_MAX = 2,
    REDUCE_MAX_ABS = 3,
    REDUCE_MIN = 4,
    REDUCE_MIN_ABS = 5,
    REDUCE_NORM_2 = 6,
}
pub type type_t = c_int;
pub const TYPE_SINGLE: type_t = 0;
pub const TYPE_FLOAT: type_t = 0;
pub const TYPE_DOUBLE: type_t = 2;
pub const TYPE_SCOMPLEX: type_t = 1;
pub const TYPE_DCOMPLEX: type_t = 3;
pub type len_type = isize;
pub type stride_type = isize;
pub type label_type = c_char;
#[repr(C)]
#[derive(Copy, Clone)]
pub struct tblis_scalar {
    pub data: tblis_scalar_scalar,
    pub type_: type_t,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union tblis_scalar_scalar {
    pub s: f32,
    pub d: f64,
    pub c: scomplex,
    pub z: dcomplex,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct tblis_tensor {
    pub type_: type_t,
    pub conj: c_int,
    pub scalar: tblis_scalar,
    pub data: *mut c_void,
    pub ndim: c_int,
    pub len: *mut len_type,
    pub stride: *mut stride_type,
}
pub type tblis_comm = c_void;
