|
1 /* This Source Code Form is subject to the terms of the Mozilla Public |
|
2 * License, v. 2.0. If a copy of the MPL was not distributed with this |
|
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
|
4 |
|
5 /** |
|
6 * Test pararameter passing and argument conversion. |
|
7 * |
|
8 * Each test method returns the value in 'b', and copies 'a' into 'b'. This lets |
|
9 * us test return values, in params, and inout params (out params should be |
|
10 * covered by the intersection of return values and inout). |
|
11 */ |
|
12 |
|
13 #include "nsISupports.idl" |
|
14 |
|
15 interface nsIXPCTestInterfaceA; |
|
16 interface nsIXPCTestInterfaceB; |
|
17 |
|
18 [scriptable, uuid(fe2b7433-ac3b-49ef-9344-b67228bfdd46)] |
|
19 interface nsIXPCTestParams : nsISupports { |
|
20 |
|
21 // These types correspond to the ones in typelib.py |
|
22 boolean testBoolean(in boolean a, inout boolean b); |
|
23 octet testOctet(in octet a, inout octet b); |
|
24 short testShort(in short a, inout short b); |
|
25 long testLong(in long a, inout long b); |
|
26 long long testLongLong(in long long a, inout long long b); |
|
27 unsigned short testUnsignedShort(in unsigned short a, inout unsigned short b); |
|
28 unsigned long testUnsignedLong(in unsigned long a, inout unsigned long b); |
|
29 unsigned long long testUnsignedLongLong(in unsigned long long a, inout unsigned long long b); |
|
30 float testFloat(in float a, inout float b); |
|
31 double testDouble(in double a, inout float b); |
|
32 char testChar(in char a, inout char b); |
|
33 string testString(in string a, inout string b); |
|
34 wchar testWchar(in wchar a, inout wchar b); |
|
35 wstring testWstring(in wstring a, inout wstring b); |
|
36 DOMString testDOMString(in DOMString a, inout DOMString b); |
|
37 AString testAString(in AString a, inout AString b); |
|
38 AUTF8String testAUTF8String(in AUTF8String a, inout AUTF8String b); |
|
39 ACString testACString(in ACString a, inout ACString b); |
|
40 jsval testJsval(in jsval a, inout jsval b); |
|
41 |
|
42 // |
|
43 // Dependent parameters use the same types as above, but are handled much differently. |
|
44 // |
|
45 |
|
46 // Test arrays. |
|
47 void testShortArray(in unsigned long aLength, [array, size_is(aLength)] in short a, |
|
48 inout unsigned long bLength, [array, size_is(bLength)] inout short b, |
|
49 out unsigned long rvLength, [retval, array, size_is(rvLength)] out short rv); |
|
50 void testDoubleArray(in unsigned long aLength, [array, size_is(aLength)] in double a, |
|
51 inout unsigned long bLength, [array, size_is(bLength)] inout double b, |
|
52 out unsigned long rvLength, [retval, array, size_is(rvLength)] out double rv); |
|
53 void testStringArray(in unsigned long aLength, [array, size_is(aLength)] in string a, |
|
54 inout unsigned long bLength, [array, size_is(bLength)] inout string b, |
|
55 out unsigned long rvLength, [retval, array, size_is(rvLength)] out string rv); |
|
56 void testWstringArray(in unsigned long aLength, [array, size_is(aLength)] in wstring a, |
|
57 inout unsigned long bLength, [array, size_is(bLength)] inout wstring b, |
|
58 out unsigned long rvLength, [retval, array, size_is(rvLength)] out wstring rv); |
|
59 void testInterfaceArray(in unsigned long aLength, [array, size_is(aLength)] in nsIXPCTestInterfaceA a, |
|
60 inout unsigned long bLength, [array, size_is(bLength)] inout nsIXPCTestInterfaceA b, |
|
61 out unsigned long rvLength, [retval, array, size_is(rvLength)] out nsIXPCTestInterfaceA rv); |
|
62 |
|
63 // Test sized strings. |
|
64 void testSizedString(in unsigned long aLength, [size_is(aLength)] in string a, |
|
65 inout unsigned long bLength, [size_is(bLength)] inout string b, |
|
66 out unsigned long rvLength, [retval, size_is(rvLength)] out string rv); |
|
67 void testSizedWstring(in unsigned long aLength, [size_is(aLength)] in wstring a, |
|
68 inout unsigned long bLength, [size_is(bLength)] inout wstring b, |
|
69 out unsigned long rvLength, [retval, size_is(rvLength)] out wstring rv); |
|
70 |
|
71 // Test iid_is. |
|
72 void testInterfaceIs(in nsIIDPtr aIID, [iid_is(aIID)] in nsQIResult a, |
|
73 inout nsIIDPtr bIID, [iid_is(bIID)] inout nsQIResult b, |
|
74 out nsIIDPtr rvIID, [retval, iid_is(rvIID)] out nsQIResult rv); |
|
75 |
|
76 // Test arrays of iid_is. According to khuey we don't use it for anything |
|
77 // in mozilla-central, but calendar stuff depends on it. |
|
78 void testInterfaceIsArray(in unsigned long aLength, in nsIIDPtr aIID, |
|
79 [array, size_is(aLength), iid_is(aIID)] in nsQIResult a, |
|
80 inout unsigned long bLength, inout nsIIDPtr bIID, |
|
81 [array, size_is(bLength), iid_is(bIID)] inout nsQIResult b, |
|
82 out unsigned long rvLength, out nsIIDPtr rvIID, |
|
83 [retval, array, size_is(rvLength), iid_is(rvIID)] out nsQIResult rv); |
|
84 }; |