pub const DLPACK_VERSION: u32 = 80;
pub const DLPACK_ABI_VERSION: u32 = 1;
pub const _STDINT_H: u32 = 1;
pub const _FEATURES_H: u32 = 1;
pub const _DEFAULT_SOURCE: u32 = 1;
pub const __GLIBC_USE_ISOC2X: u32 = 0;
pub const __USE_ISOC11: u32 = 1;
pub const __USE_ISOC99: u32 = 1;
pub const __USE_ISOC95: u32 = 1;
pub const __USE_POSIX_IMPLICITLY: u32 = 1;
pub const _POSIX_SOURCE: u32 = 1;
pub const _POSIX_C_SOURCE: u32 = 200809;
pub const __USE_POSIX: u32 = 1;
pub const __USE_POSIX2: u32 = 1;
pub const __USE_POSIX199309: u32 = 1;
pub const __USE_POSIX199506: u32 = 1;
pub const __USE_XOPEN2K: u32 = 1;
pub const __USE_XOPEN2K8: u32 = 1;
pub const _ATFILE_SOURCE: u32 = 1;
pub const __WORDSIZE: u32 = 64;
pub const __WORDSIZE_TIME64_COMPAT32: u32 = 1;
pub const __SYSCALL_WORDSIZE: u32 = 64;
pub const __TIMESIZE: u32 = 64;
pub const __USE_MISC: u32 = 1;
pub const __USE_ATFILE: u32 = 1;
pub const __USE_FORTIFY_LEVEL: u32 = 0;
pub const __GLIBC_USE_DEPRECATED_GETS: u32 = 0;
pub const __GLIBC_USE_DEPRECATED_SCANF: u32 = 0;
pub const _STDC_PREDEF_H: u32 = 1;
pub const __STDC_IEC_559__: u32 = 1;
pub const __STDC_IEC_60559_BFP__: u32 = 201404;
pub const __STDC_IEC_559_COMPLEX__: u32 = 1;
pub const __STDC_IEC_60559_COMPLEX__: u32 = 201404;
pub const __STDC_ISO_10646__: u32 = 201706;
pub const __GNU_LIBRARY__: u32 = 6;
pub const __GLIBC__: u32 = 2;
pub const __GLIBC_MINOR__: u32 = 35;
pub const _SYS_CDEFS_H: u32 = 1;
pub const __glibc_c99_flexarr_available: u32 = 1;
pub const __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI: u32 = 0;
pub const __HAVE_GENERIC_SELECTION: u32 = 1;
pub const __GLIBC_USE_LIB_EXT2: u32 = 0;
pub const __GLIBC_USE_IEC_60559_BFP_EXT: u32 = 0;
pub const __GLIBC_USE_IEC_60559_BFP_EXT_C2X: u32 = 0;
pub const __GLIBC_USE_IEC_60559_EXT: u32 = 0;
pub const __GLIBC_USE_IEC_60559_FUNCS_EXT: u32 = 0;
pub const __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X: u32 = 0;
pub const __GLIBC_USE_IEC_60559_TYPES_EXT: u32 = 0;
pub const _BITS_TYPES_H: u32 = 1;
pub const _BITS_TYPESIZES_H: u32 = 1;
pub const __OFF_T_MATCHES_OFF64_T: u32 = 1;
pub const __INO_T_MATCHES_INO64_T: u32 = 1;
pub const __RLIM_T_MATCHES_RLIM64_T: u32 = 1;
pub const __STATFS_MATCHES_STATFS64: u32 = 1;
pub const __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64: u32 = 1;
pub const __FD_SETSIZE: u32 = 1024;
pub const _BITS_TIME64_H: u32 = 1;
pub const _BITS_WCHAR_H: u32 = 1;
pub const _BITS_STDINT_INTN_H: u32 = 1;
pub const _BITS_STDINT_UINTN_H: u32 = 1;
pub const INT8_MIN: i32 = -128;
pub const INT16_MIN: i32 = -32768;
pub const INT32_MIN: i32 = -2147483648;
pub const INT8_MAX: u32 = 127;
pub const INT16_MAX: u32 = 32767;
pub const INT32_MAX: u32 = 2147483647;
pub const UINT8_MAX: u32 = 255;
pub const UINT16_MAX: u32 = 65535;
pub const UINT32_MAX: u32 = 4294967295;
pub const INT_LEAST8_MIN: i32 = -128;
pub const INT_LEAST16_MIN: i32 = -32768;
pub const INT_LEAST32_MIN: i32 = -2147483648;
pub const INT_LEAST8_MAX: u32 = 127;
pub const INT_LEAST16_MAX: u32 = 32767;
pub const INT_LEAST32_MAX: u32 = 2147483647;
pub const UINT_LEAST8_MAX: u32 = 255;
pub const UINT_LEAST16_MAX: u32 = 65535;
pub const UINT_LEAST32_MAX: u32 = 4294967295;
pub const INT_FAST8_MIN: i32 = -128;
pub const INT_FAST16_MIN: i64 = -9223372036854775808;
pub const INT_FAST32_MIN: i64 = -9223372036854775808;
pub const INT_FAST8_MAX: u32 = 127;
pub const INT_FAST16_MAX: u64 = 9223372036854775807;
pub const INT_FAST32_MAX: u64 = 9223372036854775807;
pub const UINT_FAST8_MAX: u32 = 255;
pub const UINT_FAST16_MAX: i32 = -1;
pub const UINT_FAST32_MAX: i32 = -1;
pub const INTPTR_MIN: i64 = -9223372036854775808;
pub const INTPTR_MAX: u64 = 9223372036854775807;
pub const UINTPTR_MAX: i32 = -1;
pub const PTRDIFF_MIN: i64 = -9223372036854775808;
pub const PTRDIFF_MAX: u64 = 9223372036854775807;
pub const SIG_ATOMIC_MIN: i32 = -2147483648;
pub const SIG_ATOMIC_MAX: u32 = 2147483647;
pub const SIZE_MAX: i32 = -1;
pub const WINT_MIN: u32 = 0;
pub const WINT_MAX: u32 = 4294967295;
pub type __u_char = ::std::os::raw::c_uchar;
pub type __u_short = ::std::os::raw::c_ushort;
pub type __u_int = ::std::os::raw::c_uint;
pub type __u_long = ::std::os::raw::c_ulong;
pub type __int8_t = ::std::os::raw::c_schar;
pub type __uint8_t = ::std::os::raw::c_uchar;
pub type __int16_t = ::std::os::raw::c_short;
pub type __uint16_t = ::std::os::raw::c_ushort;
pub type __int32_t = ::std::os::raw::c_int;
pub type __uint32_t = ::std::os::raw::c_uint;
pub type __int64_t = ::std::os::raw::c_long;
pub type __uint64_t = ::std::os::raw::c_ulong;
pub type __int_least8_t = __int8_t;
pub type __uint_least8_t = __uint8_t;
pub type __int_least16_t = __int16_t;
pub type __uint_least16_t = __uint16_t;
pub type __int_least32_t = __int32_t;
pub type __uint_least32_t = __uint32_t;
pub type __int_least64_t = __int64_t;
pub type __uint_least64_t = __uint64_t;
pub type __quad_t = ::std::os::raw::c_long;
pub type __u_quad_t = ::std::os::raw::c_ulong;
pub type __intmax_t = ::std::os::raw::c_long;
pub type __uintmax_t = ::std::os::raw::c_ulong;
pub type __dev_t = ::std::os::raw::c_ulong;
pub type __uid_t = ::std::os::raw::c_uint;
pub type __gid_t = ::std::os::raw::c_uint;
pub type __ino_t = ::std::os::raw::c_ulong;
pub type __ino64_t = ::std::os::raw::c_ulong;
pub type __mode_t = ::std::os::raw::c_uint;
pub type __nlink_t = ::std::os::raw::c_ulong;
pub type __off_t = ::std::os::raw::c_long;
pub type __off64_t = ::std::os::raw::c_long;
pub type __pid_t = ::std::os::raw::c_int;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct __fsid_t {
pub __val: [::std::os::raw::c_int; 2usize],
}
#[test]
fn bindgen_test_layout___fsid_t() {
assert_eq!(
::std::mem::size_of::<__fsid_t>(),
8usize,
concat!("Size of: ", stringify!(__fsid_t))
);
assert_eq!(
::std::mem::align_of::<__fsid_t>(),
4usize,
concat!("Alignment of ", stringify!(__fsid_t))
);
fn test_field___val() {
assert_eq!(
unsafe {
let uninit = ::std::mem::MaybeUninit::<__fsid_t>::uninit();
let ptr = uninit.as_ptr();
::std::ptr::addr_of!((*ptr).__val) as usize - ptr as usize
},
0usize,
concat!(
"Offset of field: ",
stringify!(__fsid_t),
"::",
stringify!(__val)
)
);
}
test_field___val();
}
pub type __clock_t = ::std::os::raw::c_long;
pub type __rlim_t = ::std::os::raw::c_ulong;
pub type __rlim64_t = ::std::os::raw::c_ulong;
pub type __id_t = ::std::os::raw::c_uint;
pub type __time_t = ::std::os::raw::c_long;
pub type __useconds_t = ::std::os::raw::c_uint;
pub type __suseconds_t = ::std::os::raw::c_long;
pub type __suseconds64_t = ::std::os::raw::c_long;
pub type __daddr_t = ::std::os::raw::c_int;
pub type __key_t = ::std::os::raw::c_int;
pub type __clockid_t = ::std::os::raw::c_int;
pub type __timer_t = *mut ::std::os::raw::c_void;
pub type __blksize_t = ::std::os::raw::c_long;
pub type __blkcnt_t = ::std::os::raw::c_long;
pub type __blkcnt64_t = ::std::os::raw::c_long;
pub type __fsblkcnt_t = ::std::os::raw::c_ulong;
pub type __fsblkcnt64_t = ::std::os::raw::c_ulong;
pub type __fsfilcnt_t = ::std::os::raw::c_ulong;
pub type __fsfilcnt64_t = ::std::os::raw::c_ulong;
pub type __fsword_t = ::std::os::raw::c_long;
pub type __ssize_t = ::std::os::raw::c_long;
pub type __syscall_slong_t = ::std::os::raw::c_long;
pub type __syscall_ulong_t = ::std::os::raw::c_ulong;
pub type __loff_t = __off64_t;
pub type __caddr_t = *mut ::std::os::raw::c_char;
pub type __intptr_t = ::std::os::raw::c_long;
pub type __socklen_t = ::std::os::raw::c_uint;
pub type __sig_atomic_t = ::std::os::raw::c_int;
pub type int_least8_t = __int_least8_t;
pub type int_least16_t = __int_least16_t;
pub type int_least32_t = __int_least32_t;
pub type int_least64_t = __int_least64_t;
pub type uint_least8_t = __uint_least8_t;
pub type uint_least16_t = __uint_least16_t;
pub type uint_least32_t = __uint_least32_t;
pub type uint_least64_t = __uint_least64_t;
pub type int_fast8_t = ::std::os::raw::c_schar;
pub type int_fast16_t = ::std::os::raw::c_long;
pub type int_fast32_t = ::std::os::raw::c_long;
pub type int_fast64_t = ::std::os::raw::c_long;
pub type uint_fast8_t = ::std::os::raw::c_uchar;
pub type uint_fast16_t = ::std::os::raw::c_ulong;
pub type uint_fast32_t = ::std::os::raw::c_ulong;
pub type uint_fast64_t = ::std::os::raw::c_ulong;
pub type intmax_t = __intmax_t;
pub type uintmax_t = __uintmax_t;
pub type size_t = ::std::os::raw::c_ulong;
pub type wchar_t = ::std::os::raw::c_int;
#[repr(C)]
#[repr(align(16))]
#[derive(Debug, Copy, Clone)]
pub struct max_align_t {
pub __clang_max_align_nonce1: ::std::os::raw::c_longlong,
pub __bindgen_padding_0: u64,
pub __clang_max_align_nonce2: u128,
}
#[test]
fn bindgen_test_layout_max_align_t() {
assert_eq!(
::std::mem::size_of::<max_align_t>(),
32usize,
concat!("Size of: ", stringify!(max_align_t))
);
assert_eq!(
::std::mem::align_of::<max_align_t>(),
16usize,
concat!("Alignment of ", stringify!(max_align_t))
);
fn test_field___clang_max_align_nonce1() {
assert_eq!(
unsafe {
let uninit = ::std::mem::MaybeUninit::<max_align_t>::uninit();
let ptr = uninit.as_ptr();
::std::ptr::addr_of!((*ptr).__clang_max_align_nonce1) as usize - ptr as usize
},
0usize,
concat!(
"Offset of field: ",
stringify!(max_align_t),
"::",
stringify!(__clang_max_align_nonce1)
)
);
}
test_field___clang_max_align_nonce1();
fn test_field___clang_max_align_nonce2() {
assert_eq!(
unsafe {
let uninit = ::std::mem::MaybeUninit::<max_align_t>::uninit();
let ptr = uninit.as_ptr();
::std::ptr::addr_of!((*ptr).__clang_max_align_nonce2) as usize - ptr as usize
},
16usize,
concat!(
"Offset of field: ",
stringify!(max_align_t),
"::",
stringify!(__clang_max_align_nonce2)
)
);
}
test_field___clang_max_align_nonce2();
}
#[doc = " \\brief CPU device"]
pub const DLDeviceType_kDLCPU: DLDeviceType = 1;
#[doc = " \\brief CUDA GPU device"]
pub const DLDeviceType_kDLCUDA: DLDeviceType = 2;
#[doc = " \\brief Pinned CUDA CPU memory by cudaMallocHost"]
pub const DLDeviceType_kDLCUDAHost: DLDeviceType = 3;
#[doc = " \\brief OpenCL devices."]
pub const DLDeviceType_kDLOpenCL: DLDeviceType = 4;
#[doc = " \\brief Vulkan buffer for next generation graphics."]
pub const DLDeviceType_kDLVulkan: DLDeviceType = 7;
#[doc = " \\brief Metal for Apple GPU."]
pub const DLDeviceType_kDLMetal: DLDeviceType = 8;
#[doc = " \\brief Verilog simulator buffer"]
pub const DLDeviceType_kDLVPI: DLDeviceType = 9;
#[doc = " \\brief ROCm GPUs for AMD GPUs"]
pub const DLDeviceType_kDLROCM: DLDeviceType = 10;
#[doc = " \\brief Pinned ROCm CPU memory allocated by hipMallocHost"]
pub const DLDeviceType_kDLROCMHost: DLDeviceType = 11;
#[doc = " \\brief Reserved extension device type,"]
#[doc = " used for quickly test extension device"]
#[doc = " The semantics can differ depending on the implementation."]
pub const DLDeviceType_kDLExtDev: DLDeviceType = 12;
#[doc = " \\brief CUDA managed/unified memory allocated by cudaMallocManaged"]
pub const DLDeviceType_kDLCUDAManaged: DLDeviceType = 13;
#[doc = " \\brief Unified shared memory allocated on a oneAPI non-partititioned"]
#[doc = " device. Call to oneAPI runtime is required to determine the device"]
#[doc = " type, the USM allocation type and the sycl context it is bound to."]
#[doc = ""]
pub const DLDeviceType_kDLOneAPI: DLDeviceType = 14;
#[doc = " \\brief GPU support for next generation WebGPU standard."]
pub const DLDeviceType_kDLWebGPU: DLDeviceType = 15;
#[doc = " \\brief Qualcomm Hexagon DSP"]
pub const DLDeviceType_kDLHexagon: DLDeviceType = 16;
pub type DLDeviceType = ::std::os::raw::c_uint;
#[doc = " \\brief A Device for Tensor and operator."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct DLDevice {
#[doc = " \\brief The device type used in the device."]
pub device_type: DLDeviceType,
#[doc = " \\brief The device index."]
#[doc = " For vanilla CPU memory, pinned memory, or managed memory, this is set to 0."]
pub device_id: i32,
}
#[test]
fn bindgen_test_layout_DLDevice() {
assert_eq!(
::std::mem::size_of::<DLDevice>(),
8usize,
concat!("Size of: ", stringify!(DLDevice))
);
assert_eq!(
::std::mem::align_of::<DLDevice>(),
4usize,
concat!("Alignment of ", stringify!(DLDevice))
);
fn test_field_device_type() {
assert_eq!(
unsafe {
let uninit = ::std::mem::MaybeUninit::<DLDevice>::uninit();
let ptr = uninit.as_ptr();
::std::ptr::addr_of!((*ptr).device_type) as usize - ptr as usize
},
0usize,
concat!(
"Offset of field: ",
stringify!(DLDevice),
"::",
stringify!(device_type)
)
);
}
test_field_device_type();
fn test_field_device_id() {
assert_eq!(
unsafe {
let uninit = ::std::mem::MaybeUninit::<DLDevice>::uninit();
let ptr = uninit.as_ptr();
::std::ptr::addr_of!((*ptr).device_id) as usize - ptr as usize
},
4usize,
concat!(
"Offset of field: ",
stringify!(DLDevice),
"::",
stringify!(device_id)
)
);
}
test_field_device_id();
}
#[doc = " \\brief signed integer"]
pub const DLDataTypeCode_kDLInt: DLDataTypeCode = 0;
#[doc = " \\brief unsigned integer"]
pub const DLDataTypeCode_kDLUInt: DLDataTypeCode = 1;
#[doc = " \\brief IEEE floating point"]
pub const DLDataTypeCode_kDLFloat: DLDataTypeCode = 2;
#[doc = " \\brief Opaque handle type, reserved for testing purposes."]
#[doc = " Frameworks need to agree on the handle data type for the exchange to be well-defined."]
pub const DLDataTypeCode_kDLOpaqueHandle: DLDataTypeCode = 3;
#[doc = " \\brief bfloat16"]
pub const DLDataTypeCode_kDLBfloat: DLDataTypeCode = 4;
#[doc = " \\brief complex number"]
#[doc = " (C/C++/Python layout: compact struct per complex number)"]
pub const DLDataTypeCode_kDLComplex: DLDataTypeCode = 5;
#[doc = " \\brief boolean"]
pub const DLDataTypeCode_kDLBool: DLDataTypeCode = 6;
#[doc = " \\brief The type code options DLDataType."]
pub type DLDataTypeCode = ::std::os::raw::c_uint;
#[doc = " \\brief The data type the tensor can hold. The data type is assumed to follow the"]
#[doc = " native endian-ness. An explicit error message should be raised when attempting to"]
#[doc = " export an array with non-native endianness"]
#[doc = ""]
#[doc = " Examples"]
#[doc = " - float: type_code = 2, bits = 32, lanes = 1"]
#[doc = " - float4(vectorized 4 float): type_code = 2, bits = 32, lanes = 4"]
#[doc = " - int8: type_code = 0, bits = 8, lanes = 1"]
#[doc = " - std::complex<float>: type_code = 5, bits = 64, lanes = 1"]
#[doc = " - bool: type_code = 6, bits = 8, lanes = 1 (as per common array library convention, the underlying storage size of bool is 8 bits)"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct DLDataType {
#[doc = " \\brief Type code of base types."]
#[doc = " We keep it uint8_t instead of DLDataTypeCode for minimal memory"]
#[doc = " footprint, but the value should be one of DLDataTypeCode enum values."]
pub code: u8,
#[doc = " \\brief Number of bits, common choices are 8, 16, 32."]
pub bits: u8,
#[doc = " \\brief Number of lanes in the type, used for vector types."]
pub lanes: u16,
}
#[test]
fn bindgen_test_layout_DLDataType() {
assert_eq!(
::std::mem::size_of::<DLDataType>(),
4usize,
concat!("Size of: ", stringify!(DLDataType))
);
assert_eq!(
::std::mem::align_of::<DLDataType>(),
2usize,
concat!("Alignment of ", stringify!(DLDataType))
);
fn test_field_code() {
assert_eq!(
unsafe {
let uninit = ::std::mem::MaybeUninit::<DLDataType>::uninit();
let ptr = uninit.as_ptr();
::std::ptr::addr_of!((*ptr).code) as usize - ptr as usize
},
0usize,
concat!(
"Offset of field: ",
stringify!(DLDataType),
"::",
stringify!(code)
)
);
}
test_field_code();
fn test_field_bits() {
assert_eq!(
unsafe {
let uninit = ::std::mem::MaybeUninit::<DLDataType>::uninit();
let ptr = uninit.as_ptr();
::std::ptr::addr_of!((*ptr).bits) as usize - ptr as usize
},
1usize,
concat!(
"Offset of field: ",
stringify!(DLDataType),
"::",
stringify!(bits)
)
);
}
test_field_bits();
fn test_field_lanes() {
assert_eq!(
unsafe {
let uninit = ::std::mem::MaybeUninit::<DLDataType>::uninit();
let ptr = uninit.as_ptr();
::std::ptr::addr_of!((*ptr).lanes) as usize - ptr as usize
},
2usize,
concat!(
"Offset of field: ",
stringify!(DLDataType),
"::",
stringify!(lanes)
)
);
}
test_field_lanes();
}
#[doc = " \\brief Plain C Tensor object, does not manage memory."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct DLTensor {
#[doc = " \\brief The data pointer points to the allocated data. This will be CUDA"]
#[doc = " device pointer or cl_mem handle in OpenCL. It may be opaque on some device"]
#[doc = " types. This pointer is always aligned to 256 bytes as in CUDA. The"]
#[doc = " `byte_offset` field should be used to point to the beginning of the data."]
#[doc = ""]
#[doc = " Note that as of Nov 2021, multiply libraries (CuPy, PyTorch, TensorFlow,"]
#[doc = " TVM, perhaps others) do not adhere to this 256 byte aligment requirement"]
#[doc = " on CPU/CUDA/ROCm, and always use `byte_offset=0`. This must be fixed"]
#[doc = " (after which this note will be updated); at the moment it is recommended"]
#[doc = " to not rely on the data pointer being correctly aligned."]
#[doc = ""]
#[doc = " For given DLTensor, the size of memory required to store the contents of"]
#[doc = " data is calculated as follows:"]
#[doc = ""]
#[doc = " \\code{.c}"]
#[doc = " static inline size_t GetDataSize(const DLTensor* t) {"]
#[doc = " size_t size = 1;"]
#[doc = " for (tvm_index_t i = 0; i < t->ndim; ++i) {"]
#[doc = " size *= t->shape[i];"]
#[doc = " }"]
#[doc = " size *= (t->dtype.bits * t->dtype.lanes + 7) / 8;"]
#[doc = " return size;"]
#[doc = " }"]
#[doc = " \\endcode"]
pub data: *mut ::std::os::raw::c_void,
#[doc = " \\brief The device of the tensor"]
pub device: DLDevice,
#[doc = " \\brief Number of dimensions"]
pub ndim: i32,
#[doc = " \\brief The data type of the pointer"]
pub dtype: DLDataType,
#[doc = " \\brief The shape of the tensor"]
pub shape: *mut i64,
#[doc = " \\brief strides of the tensor (in number of elements, not bytes)"]
#[doc = " can be NULL, indicating tensor is compact and row-majored."]
pub strides: *mut i64,
#[doc = " \\brief The offset in bytes to the beginning pointer to data"]
pub byte_offset: u64,
}
#[test]
fn bindgen_test_layout_DLTensor() {
assert_eq!(
::std::mem::size_of::<DLTensor>(),
48usize,
concat!("Size of: ", stringify!(DLTensor))
);
assert_eq!(
::std::mem::align_of::<DLTensor>(),
8usize,
concat!("Alignment of ", stringify!(DLTensor))
);
fn test_field_data() {
assert_eq!(
unsafe {
let uninit = ::std::mem::MaybeUninit::<DLTensor>::uninit();
let ptr = uninit.as_ptr();
::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize
},
0usize,
concat!(
"Offset of field: ",
stringify!(DLTensor),
"::",
stringify!(data)
)
);
}
test_field_data();
fn test_field_device() {
assert_eq!(
unsafe {
let uninit = ::std::mem::MaybeUninit::<DLTensor>::uninit();
let ptr = uninit.as_ptr();
::std::ptr::addr_of!((*ptr).device) as usize - ptr as usize
},
8usize,
concat!(
"Offset of field: ",
stringify!(DLTensor),
"::",
stringify!(device)
)
);
}
test_field_device();
fn test_field_ndim() {
assert_eq!(
unsafe {
let uninit = ::std::mem::MaybeUninit::<DLTensor>::uninit();
let ptr = uninit.as_ptr();
::std::ptr::addr_of!((*ptr).ndim) as usize - ptr as usize
},
16usize,
concat!(
"Offset of field: ",
stringify!(DLTensor),
"::",
stringify!(ndim)
)
);
}
test_field_ndim();
fn test_field_dtype() {
assert_eq!(
unsafe {
let uninit = ::std::mem::MaybeUninit::<DLTensor>::uninit();
let ptr = uninit.as_ptr();
::std::ptr::addr_of!((*ptr).dtype) as usize - ptr as usize
},
20usize,
concat!(
"Offset of field: ",
stringify!(DLTensor),
"::",
stringify!(dtype)
)
);
}
test_field_dtype();
fn test_field_shape() {
assert_eq!(
unsafe {
let uninit = ::std::mem::MaybeUninit::<DLTensor>::uninit();
let ptr = uninit.as_ptr();
::std::ptr::addr_of!((*ptr).shape) as usize - ptr as usize
},
24usize,
concat!(
"Offset of field: ",
stringify!(DLTensor),
"::",
stringify!(shape)
)
);
}
test_field_shape();
fn test_field_strides() {
assert_eq!(
unsafe {
let uninit = ::std::mem::MaybeUninit::<DLTensor>::uninit();
let ptr = uninit.as_ptr();
::std::ptr::addr_of!((*ptr).strides) as usize - ptr as usize
},
32usize,
concat!(
"Offset of field: ",
stringify!(DLTensor),
"::",
stringify!(strides)
)
);
}
test_field_strides();
fn test_field_byte_offset() {
assert_eq!(
unsafe {
let uninit = ::std::mem::MaybeUninit::<DLTensor>::uninit();
let ptr = uninit.as_ptr();
::std::ptr::addr_of!((*ptr).byte_offset) as usize - ptr as usize
},
40usize,
concat!(
"Offset of field: ",
stringify!(DLTensor),
"::",
stringify!(byte_offset)
)
);
}
test_field_byte_offset();
}
#[doc = " \\brief C Tensor object, manage memory of DLTensor. This data structure is"]
#[doc = " intended to facilitate the borrowing of DLTensor by another framework. It is"]
#[doc = " not meant to transfer the tensor. When the borrowing framework doesn't need"]
#[doc = " the tensor, it should call the deleter to notify the host that the resource"]
#[doc = " is no longer needed."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct DLManagedTensor {
#[doc = " \\brief DLTensor which is being memory managed"]
pub dl_tensor: DLTensor,
#[doc = " \\brief the context of the original host framework of DLManagedTensor in"]
#[doc = " which DLManagedTensor is used in the framework. It can also be NULL."]
pub manager_ctx: *mut ::std::os::raw::c_void,
#[doc = " \\brief Destructor signature void (*)(void*) - this should be called"]
#[doc = " to destruct manager_ctx which holds the DLManagedTensor. It can be NULL"]
#[doc = " if there is no way for the caller to provide a reasonable destructor."]
#[doc = " The destructors deletes the argument self as well."]
pub deleter: ::std::option::Option<unsafe extern "C" fn(self_: *mut DLManagedTensor)>,
}
#[test]
fn bindgen_test_layout_DLManagedTensor() {
assert_eq!(
::std::mem::size_of::<DLManagedTensor>(),
64usize,
concat!("Size of: ", stringify!(DLManagedTensor))
);
assert_eq!(
::std::mem::align_of::<DLManagedTensor>(),
8usize,
concat!("Alignment of ", stringify!(DLManagedTensor))
);
fn test_field_dl_tensor() {
assert_eq!(
unsafe {
let uninit = ::std::mem::MaybeUninit::<DLManagedTensor>::uninit();
let ptr = uninit.as_ptr();
::std::ptr::addr_of!((*ptr).dl_tensor) as usize - ptr as usize
},
0usize,
concat!(
"Offset of field: ",
stringify!(DLManagedTensor),
"::",
stringify!(dl_tensor)
)
);
}
test_field_dl_tensor();
fn test_field_manager_ctx() {
assert_eq!(
unsafe {
let uninit = ::std::mem::MaybeUninit::<DLManagedTensor>::uninit();
let ptr = uninit.as_ptr();
::std::ptr::addr_of!((*ptr).manager_ctx) as usize - ptr as usize
},
48usize,
concat!(
"Offset of field: ",
stringify!(DLManagedTensor),
"::",
stringify!(manager_ctx)
)
);
}
test_field_manager_ctx();
fn test_field_deleter() {
assert_eq!(
unsafe {
let uninit = ::std::mem::MaybeUninit::<DLManagedTensor>::uninit();
let ptr = uninit.as_ptr();
::std::ptr::addr_of!((*ptr).deleter) as usize - ptr as usize
},
56usize,
concat!(
"Offset of field: ",
stringify!(DLManagedTensor),
"::",
stringify!(deleter)
)
);
}
test_field_deleter();
}