]> git.lizzy.rs Git - rust.git/blob - src/test/run-pass/x86stdcall2.rs
395aca5f8edb88a6275bff3468c4678cae0c00fc
[rust.git] / src / test / run-pass / x86stdcall2.rs
1 // Copyright 2012 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution and at
3 // http://rust-lang.org/COPYRIGHT.
4 //
5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 // option. This file may not be copied, modified, or distributed
9 // except according to those terms.
10
11 pub type HANDLE = u32;
12 pub type DWORD = u32;
13 pub type SIZE_T = u32;
14 pub type LPVOID = uint;
15 pub type BOOL = u8;
16
17 #[cfg(target_os = "win32")]
18 mod kernel32 {
19     use super::{HANDLE, DWORD, SIZE_T, LPVOID, BOOL};
20
21     #[abi = "stdcall"]
22     extern "stdcall" {
23         pub fn GetProcessHeap() -> HANDLE;
24         pub fn HeapAlloc(hHeap: HANDLE, dwFlags: DWORD, dwBytes: SIZE_T)
25                       -> LPVOID;
26         pub fn HeapFree(hHeap: HANDLE, dwFlags: DWORD, lpMem: LPVOID) -> BOOL;
27     }
28 }
29
30
31 #[cfg(target_os = "win32")]
32 pub fn main() {
33     let heap = unsafe { kernel32::GetProcessHeap() };
34     let mem = unsafe { kernel32::HeapAlloc(heap, 0u32, 100u32) };
35     assert!(mem != 0u);
36     let res = unsafe { kernel32::HeapFree(heap, 0u32, mem) };
37     assert!(res != 0u8);
38 }
39
40 #[cfg(target_os = "macos")]
41 #[cfg(target_os = "linux")]
42 #[cfg(target_os = "freebsd")]
43 #[cfg(target_os = "android")]
44 pub fn main() { }