-# typemap for Perl 5 interface to Berkeley DB
+# typemap for Perl 5 interface to Berkeley
#
-# written by Paul Marquess (pmarquess@bfsec.bt.co.uk)
-# last modified 23rd June 1994
-# version 0.1
+# written by Paul Marquess <Paul.Marquess@btinternet.com>
+# last modified 20th June 2004
+# version 1.809
#
#################################### DB SECTION
#
INPUT
T_dbtkeydatum
- if (db->type != DB_RECNO)
- {
- $var.data = SvPV($arg, na);
- $var.size = (int)na;
- }
- else
- {
- Value = SvIV($arg) ;
- ++ Value ;
+ {
+ SV * my_sv = $arg;
+ DBM_ckFilter(my_sv, filter_store_key, \"filter_store_key\");
+ DBT_clear($var) ;
+ SvGETMAGIC(my_sv) ;
+ if (db->type == DB_RECNO) {
+ if (SvOK(my_sv))
+ Value = GetRecnoKey(aTHX_ db, SvIV(my_sv)) ;
+ else
+ Value = 1 ;
$var.data = & Value;
$var.size = (int)sizeof(recno_t);
+ }
+ else if (SvOK(my_sv)) {
+ STRLEN len;
+ $var.data = SvPVbyte(my_sv, len);
+ $var.size = (int)len;
}
+ }
T_dbtdatum
- $var.data = SvPV($arg, na);
- $var.size = (int)na;
+ {
+ SV * my_sv = $arg;
+ DBM_ckFilter(my_sv, filter_store_value, \"filter_store_value\");
+ DBT_clear($var) ;
+ SvGETMAGIC(my_sv) ;
+ if (SvOK(my_sv)) {
+ STRLEN len;
+ $var.data = SvPVbyte(my_sv, len);
+ $var.size = (int)len;
+ }
+ }
OUTPUT
OutputKey($arg, $var)
T_dbtdatum
OutputValue($arg, $var)
+T_PTROBJ
+ sv_setref_pv($arg, dbtype, (void*)$var);