Permalink
Find file
Fetching contributors…
Cannot retrieve contributors at this time
41 lines (35 sloc) 1.25 KB
TYPEMAP
Math_Fractal_Julia * O_JULIA
INPUT
# If the perl argument is a blessed reference cast it to a
# Math_Fractal_Julia *. If the argument is "Math::Fractal::Julia" or
# the name of a class derived from Math::Fractal::Julia use the default
# julia struct.
O_JULIA
if (SvROK($arg)) {
if (sv_isobject($arg) && (SvTYPE(SvRV($arg)) == SVt_PVMG)) {
$var = ($type)SvIV((SV *)SvRV($arg));
} else {
Perl_croak(aTHX_ \"%s -- %s is not a blessed SV reference\",
\"${Package}::$func_name()\", \"$var\");
XSRETURN_UNDEF;
}
} else if (SvPOK($arg)) {
if (sv_derived_from($arg, \"$Package\")) {
/* julia is defined in Julia.xs */
$var = &julia;
} else {
Perl_croak(aTHX_ \"%s -- %s is not derived from %s\",
\"${Package}::$func_name()\", \"$var\", \"$Package\");
XSRETURN_UNDEF;
}
} else {
Perl_croak(aTHX_ \"%s -- %s is not the correct type\",
\"${Package}::$func_name()\", \"$var\");
XSRETURN_UNDEF;
}
OUTPUT
# The Perl object is blessed into "CLASS", which should be a char *
# having the name of the package for the blessing.
O_JULIA
sv_setref_pv($arg, CLASS, (void *)$var);