--- mstools/samples/rpc/data/dunion/dunion.idl 2018/08/09 18:20:59 1.1.1.1 +++ mstools/samples/rpc/data/dunion/dunion.idl 2018/08/09 18:24:24 1.1.1.3 @@ -1,32 +1,33 @@ -[ uuid (12345678-1234-1234-1234-123456789ABC), +[ uuid (87E5BFA0-CA46-1067-B31B-00DD010662DA), version(1.0), - pointer_default(unique)] + pointer_default(unique) +] interface dunion { + typedef [switch_type(short)] union { - [case(0)] short sVal; - [case(1)] float fVal; - [case(2)] char chVal; - [default]; + [case(0)] short sVal; + [case(1)] float fVal; + [case(2)] unsigned char chVal; + [default] ; } DISCRIM_UNION_PARAM_TYPE; +typedef DISCRIM_UNION_PARAM_TYPE DISCRIM_UNION_FIELD_TYPE; + typedef struct { - short sDiscrim; /* discriminant must precede union */ - [switch_is(sDiscrim)] union { - [case(0)] short sVal; - [case(1)] float fVal; - [case(2)] char chVal; - [default] ; - } u; + short sDiscrim; + [switch_is(sDiscrim)] DISCRIM_UNION_FIELD_TYPE u; } DISCRIM_UNION_STRUCT_TYPE; -short UnionParamProc( - [in, switch_is(sDiscrim)] DISCRIM_UNION_PARAM_TYPE UnionParam, - [in] short sDiscrim); +void UnionParamProc( + [in, switch_is(sDiscrim)] DISCRIM_UNION_PARAM_TYPE *UnionParam, + [in] short sDiscrim + ); -short UnionStructProc( - [in] DISCRIM_UNION_STRUCT_TYPE UnionStruct); +void UnionStructProc( + [in] DISCRIM_UNION_STRUCT_TYPE *UnionStruct); void Shutdown(void); + }