1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-08 05:57:51 +03:00
Jelmer Vernooij d600b78c33 r6019: Add IDL and server side code for Test_DoublePointer
(This used to be commit 0559f22bbe854b7d5e15db471e51264cce413e6f)
2007-10-10 13:11:15 -05:00

152 lines
3.0 KiB
Plaintext

/*
RPC echo IDL.
Copyright (C) Tim Potter 2003
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program 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 General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
[
uuid(60a15ec5-4de8-11d7-a637-005056a20182),
version(1.0)
]
interface rpcecho
{
// Add one to an integer
void AddOne(
[in] int in_data,
[out] int *out_data
);
// Echo an array of bytes back at the caller
void EchoData(
[in] int len,
[in] [size_is(len)] char in_data[],
[out] [size_is(len)] char out_data[]
);
// Sink data to the server
void SinkData(
[in] int len,
[in] [size_is(len)] char in_data[]
);
// Source data from server
void SourceData(
[in] int len,
[out] [size_is(len)] char out_data[]
);
#define unistr [string] wchar_t *
#define uint8 char
#define uint16 short
#define uint32 long
#define HYPER_T hyper
const long myconstant = 42;
/* test strings */
void TestCall (
[in] unistr *s1,
[out] unistr *s2
);
/* test some alignment issues */
typedef struct {
uint8 v;
} echo_info1;
typedef struct {
uint16 v;
} echo_info2;
typedef struct {
uint32 v;
} echo_info3;
typedef struct {
HYPER_T v;
} echo_info4;
typedef struct {
uint8 v1;
HYPER_T v2;
} echo_info5;
typedef struct {
uint8 v1;
echo_info1 info1;
} echo_info6;
typedef struct {
uint8 v1;
echo_info4 info4;
} echo_info7;
typedef union {
[case(1)] echo_info1 info1;
[case(2)] echo_info2 info2;
[case(3)] echo_info3 info3;
[case(4)] echo_info4 info4;
[case(5)] echo_info5 info5;
[case(6)] echo_info6 info6;
[case(7)] echo_info7 info7;
} echo_Info;
long TestCall2 (
[in] uint16 level,
[out,switch_is(level)] echo_Info **info
);
long TestSleep(
[in] long seconds
);
typedef enum {
ECHO_ENUM1 = 1,
ECHO_ENUM2 = 2
} echo_Enum1;
typedef [v1_enum] enum {
ECHO_ENUM1_32 = 1,
ECHO_ENUM2_32 = 2
} echo_Enum1_32;
typedef struct {
echo_Enum1 e1;
echo_Enum1_32 e2;
} echo_Enum2;
typedef union {
[case(ECHO_ENUM1)] echo_Enum1 e1;
[case(ECHO_ENUM2)] echo_Enum2 e2;
} echo_Enum3;
void echo_TestEnum(
[in,out,ref] echo_Enum1 *foo1,
[in,out,ref] echo_Enum2 *foo2,
[in,out,ref,switch_is(*foo1)] echo_Enum3 *foo3
);
typedef struct {
uint32 x;
[size_is(x)] uint16 surrounding[*];
} echo_Surrounding;
void echo_TestSurrounding(
[in,out,ref] echo_Surrounding *data
);
uint16 echo_TestDoublePointer([in] uint16 ***data);
}