some experiments with ref ptrs



	typedef struct {
		short x;
	} xstruct;

	uint16 echo_TestRef([in] xstruct foo);

	short v = 13;
	xstruct r;
	r.x = v;
	echo_TestRef(r);

	[0D 00]

----------------------------------------------------
	typedef struct {
		short *x;
	} xstruct;

	uint16 echo_TestRef([in] xstruct foo);

	short v = 13;
	xstruct r;
	r.x = &v;
	echo_TestRef(r);

	[PP PP PP PP 0D 00]


	xstruct r;
	r.x = NULL;
	echo_TestRef(r);

	[00 00 00 00]

----------------------------------------------------
	typedef struct {
		[ref] short *x;
	} xstruct;

	uint16 echo_TestRef([in] xstruct foo);

	short v = 13;
	xstruct r;
	r.x = &v;
	echo_TestRef(r);

	[XX XX XX XX 0D 00]


	xstruct r;
	r.x = NULL;
	echo_TestRef(r);

	[client runtime error 0x6f4]


----------------------------------------------------
	typedef struct {
		short x;
	} xstruct;

	uint16 echo_TestRef([in] xstruct *foo);

	short v = 13;
	xstruct r;
	r.x = v;
	echo_TestRef(&r);

	[0D 00]


	echo_TestRef(NULL);

	[client runtime error 0x6f4]

----------------------------------------------------
	typedef struct {
		short x;
	} xstruct;

	uint16 echo_TestRef([in,ref] xstruct *foo);

	short v = 13;
	xstruct r;
	r.x = v;
	echo_TestRef(&r);

	[0D 00]


	echo_TestRef(NULL);

	[client runtime error 0x6f4]


----------------------------------------------------
	typedef struct {
		short x;
	} xstruct;

	uint16 echo_TestRef([in,unique] xstruct *foo);

	short v = 13;
	xstruct r;
	r.x = v;
	echo_TestRef(&r);

	[PP PP PP PP 0D 00]


	echo_TestRef(NULL);

	[00 00 00 00]


----------------------------------------------------
	typedef struct {
		short x;
	} xstruct;

	uint16 echo_TestRef([out] xstruct foo);

        [idl compiler error]

----------------------------------------------------
	typedef struct {
		short x;
	} xstruct;

	void echo_TestRef([out] xstruct *foo);

	xstruct r;
	echo_TestRef(&r);
	r.x -> 13;

	[0D 00]


	echo_TestRef(NULL);

	[client runtime error 0x6f4]

----------------------------------------------------
	typedef struct {
		short x;
	} xstruct;

	void echo_TestRef([out,ref] xstruct *foo);

	xstruct r;
	echo_TestRef(&r);
	r.x -> 13;

	[0D 00]


	echo_TestRef(NULL);

	[client runtime error 0x6f4]

----------------------------------------------------
	typedef struct {
		short x;
	} xstruct;

	void echo_TestRef([out,unique] xstruct *foo);

        [idl compiler error]


----------------------------------------------------
	void echo_TestRef([in] short **foo);

	short v = 13;
	short *pv = &v;

	echo_TestRef(&pv);

	[PP PP PP PP 0D 00]


	short *pv = NULL;

	echo_TestRef(&pv);

	[00 00 00 00]


	echo_TestRef(NULL);
	
	[client runtime error 0x6f4]


----------------------------------------------------
	void echo_TestRef([in,ref] short **foo);

	short v = 13;
	short *pv = &v;

	echo_TestRef(&pv);

	[PP PP PP PP 0D 00]


	short *pv = NULL;

	echo_TestRef(&pv);

	[00 00 00 00]


	echo_TestRef(NULL);
	
	[client runtime error 0x6f4]