TYPEMAP
OPCUA_Open62541_Boolean		T_BOOL
OPCUA_Open62541_SByte		T_IV
OPCUA_Open62541_Byte		T_UV
OPCUA_Open62541_Int16		T_IV
OPCUA_Open62541_UInt16		T_UV
OPCUA_Open62541_Int32		T_IV
OPCUA_Open62541_UInt32		T_UV
OPCUA_Open62541_Int64		T_IV
OPCUA_Open62541_UInt64		T_UV
OPCUA_Open62541_StatusCode	T_UV
OPCUA_Open62541_Server		T_PTROBJ_SPECIAL
OPCUA_Open62541_ServerConfig	T_PTROBJ_SPECIAL

#############################################################################
INPUT
T_PTROBJ_SPECIAL
	if (SvROK($arg) && sv_derived_from($arg,
	    \"${(my $ntt=${ntype})=~s/_/::/g;\$ntt}\")) {
		IV tmp = SvIV((SV*)SvRV($arg));
		$var = INT2PTR($type,tmp);
	} else {
		Perl_croak_nocontext(\"%s: %s is not of type %s\",
		    ${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
		    \"$var\", \"${(my $ntt=${ntype})=~s/_/::/g;\$ntt}\");
	}

#############################################################################
OUTPUT
T_PTROBJ_SPECIAL
	sv_setref_pv($arg, \"${(my $ntt=${ntype})=~s/_/::/g;\$ntt}\",
	    (void*)$var);
