rpcrt4: Fix build of test on Solaris by renaming a variable.
[wine] / dlls / rpcrt4 / tests / server.idl
1 /*
2  * A simple interface to test the RPC server.
3  *
4  * Copyright (C) Google 2007 (Dan Hipschman)
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library 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 GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19  */
20
21 #include "server_defines.h"
22
23 typedef struct tag_vector
24 {
25   int x;
26   int y;
27   int z;
28 } vector_t;
29
30 [
31   uuid(00000000-4114-0704-2301-000000000000),
32   implicit_handle(handle_t IServer_IfHandle)
33 ]
34 interface IServer
35 {
36   typedef struct
37   {
38     int *pi;
39     int **ppi;
40     int ***pppi;
41   } pints_t;
42
43   typedef struct
44   {
45     char *pc;
46     short *ps;
47     long *pl;
48     float *pf;
49     double *pd;
50   } ptypes_t;
51
52   typedef struct
53   {
54     vector_t *pu;
55     vector_t **pv;
56   } pvectors_t;
57
58   typedef struct
59   {
60     [switch_is(s)] union
61     {
62       [case(SUN_I)] int i;
63       [case(SUN_F1, SUN_F2)] float f;
64       [case(SUN_PI)] int *pi;
65     } u;
66
67     int s;
68   } sun_t;
69
70   int int_return(void);
71   int square(int x);
72   int sum(int x, int y);
73   void square_out(int x, [out] int *y);
74   void square_ref([in, out] int *x);
75   int str_length([string] const char *s);
76   int dot_self(vector_t *v);
77   double square_half(double x, [out] double *y);
78   float square_half_float(float x, [out] float *y);
79   long square_half_long(long x, [out] long *y);
80   int sum_fixed_array(int a[5]);
81   int pints_sum(pints_t *pints);
82   double ptypes_sum(ptypes_t *ptypes);
83   int dot_pvectors(pvectors_t *pvectors);
84
85   /* don't use this anywhere except in sp_t */
86   typedef struct
87   {
88     int x;
89   } sp_inner_t;
90
91   typedef struct
92   {
93     int x;
94     sp_inner_t *s;
95   } sp_t;
96
97   int sum_sp(sp_t *sp);
98   double square_sun(sun_t *su);
99
100   typedef struct test_list
101   {
102     int t;
103     [switch_is(t)] union
104     {
105       [case(TL_NULL)] int x;  /* end of list */
106       [case(TL_LIST)] struct test_list *tail;
107     } u;
108   } test_list_t;
109
110   int test_list_length(test_list_t *ls);
111   void stop(void);
112 }