head	1.9;
access;
symbols
	pjones-sparse-experiment:1.9.0.12
	rpm-4_4:1.9.0.10
	rpm-4_3_1-start:1.9
	rpm-4_3:1.9.0.8
	rpm-4_2_1-release:1.9
	rpm-4_1_1-release:1.9
	rpm-4_2-release:1.9
	rpm-4_2:1.9.0.6
	rpm-4_1-release:1.9
	rpm-4_1:1.9.0.4
	alpha_13:1.9
	rpm-4_0_4-release:1.9
	jbj-before-beecrypt:1.9
	rpm-4_0_3-release:1.9
	jbj_b4_rollback:1.9
	rpm-4_0:1.9.0.2
	RPM_CORE_MERGE:1.9
	alpha_12:1.9
	alpha_11:1.9
	alpha_10:1.9
	alpha_9:1.9
	alpha_6:1.7
	alpha_5:1.6
	alpha_4:1.5
	alpha_3:1.4
	alpha_2:1.3
	alpha_1:1.1;
locks; strict;
comment	@# @;


1.9
date	2000.11.10.08.49.57;	author rjray;	state Exp;
branches
	1.9.10.1;
next	1.8;

1.8
date	2000.10.08.10.07.49;	author rjray;	state Exp;
branches;
next	1.7;

1.7
date	2000.08.11.08.17.42;	author rjray;	state Exp;
branches;
next	1.6;

1.6
date	2000.08.06.08.57.09;	author rjray;	state Exp;
branches;
next	1.5;

1.5
date	2000.06.11.11.24.23;	author rjray;	state Exp;
branches;
next	1.4;

1.4
date	2000.06.02.07.52.39;	author rjray;	state Exp;
branches;
next	1.3;

1.3
date	2000.05.30.01.03.13;	author rjray;	state Exp;
branches;
next	1.2;

1.2
date	2000.05.27.05.22.51;	author rjray;	state Exp;
branches;
next	1.1;

1.1
date	2000.05.22.08.37.02;	author rjray;	state Exp;
branches;
next	;

1.9.10.1
date	2004.11.19.15.47.20;	author jbj;	state dead;
branches;
next	;


desc
@@


1.9
log
@Wide-range changes and bugfixing. Commit to sync w/ desktop
@
text
@# 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;
        }@


1.9.10.1
log
@Not on rpm-4_4 branch.
@
text
@@


1.8
log
@Added a fail-clause for O_RPM_Blessed
@
text
@d6 2
a7 2
RPM::Database           O_RPM_Database
RPM::Header             O_RPM_Header
a10 5
#
# The following mappings for O_HvRV are taken directly from Dean Roehrich's
# excellent XS Cookbook, vol. A.
#

d12 1
a12 1
O_RPM_Database
d15 3
a17 15
            $arg = sv_bless(newRV_noinc((SV*)$var),
                            gv_stashpv("RPM::Database", TRUE));
            hv_magic($var, (GV *)Nullhv, 'P');
        }
        else
        {
            $arg = newSVsv(&PL_sv_undef);
        }

O_RPM_Header
        if ($var)
        {
            $arg = sv_bless(newRV_noinc((SV*)$var),
                            gv_stashpv("RPM::Header", TRUE));
            hv_magic($var, (GV *)Nullhv, 'P');
d36 1
a36 11
O_RPM_Database
        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_Header
@


1.7
log
@Fixes related to possible bad return values in error conditions.
@
text
@d42 9
a50 2
        sv_setref_pv($arg, \"${(my $ntt=$ntype)=~s/_/::/g;\$ntt}\",
                     (void*)$var);
@


1.6
log
@Start of support for RPM::Package and RPM::Transaction classes.
@
text
@d18 1
a18 1
        if ($var != Null(RPM__Database))
d30 1
a30 1
        if ($var != Null(RPM__Header))
@


1.5
log
@Replaced warn() calls with calls to rpm_error().
@
text
@a5 1
RPM                     T_PTROBJ
d8 2
a16 1

d41 4
a45 1

d65 13
@


1.4
log
@cleaner handling of error return vals on database and header typemaps
@
text
@d48 2
a49 1
            warn(\"${Package}::$func_name() -- $var is not a blessed HV reference\");
d58 2
a59 1
            warn(\"${Package}::$func_name() -- $var is not a blessed HV reference\");
@


1.3
log
@checkpoint for second alpha (0.2) release
@
text
@d5 4
a8 4
const char *		T_PTROBJ
RPM			T_PTROBJ
RPM::Database		O_RPM_Database
RPM::Header		O_RPM_Header
d18 10
a27 3
	$arg = sv_bless(newRV_noinc((SV*)$var),
			gv_stashpv("RPM::Database", TRUE));
	hv_magic($var, (GV *)Nullhv, 'P');
d30 10
a39 3
	$arg = sv_bless(newRV_noinc((SV*)$var),
			gv_stashpv("RPM::Header", TRUE));
	hv_magic($var, (GV *)Nullhv, 'P');
d44 2
a45 2
	if (sv_isobject($arg) && (SvTYPE(SvRV($arg)) == SVt_PVHV))
	    $var = (HV*)SvRV($arg);
d47 4
a50 4
	{
	    warn(\"${Package}::$func_name() -- $var is not a blessed HV reference\");
	    XSRETURN_UNDEF;
	}
d53 2
a54 2
	if (sv_isobject($arg) && (SvTYPE(SvRV($arg)) == SVt_PVHV))
	    $var = (HV*)SvRV($arg);
d56 4
a59 4
	{
	    warn(\"${Package}::$func_name() -- $var is not a blessed HV reference\");
	    XSRETURN_UNDEF;
	}
@


1.2
log
@checkpointing laptop to repository
@
text
@a8 1
RPM::Header::datum	T_PTROBJ
@


1.1
log
@C type to Perl type mappings
@
text
@d9 1
@

