mirror of
https://github.com/reactos/wine.git
synced 2024-11-26 13:10:28 +00:00
c49a73b853
aligns contains padding, but the memory is marshalled in one block so call memset to avoid Valgrind warnings. padded and padded2 are marshalled as complex types so this is not required here. Initialise the dummy member of test_list_t to zero for the TL_NULL case. Change the type to the smallest available to not waste buffer space.
307 lines
5.9 KiB
Plaintext
307 lines
5.9 KiB
Plaintext
/*
|
|
* A simple interface to test the RPC server.
|
|
*
|
|
* Copyright (C) Google 2007 (Dan Hipschman)
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
|
*/
|
|
|
|
#include "server_defines.h"
|
|
|
|
typedef struct tag_vector
|
|
{
|
|
int x;
|
|
int y;
|
|
int z;
|
|
} vector_t;
|
|
|
|
[
|
|
uuid(00000000-4114-0704-2301-000000000000),
|
|
#ifndef __midl
|
|
implicit_handle(handle_t IServer_IfHandle)
|
|
#endif
|
|
]
|
|
interface IServer
|
|
{
|
|
cpp_quote("#if 0")
|
|
typedef wchar_t WCHAR;
|
|
cpp_quote("#endif")
|
|
|
|
typedef [string] char *str_t;
|
|
typedef [string] WCHAR *wstr_t;
|
|
|
|
typedef struct
|
|
{
|
|
int *pi;
|
|
int **ppi;
|
|
int ***pppi;
|
|
} pints_t;
|
|
|
|
typedef struct
|
|
{
|
|
char *pc;
|
|
short *ps;
|
|
long *pl;
|
|
float *pf;
|
|
double *pd;
|
|
} ptypes_t;
|
|
|
|
typedef struct
|
|
{
|
|
vector_t *pu;
|
|
vector_t **pv;
|
|
} pvectors_t;
|
|
|
|
typedef struct
|
|
{
|
|
[switch_is(s)] union
|
|
{
|
|
[case(SUN_I)] int i;
|
|
[case(SUN_F1, SUN_F2)] float f;
|
|
[case(SUN_PI)] int *pi;
|
|
} u;
|
|
|
|
int s;
|
|
} sun_t;
|
|
|
|
int int_return(void);
|
|
int square(int x);
|
|
int sum(int x, int y);
|
|
void square_out(int x, [out] int *y);
|
|
void square_ref([in, out] int *x);
|
|
int str_length([string] const char *s);
|
|
int cstr_length([string, size_is(n)] const char *s, int n);
|
|
int dot_self(vector_t *v);
|
|
double square_half(double x, [out] double *y);
|
|
float square_half_float(float x, [out] float *y);
|
|
long square_half_long(long x, [out] long *y);
|
|
int sum_fixed_array(int a[5]);
|
|
int pints_sum(pints_t *pints);
|
|
double ptypes_sum(ptypes_t *ptypes);
|
|
int dot_pvectors(pvectors_t *pvectors);
|
|
|
|
/* don't use this anywhere except in sp_t */
|
|
typedef struct
|
|
{
|
|
int x;
|
|
} sp_inner_t;
|
|
|
|
typedef struct
|
|
{
|
|
int x;
|
|
sp_inner_t *s;
|
|
} sp_t;
|
|
|
|
int sum_sp(sp_t *sp);
|
|
double square_sun(sun_t *su);
|
|
|
|
typedef struct test_list
|
|
{
|
|
int t;
|
|
[switch_is(t)] union
|
|
{
|
|
[case(TL_NULL)] char x; /* end of list */
|
|
[case(TL_LIST)] struct test_list *tail;
|
|
} u;
|
|
} test_list_t;
|
|
|
|
int test_list_length(test_list_t *ls);
|
|
int sum_fixed_int_3d(int m[2][3][4]);
|
|
int sum_conf_array([size_is(n)] int x[], int n);
|
|
int sum_unique_conf_array([size_is(n), unique] int x[], int n);
|
|
int sum_unique_conf_ptr([size_is(n), unique] int *x, int n);
|
|
int sum_var_array([length_is(n)] int x[20], int n);
|
|
int dot_two_vectors(vector_t vs[2]);
|
|
|
|
typedef struct
|
|
{
|
|
int n;
|
|
[size_is(n)] int ca[];
|
|
} cs_t;
|
|
|
|
typedef struct
|
|
{
|
|
int *pn;
|
|
[size_is(*pn)] int *ca1;
|
|
[size_is(n * 2)] int *ca2;
|
|
int n;
|
|
} cps_t;
|
|
|
|
typedef struct
|
|
{
|
|
[size_is(c ? a : b)] int *ca;
|
|
int a;
|
|
int b;
|
|
int c;
|
|
} cpsc_t;
|
|
|
|
int sum_cs(cs_t *cs);
|
|
int sum_cps(cps_t *cps);
|
|
int sum_cpsc(cpsc_t *cpsc);
|
|
|
|
typedef [wire_marshal(int)] void *puint_t;
|
|
int square_puint(puint_t p);
|
|
|
|
typedef struct
|
|
{
|
|
[size_is(n)] puint_t *ps;
|
|
int n;
|
|
} puints_t;
|
|
|
|
/* Same thing as puints_t, but make it complex (needs padding). */
|
|
typedef struct
|
|
{
|
|
[size_is(n)] puint_t *ps;
|
|
char n;
|
|
} cpuints_t;
|
|
|
|
int sum_puints(puints_t *p);
|
|
int sum_cpuints(cpuints_t *p);
|
|
int dot_copy_vectors(vector_t u, vector_t v);
|
|
|
|
typedef struct wire_us *wire_us_t;
|
|
typedef [wire_marshal(wire_us_t)] struct us us_t;
|
|
struct us
|
|
{
|
|
void *x;
|
|
};
|
|
struct wire_us
|
|
{
|
|
int x;
|
|
};
|
|
typedef struct
|
|
{
|
|
us_t us;
|
|
} test_us_t;
|
|
|
|
int square_test_us(test_us_t *tus);
|
|
|
|
typedef union encu switch (int t)
|
|
{
|
|
case ENCU_I: int i;
|
|
case ENCU_F: float f;
|
|
} encu_t;
|
|
|
|
typedef enum
|
|
{
|
|
E1 = 23,
|
|
E2 = 4,
|
|
E3 = 0,
|
|
E4 = 64
|
|
} e_t;
|
|
|
|
typedef union encue switch (e_t t)
|
|
{
|
|
case E1: int i1;
|
|
case E2: float f2;
|
|
} encue_t;
|
|
|
|
double square_encu(encu_t *eu);
|
|
int sum_parr(int *a[3]);
|
|
int sum_pcarr([size_is(n)] int *a[], int n);
|
|
int enum_ord(e_t e);
|
|
double square_encue(encue_t *eue);
|
|
|
|
int sum_toplev_conf_2n([size_is(n * 2)] int *x, int n);
|
|
int sum_toplev_conf_cond([size_is(c ? a : b)] int *x, int a, int b, int c);
|
|
|
|
typedef struct
|
|
{
|
|
char c;
|
|
int i;
|
|
short s;
|
|
double d;
|
|
} aligns_t;
|
|
|
|
double sum_aligns(aligns_t *a);
|
|
|
|
typedef struct
|
|
{
|
|
int i;
|
|
char c;
|
|
} padded_t;
|
|
|
|
int sum_padded(padded_t *p);
|
|
int sum_padded2(padded_t ps[2]);
|
|
int sum_padded_conf([size_is(n)] padded_t *ps, int n);
|
|
|
|
typedef struct
|
|
{
|
|
int *p1;
|
|
} bogus_helper_t;
|
|
|
|
typedef struct
|
|
{
|
|
bogus_helper_t h;
|
|
int *p2;
|
|
int *p3;
|
|
char c;
|
|
} bogus_t;
|
|
|
|
int sum_bogus(bogus_t *b);
|
|
void check_null([unique] int *null);
|
|
|
|
typedef struct
|
|
{
|
|
str_t s;
|
|
} str_struct_t;
|
|
|
|
typedef struct
|
|
{
|
|
wstr_t s;
|
|
} wstr_struct_t;
|
|
|
|
int str_struct_len(str_struct_t *s);
|
|
int wstr_struct_len(wstr_struct_t *s);
|
|
|
|
typedef struct
|
|
{
|
|
unsigned int n;
|
|
[size_is(n)] byte a[];
|
|
} doub_carr_1_t;
|
|
|
|
typedef struct
|
|
{
|
|
int n;
|
|
[size_is(n)] doub_carr_1_t *a[];
|
|
} doub_carr_t;
|
|
|
|
int sum_doub_carr(doub_carr_t *dc);
|
|
void make_pyramid_doub_carr(unsigned char n, [out] doub_carr_t **dc);
|
|
|
|
typedef struct
|
|
{
|
|
short n;
|
|
[size_is(n)] short data[];
|
|
} wire_bstr_t;
|
|
|
|
typedef [wire_marshal(wire_bstr_t)] short *bstr_t;
|
|
unsigned hash_bstr(bstr_t s);
|
|
|
|
typedef struct
|
|
{
|
|
[string, size_is(size)] char *name;
|
|
unsigned int size;
|
|
} name_t;
|
|
void get_name([in,out] name_t *name);
|
|
|
|
int sum_pcarr2(int n, [size_is(, n)] int **pa);
|
|
int sum_L1_norms(int n, [size_is(n)] vector_t *vs);
|
|
|
|
str_t get_filename(void);
|
|
|
|
void stop(void);
|
|
}
|