TDB_CONTEXT * T_PTROBJ_CLASS TDB_DATA T_TDB_DATA mone_on_fail T_TDB_MONE_ON_FAIL const char * T_PV enum TDB_ERROR T_UV tdb_traverse_func T_SV ############################################################################# INPUT T_PTROBJ_CLASS if (!sv_derived_from ($arg, \"$Package\")) croak (\"$var is not of type $Package\"); $var = INT2PTR ($type, SvIV ((SV*)SvRV ($arg))); T_TDB_DATA if (SvOK ($arg)) { STRLEN len; $var.dptr = SvPVbyte ($arg, len); $var.dsize = len; } else { $var.dptr = 0; $var.dsize = 0; } ############################################################################# OUTPUT T_PTROBJ_CLASS sv_setref_pv ($arg, class, (void*)$var); T_TDB_DATA if ($var.dptr) { /* TODO: reuse data, if perl uses malloc */ sv_setpvn ((SV*)$arg, $var.dptr, $var.dsize); free ($var.dptr); } else $arg = &PL_sv_undef; T_TDB_MONE_ON_FAIL $arg = ($var == -1) ? &PL_sv_no : &PL_sv_yes;