const OggOpusFile* T_OGG_OPUS_FILE
      OggOpusFile* T_OGG_OPUS_FILE
const OpusHead*    T_OPUS_HEAD
      OpusHead*    T_OPUS_HEAD
const OpusTags*    T_OPUS_TAGS
      OpusTags*    T_OPUS_TAGS

INPUT
# All three types are copies of T_PTROBJ, only difference being the class name

T_OGG_OPUS_FILE
	if (SvROK($arg) && sv_derived_from($arg, \"Audio::Opusfile\")) {
		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\", \"Audio::Opusfile\")

T_OPUS_HEAD
	if (SvROK($arg) && sv_derived_from($arg, \"Audio::Opusfile::Head\")) {
		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\", \"Audio::Opusfile::Head\")

T_OPUS_TAGS
	if (SvROK($arg) && sv_derived_from($arg, \"Audio::Opusfile::Tags\")) {
		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\", \"Audio::Opusfile::Tags\")

OUTPUT

T_OGG_OPUS_FILE
	sv_setref_pv($arg, \"Audio::Opusfile\", (void*)$var);

T_OPUS_HEAD
	sv_setref_pv($arg, \"Audio::Opusfile::Head\", (void*)$var);

T_OPUS_TAGS
	sv_setref_pv($arg, \"Audio::Opusfile::Tags\", (void*)$var);
