summaryrefslogtreecommitdiffstats
path: root/vendor/core-foundation/tests/use_macro_outside_crate.rs
blob: ff1c17d4ce4cf113762d2e6554186c282e415cf2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#[macro_use]
extern crate core_foundation;

use core_foundation::base::{CFComparisonResult, TCFType};
use std::os::raw::c_void;

// sys equivalent stuff that must be declared

#[repr(C)]
pub struct __CFFooBar(c_void);

pub type CFFooBarRef = *const __CFFooBar;

extern "C" {
    pub fn CFFooBarGetTypeID() -> core_foundation::base::CFTypeID;
    pub fn fake_compare(
        this: CFFooBarRef,
        other: CFFooBarRef,
        context: *mut c_void,
    ) -> CFComparisonResult;
}

// Try to use the macros outside of the crate

declare_TCFType!(CFFooBar, CFFooBarRef);
impl_TCFType!(CFFooBar, CFFooBarRef, CFFooBarGetTypeID);
impl_CFTypeDescription!(CFFooBar);
impl_CFComparison!(CFFooBar, fake_compare);