57 lines
1.4 KiB
Plaintext
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;
|
|
} |