2000-05-22 16:37:02 +08:00
|
|
|
# Treat this as -*- text -*-
|
|
|
|
|
|
|
|
TYPEMAP
|
|
|
|
|
2000-06-02 15:52:39 +08:00
|
|
|
const char * T_PTROBJ
|
2000-11-10 16:49:57 +08:00
|
|
|
RPM::Database O_RPM_Tied
|
|
|
|
RPM::Header O_RPM_Tied
|
2000-08-06 16:57:09 +08:00
|
|
|
RPM::Package O_RPM_Blessed
|
|
|
|
RPM::Transaction O_RPM_Blessed
|
2000-05-22 16:37:02 +08:00
|
|
|
|
|
|
|
OUTPUT
|
2000-11-10 16:49:57 +08:00
|
|
|
O_RPM_Tied
|
2000-08-11 16:17:42 +08:00
|
|
|
if ($var)
|
2000-06-02 15:52:39 +08:00
|
|
|
{
|
2000-11-10 16:49:57 +08:00
|
|
|
$arg = sv_bless(sv_2mortal(newRV_noinc((SV*)$var)),
|
|
|
|
gv_stashpv(\"${(my $ntt=$ntype)=~s/_/::/g;\$ntt}\",
|
|
|
|
TRUE));
|
2000-06-02 15:52:39 +08:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
$arg = newSVsv(&PL_sv_undef);
|
|
|
|
}
|
2000-05-22 16:37:02 +08:00
|
|
|
|
2000-08-06 16:57:09 +08:00
|
|
|
O_RPM_Blessed
|
2000-10-08 18:07:49 +08:00
|
|
|
if ($var)
|
|
|
|
{
|
|
|
|
sv_setref_pv($arg, \"${(my $ntt=$ntype)=~s/_/::/g;\$ntt}\",
|
|
|
|
(void*)$var);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
$arg = newSVsv(&PL_sv_undef);
|
|
|
|
}
|
2000-05-22 16:37:02 +08:00
|
|
|
|
2000-08-06 16:57:09 +08:00
|
|
|
INPUT
|
2000-11-10 16:49:57 +08:00
|
|
|
O_RPM_Tied
|
2000-06-02 15:52:39 +08:00
|
|
|
if (sv_isobject($arg) && (SvTYPE(SvRV($arg)) == SVt_PVHV))
|
|
|
|
$var = (HV*)SvRV($arg);
|
2000-05-22 16:37:02 +08:00
|
|
|
else
|
2000-06-02 15:52:39 +08:00
|
|
|
{
|
2000-06-11 19:24:23 +08:00
|
|
|
rpm_error(aTHX_ RPMERR_BADARG,
|
|
|
|
\"${Package}::$func_name: not a blessed HV reference\");
|
2000-06-02 15:52:39 +08:00
|
|
|
XSRETURN_UNDEF;
|
|
|
|
}
|
2000-08-06 16:57:09 +08:00
|
|
|
|
|
|
|
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;
|
|
|
|
}
|