4 Copyright (C) Tim Potter 2003
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
22 uuid(60a15ec5-4de8-11d7-a637-005056a20182),
24 /* uuid("e3514235-4b06-11d1-ab04-00c04fc2dcd2"),
26 */ pointer_default(unique)
30 #define unistr [string] wchar_t *
35 // Add one to an integer
40 // Echo an array of bytes back at the caller
43 [in] [size_is(len)] char in_data[],
44 [out] [size_is(len)] char out_data[]
46 // Sink data to the server
49 [in] [size_is(len)] char in_data[]
51 // Source data from server
54 [out] [size_is(len)] char out_data[]
57 const long myconstant = 42;
66 /* test some alignment issues */
99 [case(1)] echo_info1 info1;
100 [case(2)] echo_info2 info2;
101 [case(3)] echo_info3 info3;
102 [case(4)] echo_info4 info4;
103 [case(5)] echo_info5 info5;
104 [case(6)] echo_info6 info6;
105 [case(7)] echo_info7 info7;
110 [out,switch_is(level)] echo_Info **info
122 typedef [v1_enum] enum {
133 [case(ECHO_ENUM1)] Enum1 e1;
134 [case(ECHO_ENUM2)] Enum2 e2;
138 [in,out,ref] Enum1 *foo1,
139 [in,out,ref] Enum2 *foo2,
140 [in,out,ref,switch_is(*foo1)] Enum3 *foo3
145 [size_is(x)] uint16 surrounding[*];
148 void TestSurrounding(
149 [in,out,ref] Surrounding *data
152 uint16 TestDoublePointer([in,ref] uint16 ***data);
154 typedef pipe byte BYTE_PIPE;
158 [in,ref] BYTE_PIPE *in_pipe
161 long TestBytePipeOut(
163 [out,ref] BYTE_PIPE *out_pipe
166 long TestBytePipeInOut(
168 [in,out,ref] BYTE_PIPE *in_out_pipe