UNO *			T_UNOREF
UNO_Interface *		T_INTERFREF
UNO_Struct *		T_STRUCTREF
UNO_Any *		T_ANYREF
UNO_Boolean *		T_BOOLREF
UNO_Int32 *		T_INT32REF
UNO_Int64 *		T_INT64REF

#############################################################################
INPUT
T_UNOREF
    if (SvROK($arg)) {
	IV tmp = SvIV((SV*)SvRV($arg));
	$var = INT2PTR($type,tmp);
    } else
	Perl_croak(aTHX_ \"$var is not a reference\")

T_INTERFREF
    if (SvROK($arg)) {
	IV tmp = SvIV((SV*)SvRV($arg));
	$var = INT2PTR($type,tmp);
    } else
	Perl_croak(aTHX_ \"$var is not a reference\")

T_ANYREF
    if (SvROK($arg)) {
	IV tmp = SvIV((SV*)SvRV($arg));
	$var = INT2PTR($type,tmp);
    } else
	Perl_croak(aTHX_ \"$var is not a reference\")

T_STRUCTREF
    if (SvROK($arg)) {
	IV tmp = SvIV((SV*)SvRV($arg));
	$var = INT2PTR($type,tmp);
    } else
	Perl_croak(aTHX_ \"$var is not a reference\")

T_BOOLREF
    if (SvROK($arg)) {
	IV tmp = SvIV((SV*)SvRV($arg));
	$var = INT2PTR($type,tmp);
    } else
	Perl_croak(aTHX_ \"$var is not a reference\")

T_INT32REF
    if (SvROK($arg)) {
	IV tmp = SvIV((SV*)SvRV($arg));
	$var = INT2PTR($type,tmp);
    } else
	Perl_croak(aTHX_ \"$var is not a reference\")

T_INT64REF
    if (SvROK($arg)) {
	IV tmp = SvIV((SV*)SvRV($arg));
	$var = INT2PTR($type,tmp);
    } else
	Perl_croak(aTHX_ \"$var is not a reference\")

#############################################################################
OUTPUT
T_UNOREF
    sv_setref_pv($arg, \"OpenOffice::UNO\", (void*)$var);

T_INTERFREF
    sv_setref_pv($arg, \"OpenOffice::UNO::Interface\", (void*)$var);

T_ANYREF
    sv_setref_pv($arg, \"OpenOffice::UNO::Any\", (void*)$var);

T_STRUCTREF
    sv_setref_pv($arg, \"OpenOffice::UNO::Struct\", (void*)$var);

T_BOOLREF
    sv_setref_pv($arg, \"OpenOffice::UNO::Boolean\", (void*)$var);

T_INT32REF
    sv_setref_pv($arg, \"OpenOffice::UNO::Int32\", (void*)$var);

T_INT64REF
    sv_setref_pv($arg, \"OpenOffice::UNO::Int64\", (void*)$var);
