# typemap for Perl 5 interface to Berkeley DB version 2 & 3 # # SCCS: %I%, %G% # # written by Paul Marquess # #################################### DB SECTION # # SVnull* T_SV_NULL void * T_PV u_int T_U_INT u_int32_t T_U_INT db_timeout_t T_U_INT const char * T_PV_NULL PV_or_NULL T_PV_NULL IO_or_NULL T_IO_NULL AV * T_AV BerkeleyDB T_PTROBJ BerkeleyDB::Common T_PTROBJ_AV BerkeleyDB::Hash T_PTROBJ_AV BerkeleyDB::Btree T_PTROBJ_AV BerkeleyDB::Recno T_PTROBJ_AV BerkeleyDB::Queue T_PTROBJ_AV BerkeleyDB::Cursor T_PTROBJ_AV BerkeleyDB::TxnMgr T_PTROBJ_AV BerkeleyDB::Txn T_PTROBJ_AV BerkeleyDB::Log T_PTROBJ_AV BerkeleyDB::Lock T_PTROBJ_AV BerkeleyDB::Env T_PTROBJ_AV BerkeleyDB::Raw T_RAW BerkeleyDB::Common::Raw T_RAW BerkeleyDB::Hash::Raw T_RAW BerkeleyDB::Btree::Raw T_RAW BerkeleyDB::Recno::Raw T_RAW BerkeleyDB::Queue::Raw T_RAW BerkeleyDB::Cursor::Raw T_RAW BerkeleyDB::TxnMgr::Raw T_RAW BerkeleyDB::Txn::Raw T_RAW BerkeleyDB::Log::Raw T_RAW BerkeleyDB::Lock::Raw T_RAW BerkeleyDB::Env::Raw T_RAW BerkeleyDB::Env::Inner T_INNER BerkeleyDB::Common::Inner T_INNER BerkeleyDB::Txn::Inner T_INNER BerkeleyDB::TxnMgr::Inner T_INNER # BerkeleyDB__Env T_PTR DBT T_dbtdatum DBT_OPT T_dbtdatum_opt DBT_B T_dbtdatum_btree DBTKEY T_dbtkeydatum DBTKEY_B T_dbtkeydatum_btree DBTKEY_Br T_dbtkeydatum_btree_r DBTKEY_Bpr T_dbtkeydatum_btree_pr DBTYPE T_U_INT DualType T_DUAL BerkeleyDB_type * T_IV BerkeleyDB_ENV_type * T_IV BerkeleyDB_TxnMgr_type * T_IV BerkeleyDB_Txn_type * T_IV BerkeleyDB__Cursor_type * T_IV DB * T_IV DB_ENV * T_IV INPUT T_AV if (SvROK($arg) && SvTYPE(SvRV($arg)) == SVt_PVAV) /* if (sv_isa($arg, \"${ntype}\")) */ $var = (AV*)SvRV($arg); else croak(\"$var is not an array reference\") T_RAW $var = INT2PTR($type,SvIV($arg) T_U_INT $var = SvUV($arg) T_SV_REF_NULL if ($arg == &PL_sv_undef) $var = NULL ; else if (sv_derived_from($arg, \"${ntype}\")) { IV tmp = SvIV((SV *)GetInternalObject($arg)); $var = INT2PTR($type, tmp); } else croak(\"$var is not of type ${ntype}\") T_SV_NULL if ($arg == NULL || $arg == &PL_sv_undef) $var = NULL ; else $var = $arg ; T_HV_REF_NULL if ($arg == &PL_sv_undef) $var = NULL ; else if (sv_derived_from($arg, \"${ntype}\")) { HV * hv = (HV *)GetInternalObject($arg); SV ** svp = hv_fetch(hv, \"db\", 2, FALSE); IV tmp = SvIV(*svp); $var = INT2PTR($type, tmp); } else croak(\"$var is not of type ${ntype}\") T_HV_REF if (sv_derived_from($arg, \"${ntype}\")) { HV * hv = (HV *)GetInternalObject($arg); SV ** svp = hv_fetch(hv, \"db\", 2, FALSE); IV tmp = SvIV(*svp); $var = INT2PTR($type, tmp); } else croak(\"$var is not of type ${ntype}\") T_P_REF if (sv_derived_from($arg, \"${ntype}\")) { IV tmp = SvIV((SV*)SvRV($arg)); $var = INT2PTR($type, tmp); } else croak(\"$var is not of type ${ntype}\") T_INNER { HV * hv = (HV *)SvRV($arg); SV ** svp = hv_fetch(hv, \"db\", 2, FALSE); IV tmp = SvIV(*svp); $var = INT2PTR($type, tmp); } T_PV_NULL if ($arg == &PL_sv_undef) $var = NULL ; else { $var = ($type)SvPV($arg,PL_na) ; if (PL_na == 0) $var = NULL ; } T_IO_NULL if ($arg == &PL_sv_undef) $var = NULL ; else $var = IoOFP(sv_2io($arg)) T_PTROBJ_NULL if ($arg == &PL_sv_undef) $var = NULL ; else if (sv_derived_from($arg, \"${ntype}\")) { IV tmp = SvIV((SV*)SvRV($arg)); $var = INT2PTR($type, tmp); } else croak(\"$var is not of type ${ntype}\") T_PTROBJ_SELF if ($arg == &PL_sv_undef) $var = NULL ; else if (sv_derived_from($arg, \"${ntype}\")) { IV tmp = SvIV((SV*)SvRV($arg)); $var = INT2PTR($type, tmp); } else croak(\"$var is not of type ${ntype}\") T_PTROBJ_AV if ($arg == &PL_sv_undef || $arg == NULL) $var = NULL ; else if (sv_derived_from($arg, \"${ntype}\")) { IV tmp = SvIV(getInnerObject($arg)) ; $var = INT2PTR($type, tmp); } else croak(\"$var is not of type ${ntype}\") T_dbtkeydatum { SV* my_sv = $arg ; DBM_ckFilter(my_sv, filter_store_key, \"filter_store_key\"); DBT_clear($var) ; SvGETMAGIC($arg) ; if (db->recno_or_queue) { Value = GetRecnoKey(db, SvIV(my_sv)) ; $var.data = & Value; $var.size = (int)sizeof(db_recno_t); } else { $var.data = SvPV(my_sv, PL_na); $var.size = (int)PL_na; } } T_dbtkeydatum_btree { SV* my_sv = $arg ; DBM_ckFilter(my_sv, filter_store_key, \"filter_store_key\"); DBT_clear($var) ; SvGETMAGIC($arg) ; if (db->recno_or_queue || (db->type == DB_BTREE && flagSet(DB_SET_RECNO))) { Value = GetRecnoKey(db, SvIV(my_sv)) ; $var.data = & Value; $var.size = (int)sizeof(db_recno_t); } else { $var.data = SvPV(my_sv, PL_na); $var.size = (int)PL_na; } } T_dbtkeydatum_btree_r { SV* my_sv = $arg ; DBM_ckFilter(my_sv, filter_store_key, \"filter_store_key\"); DBT_clear($var) ; SvGETMAGIC($arg) ; if (db->recno_or_queue || (db->type == DB_BTREE && flagSet(DB_SET_RECNO))) { Value = GetRecnoKey(db, SvIV(my_sv)) ; $var.data = & Value; $var.size = (int)sizeof(db_recno_t); } else { $var.data = SvPV(my_sv, PL_na); $var.size = (int)PL_na; } } T_dbtkeydatum_btree_pr { SV* my_sv = $arg ; DBM_ckFilter(my_sv, filter_store_key, \"filter_store_key\"); DBT_clear($var) ; SvGETMAGIC($arg) ; if (db->recno_or_queue || (db->type == DB_BTREE && flagSet(DB_SET_RECNO))) { Value = GetRecnoKey(db, SvIV(my_sv)) ; $var.data = & Value; $var.size = (int)sizeof(db_recno_t); } else { $var.data = SvPV(my_sv, PL_na); $var.size = (int)PL_na; } } T_dbtdatum { SV* my_sv = $arg ; DBM_ckFilter(my_sv, filter_store_value, \"filter_store_value\"); DBT_clear($var) ; SvGETMAGIC($arg) ; $var.data = SvPV(my_sv, PL_na); $var.size = (int)PL_na; $var.flags = db->partial ; $var.dlen = db->dlen ; $var.doff = db->doff ; } T_dbtdatum_opt DBT_clear($var) ; if (flagSet(DB_GET_BOTH)|| flagSet(DB_GET_BOTH)) { SV* my_sv = $arg ; DBM_ckFilter(my_sv, filter_store_value, \"filter_store_value\"); SvGETMAGIC($arg) ; $var.data = SvPV(my_sv, PL_na); $var.size = (int)PL_na; $var.flags = db->partial ; $var.dlen = db->dlen ; $var.doff = db->doff ; } T_dbtdatum_btree DBT_clear($var) ; if (flagSet(DB_GET_BOTH)|| flagSet(DB_GET_BOTH)) { SV* my_sv = $arg ; DBM_ckFilter(my_sv, filter_store_value, \"filter_store_value\"); SvGETMAGIC($arg) ; $var.data = SvPV(my_sv, PL_na); $var.size = (int)PL_na; $var.flags = db->partial ; $var.dlen = db->dlen ; $var.doff = db->doff ; } OUTPUT T_SV_NULL $arg = $var; T_RAW sv_setiv($arg, PTR2IV($var)); T_SV_REF_NULL sv_setiv($arg, PTR2IV($var)); T_HV_REF_NULL sv_setiv($arg, PTR2IV($var)); T_HV_REF sv_setiv($arg, PTR2IV($var)); T_P_REF sv_setiv($arg, PTR2IV($var)); T_DUAL setDUALerrno($arg, $var) ; T_U_INT sv_setuv($arg, (UV)$var); T_PV_NULL sv_setpv((SV*)$arg, $var); T_dbtkeydatum_btree OutputKey_B($arg, $var) T_dbtkeydatum_btree_r OutputKey_Br($arg, $var) T_dbtkeydatum_btree_pr OutputKey_Bpr($arg, $var) T_dbtkeydatum OutputKey($arg, $var) T_dbtdatum OutputValue($arg, $var) T_dbtdatum_opt OutputValue($arg, $var) T_dbtdatum_btree OutputValue_B($arg, $var) T_PTROBJ_NULL sv_setref_pv($arg, \"${ntype}\", (void*)$var); T_PTROBJ_SELF sv_setref_pv($arg, self, (void*)$var);