#![allow(non_snake_case)]
use core::ffi::c_void;
use crate::os::windows::types::{LONG, VARTYPE, WORD};
#[repr(C)]
#[derive(Copy, Clone)]
pub union VariantData {
pub llVal: i64,
pub lVal: LONG,
pub bVal: u8,
pub iVal: i16,
pub fltVal: f32,
pub dblVal: f64,
pub boolVal: i16,
pub scode: i32,
pub cyVal: i64,
pub date: f64,
pub bstrVal: *mut u16,
pub punkVal: *mut c_void,
pub pdispVal: *mut c_void,
pub parray: *mut SAFEARRAY,
pub byref: *mut c_void,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct VARIANT {
pub vt: VARTYPE,
pub w_reserved1: WORD,
pub w_reserved2: WORD,
pub w_reserved3: WORD,
pub data: VariantData,
}
#[repr(C)]
#[derive(Debug, Clone, Copy)]
pub struct SAFEARRAYBOUND {
pub cElements: u32,
pub lLbound: i32,
}
#[repr(C)]
pub struct SAFEARRAY {
pub cDims: u16,
pub fFeatures: u16,
pub cbElements: u32,
pub cLocks: u32,
pub pvData: *mut u8,
pub rgsabound: [SAFEARRAYBOUND; 1],
}