@@ -9,59 +9,59 @@ pub const E_POINTER: HRESULT = HRESULT(0x80004003_u32 as _);
9
9
10
10
#[ interface( "09428a59-5b40-4e4c-9175-e7a78514316d" ) ]
11
11
unsafe trait ITest : IUnknown {
12
- // TODO: compile error if param type is not Ref/RefMut and is not Copy
13
-
14
- unsafe fn usize ( & self , input : usize , output : RefMut < usize > ) -> HRESULT ;
15
- unsafe fn hstring ( & self , input : Ref < HSTRING > , output : RefMut < HSTRING > ) -> HRESULT ;
16
- unsafe fn interface ( & self , input : Ref < ITest > , output : RefMut < ITest > ) -> HRESULT ;
17
- unsafe fn required_input ( & self , input : Ref < ITest > , output : RefMut < ITest > ) -> HRESULT ;
18
- unsafe fn optional_output ( & self , input : Ref < ITest > , output : RefMut < ITest > ) -> HRESULT ;
19
-
20
- unsafe fn result_usize ( & self , input : usize , output : RefMut < usize > ) -> Result < ( ) > ;
21
- unsafe fn result_hstring ( & self , input : Ref < HSTRING > , output : RefMut < HSTRING > ) -> Result < ( ) > ;
22
- unsafe fn result_interface ( & self , input : Ref < ITest > , output : RefMut < ITest > ) -> Result < ( ) > ;
23
- unsafe fn result_required_input ( & self , input : Ref < ITest > , output : RefMut < ITest > ) -> Result < ( ) > ;
12
+ // TODO: compile error if param type is not Ref/OutRef and is not Copy
13
+
14
+ unsafe fn usize ( & self , input : usize , output : OutRef < usize > ) -> HRESULT ;
15
+ unsafe fn hstring ( & self , input : Ref < HSTRING > , output : OutRef < HSTRING > ) -> HRESULT ;
16
+ unsafe fn interface ( & self , input : Ref < ITest > , output : OutRef < ITest > ) -> HRESULT ;
17
+ unsafe fn required_input ( & self , input : Ref < ITest > , output : OutRef < ITest > ) -> HRESULT ;
18
+ unsafe fn optional_output ( & self , input : Ref < ITest > , output : OutRef < ITest > ) -> HRESULT ;
19
+
20
+ unsafe fn result_usize ( & self , input : usize , output : OutRef < usize > ) -> Result < ( ) > ;
21
+ unsafe fn result_hstring ( & self , input : Ref < HSTRING > , output : OutRef < HSTRING > ) -> Result < ( ) > ;
22
+ unsafe fn result_interface ( & self , input : Ref < ITest > , output : OutRef < ITest > ) -> Result < ( ) > ;
23
+ unsafe fn result_required_input ( & self , input : Ref < ITest > , output : OutRef < ITest > ) -> Result < ( ) > ;
24
24
}
25
25
26
26
#[ implement( ITest ) ]
27
27
struct Test ;
28
28
29
29
impl ITest_Impl for Test {
30
- unsafe fn usize ( & self , input : usize , output : RefMut < usize > ) -> HRESULT {
30
+ unsafe fn usize ( & self , input : usize , output : OutRef < usize > ) -> HRESULT {
31
31
output. write ( input) . into ( )
32
32
}
33
- unsafe fn hstring ( & self , input : Ref < HSTRING > , output : RefMut < HSTRING > ) -> HRESULT {
33
+ unsafe fn hstring ( & self , input : Ref < HSTRING > , output : OutRef < HSTRING > ) -> HRESULT {
34
34
output. write ( input. clone ( ) ) . into ( )
35
35
}
36
- unsafe fn interface ( & self , input : Ref < ITest > , output : RefMut < ITest > ) -> HRESULT {
36
+ unsafe fn interface ( & self , input : Ref < ITest > , output : OutRef < ITest > ) -> HRESULT {
37
37
output. write ( input. clone ( ) ) . into ( )
38
38
}
39
- unsafe fn required_input ( & self , input : Ref < ITest > , output : RefMut < ITest > ) -> HRESULT {
39
+ unsafe fn required_input ( & self , input : Ref < ITest > , output : OutRef < ITest > ) -> HRESULT {
40
40
if input. is_none ( ) {
41
41
E_INVALIDARG
42
42
} else {
43
43
self . interface ( input, output)
44
44
}
45
45
}
46
46
47
- unsafe fn optional_output ( & self , input : Ref < ITest > , output : RefMut < ITest > ) -> HRESULT {
47
+ unsafe fn optional_output ( & self , input : Ref < ITest > , output : OutRef < ITest > ) -> HRESULT {
48
48
if output. is_null ( ) {
49
49
S_FALSE
50
50
} else {
51
51
self . interface ( input, output)
52
52
}
53
53
}
54
54
55
- unsafe fn result_usize ( & self , input : usize , output : RefMut < usize > ) -> Result < ( ) > {
55
+ unsafe fn result_usize ( & self , input : usize , output : OutRef < usize > ) -> Result < ( ) > {
56
56
output. write ( input)
57
57
}
58
- unsafe fn result_hstring ( & self , input : Ref < HSTRING > , output : RefMut < HSTRING > ) -> Result < ( ) > {
58
+ unsafe fn result_hstring ( & self , input : Ref < HSTRING > , output : OutRef < HSTRING > ) -> Result < ( ) > {
59
59
output. write ( input. clone ( ) )
60
60
}
61
- unsafe fn result_interface ( & self , input : Ref < ITest > , output : RefMut < ITest > ) -> Result < ( ) > {
61
+ unsafe fn result_interface ( & self , input : Ref < ITest > , output : OutRef < ITest > ) -> Result < ( ) > {
62
62
output. write ( input. clone ( ) )
63
63
}
64
- unsafe fn result_required_input ( & self , input : Ref < ITest > , output : RefMut < ITest > ) -> Result < ( ) > {
64
+ unsafe fn result_required_input ( & self , input : Ref < ITest > , output : OutRef < ITest > ) -> Result < ( ) > {
65
65
if input. is_none ( ) {
66
66
E_INVALIDARG . ok ( )
67
67
} else {
0 commit comments