rpm/Perl-RPM/typemap

57 lines
1.4 KiB
Plaintext

# Treat this as -*- text -*-
TYPEMAP
const char * T_PTROBJ
RPM::Database O_RPM_Tied
RPM::Header O_RPM_Tied
RPM::Package O_RPM_Blessed
RPM::Transaction O_RPM_Blessed
OUTPUT
O_RPM_Tied
if ($var)
{
$arg = sv_bless(sv_2mortal(newRV_noinc((SV*)$var)),
gv_stashpv(\"${(my $ntt=$ntype)=~s/_/::/g;\$ntt}\",
TRUE));
}
else
{
$arg = newSVsv(&PL_sv_undef);
}
O_RPM_Blessed
if ($var)
{
sv_setref_pv($arg, \"${(my $ntt=$ntype)=~s/_/::/g;\$ntt}\",
(void*)$var);
}
else
{
$arg = newSVsv(&PL_sv_undef);
}
INPUT
O_RPM_Tied
if (sv_isobject($arg) && (SvTYPE(SvRV($arg)) == SVt_PVHV))
$var = (HV*)SvRV($arg);
else
{
rpm_error(aTHX_ RPMERR_BADARG,
\"${Package}::$func_name: not a blessed HV reference\");
XSRETURN_UNDEF;
}
O_RPM_Blessed
if (sv_derived_from($arg, \"${(my $ntt=$ntype)=~s/_/::/g;\$ntt}\"))
{
IV tmp = SvIV((SV*)SvRV($arg));
$var = ($type) tmp;
}
else
{
rpm_error(aTHX_ RPMERR_BADARG,
\"$var is not of type ${ntype}\");
XSRETURN_UNDEF;
}