diff options
Diffstat (limited to 'gcc/src/winapi.rs')
-rw-r--r-- | gcc/src/winapi.rs | 214 |
1 files changed, 0 insertions, 214 deletions
diff --git a/gcc/src/winapi.rs b/gcc/src/winapi.rs deleted file mode 100644 index 3fb0408..0000000 --- a/gcc/src/winapi.rs +++ /dev/null @@ -1,214 +0,0 @@ -// Copyright © 2015-2017 winapi-rs developers -// Licensed under the Apache License, Version 2.0 -// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option. -// All files in the project carrying such notice may not be copied, modified, or distributed -// except according to those terms. - -#![allow(bad_style)] - -use std::os::raw; - -pub type wchar_t = u16; - -pub type UINT = raw::c_uint; -pub type LPUNKNOWN = *mut IUnknown; -pub type REFIID = *const IID; -pub type IID = GUID; -pub type REFCLSID = *const IID; -pub type PVOID = *mut raw::c_void; -pub type USHORT = raw::c_ushort; -pub type ULONG = raw::c_ulong; -pub type LONG = raw::c_long; -pub type DWORD = u32; -pub type LPVOID = *mut raw::c_void; -pub type HRESULT = raw::c_long; -pub type LPFILETIME = *mut FILETIME; -pub type BSTR = *mut OLECHAR; -pub type OLECHAR = WCHAR; -pub type WCHAR = wchar_t; -pub type LPCOLESTR = *const OLECHAR; -pub type LCID = DWORD; -pub type LPCWSTR = *const WCHAR; -pub type PULONGLONG = *mut ULONGLONG; -pub type ULONGLONG = u64; - -pub const S_OK: HRESULT = 0; -pub const S_FALSE: HRESULT = 1; -pub const COINIT_MULTITHREADED: u32 = 0x0; - -pub type CLSCTX = u32; - -pub const CLSCTX_INPROC_SERVER: CLSCTX = 0x1; -pub const CLSCTX_INPROC_HANDLER: CLSCTX = 0x2; -pub const CLSCTX_LOCAL_SERVER: CLSCTX = 0x4; -pub const CLSCTX_REMOTE_SERVER: CLSCTX = 0x10; - -pub const CLSCTX_ALL: CLSCTX = CLSCTX_INPROC_SERVER | - CLSCTX_INPROC_HANDLER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER; - -#[repr(C)] -#[derive(Copy, Clone)] -pub struct GUID { - pub Data1: raw::c_ulong, - pub Data2: raw::c_ushort, - pub Data3: raw::c_ushort, - pub Data4: [raw::c_uchar; 8], -} - -#[repr(C)] -#[derive(Copy, Clone)] -pub struct FILETIME { - pub dwLowDateTime: DWORD, - pub dwHighDateTime: DWORD, -} - -pub trait Interface { - fn uuidof() -> GUID; -} - -#[link(name = "ole32")] -#[link(name = "oleaut32")] -extern { } - -extern "system" { - pub fn CoInitializeEx(pvReserved: LPVOID, dwCoInit: DWORD) -> HRESULT; - pub fn CoCreateInstance(rclsid: REFCLSID, pUnkOuter: LPUNKNOWN, - dwClsContext: DWORD, riid: REFIID, - ppv: *mut LPVOID) -> HRESULT; - pub fn SysFreeString(bstrString: BSTR); - pub fn SysStringLen(pbstr: BSTR) -> UINT; -} - -#[repr(C)] -#[derive(Copy, Clone)] -pub struct SAFEARRAYBOUND { - pub cElements: ULONG, - pub lLbound: LONG, -} - -#[repr(C)] -#[derive(Copy, Clone)] -pub struct SAFEARRAY { - pub cDims: USHORT, - pub fFeatures: USHORT, - pub cbElements: ULONG, - pub cLocks: ULONG, - pub pvData: PVOID, - pub rgsabound: [SAFEARRAYBOUND; 1], -} - -pub type LPSAFEARRAY = *mut SAFEARRAY; - -macro_rules! DEFINE_GUID { - ( - $name:ident, $l:expr, $w1:expr, $w2:expr, - $b1:expr, $b2:expr, $b3:expr, $b4:expr, $b5:expr, $b6:expr, $b7:expr, $b8:expr - ) => { - pub const $name: $crate::winapi::GUID = $crate::winapi::GUID { - Data1: $l, - Data2: $w1, - Data3: $w2, - Data4: [$b1, $b2, $b3, $b4, $b5, $b6, $b7, $b8], - }; - } -} - -macro_rules! RIDL { - (#[uuid($($uuid:expr),+)] - interface $interface:ident ($vtbl:ident) {$( - fn $method:ident($($p:ident : $t:ty,)*) -> $rtr:ty, - )+}) => ( - #[repr(C)] - pub struct $vtbl { - $(pub $method: unsafe extern "system" fn( - This: *mut $interface, - $($p: $t),* - ) -> $rtr,)+ - } - #[repr(C)] - pub struct $interface { - pub lpVtbl: *const $vtbl, - } - RIDL!{@impl $interface {$(fn $method($($p: $t,)*) -> $rtr,)+}} - RIDL!{@uuid $interface $($uuid),+} - ); - (#[uuid($($uuid:expr),+)] - interface $interface:ident ($vtbl:ident) : $pinterface:ident ($pvtbl:ident) { - }) => ( - #[repr(C)] - pub struct $vtbl { - pub parent: $pvtbl, - } - #[repr(C)] - pub struct $interface { - pub lpVtbl: *const $vtbl, - } - RIDL!{@deref $interface $pinterface} - RIDL!{@uuid $interface $($uuid),+} - ); - (#[uuid($($uuid:expr),+)] - interface $interface:ident ($vtbl:ident) : $pinterface:ident ($pvtbl:ident) {$( - fn $method:ident($($p:ident : $t:ty,)*) -> $rtr:ty, - )+}) => ( - #[repr(C)] - pub struct $vtbl { - pub parent: $pvtbl, - $(pub $method: unsafe extern "system" fn( - This: *mut $interface, - $($p: $t,)* - ) -> $rtr,)+ - } - #[repr(C)] - pub struct $interface { - pub lpVtbl: *const $vtbl, - } - RIDL!{@impl $interface {$(fn $method($($p: $t,)*) -> $rtr,)+}} - RIDL!{@deref $interface $pinterface} - RIDL!{@uuid $interface $($uuid),+} - ); - (@deref $interface:ident $pinterface:ident) => ( - impl ::std::ops::Deref for $interface { - type Target = $pinterface; - #[inline] - fn deref(&self) -> &$pinterface { - unsafe { &*(self as *const $interface as *const $pinterface) } - } - } - ); - (@impl $interface:ident {$( - fn $method:ident($($p:ident : $t:ty,)*) -> $rtr:ty, - )+}) => ( - impl $interface { - $(#[inline] pub unsafe fn $method(&self, $($p: $t,)*) -> $rtr { - ((*self.lpVtbl).$method)(self as *const _ as *mut _, $($p,)*) - })+ - } - ); - (@uuid $interface:ident - $l:expr, $w1:expr, $w2:expr, - $b1:expr, $b2:expr, $b3:expr, $b4:expr, $b5:expr, $b6:expr, $b7:expr, $b8:expr - ) => ( - impl $crate::winapi::Interface for $interface { - #[inline] - fn uuidof() -> $crate::winapi::GUID { - $crate::winapi::GUID { - Data1: $l, - Data2: $w1, - Data3: $w2, - Data4: [$b1, $b2, $b3, $b4, $b5, $b6, $b7, $b8], - } - } - } - ); -} - -RIDL!{#[uuid(0x00000000, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)] -interface IUnknown(IUnknownVtbl) { - fn QueryInterface( - riid: REFIID, - ppvObject: *mut *mut raw::c_void, - ) -> HRESULT, - fn AddRef() -> ULONG, - fn Release() -> ULONG, -}} |