# @(#) $Id: typemap 1187 2006-06-07 21:45:41Z dom $ # T_PTROBJ_SPECIAL definition derived from the example in perlxs(1). XML_Genx T_PTROBJ_SPECIAL XML_Genx_Namespace T_PTROBJ_SPECIAL XML_Genx_Element T_PTROBJ_SPECIAL XML_Genx_Attribute T_PTROBJ_SPECIAL genxStatus T_ENUM utf8 T_UTF8PV constUtf8 T_UTF8PV INPUT T_UTF8PV /* Convert the bytes to UTF-8, whilst leaving the original SV alone. */ if (!SvUTF8($arg)) { /* Make a mortal copy in order so that we don't leak memory. */ SV *tmp = sv_mortalcopy($arg); (void)sv_utf8_upgrade(tmp); $var = ($type)SvPV_nolen(tmp); } else { $var = ($type)SvPV_nolen($arg); } T_PTROBJ_SPECIAL if (!SvOK($arg)) { $var = ($type) NULL; } else if (sv_derived_from($arg, \"${(my $ntt=$ntype)=~s/_/::/g;\$ntt}\")) { IV tmp = SvIV((SV*)SvRV($arg)); $var = INT2PTR($type, tmp); } else { croak(\"$var is not undef or of type ${(my $ntt=$ntype)=~s/_/::/g;\$ntt}\"); } OUTPUT T_UTF8PV sv_setpv((SV*)$arg, (const char *)$var); SvUTF8_on($arg); T_PTROBJ_SPECIAL sv_setref_pv($arg, \"${(my $ntt=$ntype)=~s/_/::/g;\$ntt}\",(void*)$var);