1# 2#################################### DBM SECTION 3# 4 5datum_key T_DATUM_K 6datum_key_copy T_DATUM_K 7datum_value T_DATUM_V 8NDBM_File T_PTROBJ 9GDBM_File T_PTROBJ 10SDBM_File T_PTROBJ 11ODBM_File T_PTROBJ 12DB_File T_PTROBJ 13DBZ_File T_PTROBJ 14gdbm_count_t T_UV 15 16INPUT 17T_DATUM_K 18 DBM_ckFilter($arg, filter[store_key], \"filter_store_key\"); 19 { 20 STRLEN len; 21 $var.dptr = SvPVbyte($arg, len); 22 $var.dsize = (int)len; 23 } 24T_DATUM_K_C 25 { 26 SV * tmpSV; 27 STRLEN len; 28 if (db->filter[store_key]) { 29 tmpSV = sv_2mortal(newSVsv($arg)); 30 DBM_ckFilter(tmpSV, filter[store_key], \"filter_store_key\"); 31 } 32 else 33 tmpSV = $arg; 34 $var.dptr = SvPVbyte(tmpSV, len); 35 $var.dsize = (int)len; 36 } 37T_DATUM_V 38 DBM_ckFilter($arg, filter[store_value], \"filter_store_value\"); 39 if (SvOK($arg)) { 40 STRLEN len; 41 $var.dptr = SvPVbyte($arg, len); 42 $var.dsize = (int)len; 43 } 44 else { 45 $var.dptr = (char *)\"\"; 46 /* better would be for .dptr to be const char * */ 47 $var.dsize = 0; 48 } 49OUTPUT 50T_DATUM_K 51 output_datum(aTHX_ $arg, $var.dptr, $var.dsize); 52 DBM_ckFilter($arg, filter[fetch_key],\"filter_fetch_key\"); 53T_DATUM_V 54 output_datum(aTHX_ $arg, $var.dptr, $var.dsize); 55 DBM_ckFilter($arg, filter[fetch_value],\"filter_fetch_value\"); 56T_PTROBJ 57 sv_setref_pv($arg, dbtype, (void*)$var); 58