1
# typemap for Perl 5 interface to Berkeley DB version 2 & 3
5
# written by Paul Marquess <Paul.Marquess@btinternet.com>
7
#################################### DB SECTION
14
const char * T_PV_NULL
21
BerkeleyDB::Common T_PTROBJ_AV
22
BerkeleyDB::Hash T_PTROBJ_AV
23
BerkeleyDB::Btree T_PTROBJ_AV
24
BerkeleyDB::Recno T_PTROBJ_AV
25
BerkeleyDB::Queue T_PTROBJ_AV
26
BerkeleyDB::Cursor T_PTROBJ_AV
27
BerkeleyDB::TxnMgr T_PTROBJ_AV
28
BerkeleyDB::Txn T_PTROBJ_AV
29
BerkeleyDB::Log T_PTROBJ_AV
30
BerkeleyDB::Lock T_PTROBJ_AV
31
BerkeleyDB::Env T_PTROBJ_AV
34
BerkeleyDB::Common::Raw T_RAW
35
BerkeleyDB::Hash::Raw T_RAW
36
BerkeleyDB::Btree::Raw T_RAW
37
BerkeleyDB::Recno::Raw T_RAW
38
BerkeleyDB::Queue::Raw T_RAW
39
BerkeleyDB::Cursor::Raw T_RAW
40
BerkeleyDB::TxnMgr::Raw T_RAW
41
BerkeleyDB::Txn::Raw T_RAW
42
BerkeleyDB::Log::Raw T_RAW
43
BerkeleyDB::Lock::Raw T_RAW
44
BerkeleyDB::Env::Raw T_RAW
46
BerkeleyDB::Env::Inner T_INNER
47
BerkeleyDB::Common::Inner T_INNER
48
BerkeleyDB::Txn::Inner T_INNER
49
BerkeleyDB::TxnMgr::Inner T_INNER
50
# BerkeleyDB__Env T_PTR
52
DBT_OPT T_dbtdatum_opt
53
DBT_B T_dbtdatum_btree
55
DBTKEY_B T_dbtkeydatum_btree
58
BerkeleyDB_type * T_IV
59
BerkeleyDB_ENV_type * T_IV
60
BerkeleyDB_TxnMgr_type * T_IV
61
BerkeleyDB_Txn_type * T_IV
62
BerkeleyDB__Cursor_type * T_IV
68
if (SvROK($arg) && SvTYPE(SvRV($arg)) == SVt_PVAV)
69
/* if (sv_isa($arg, \"${ntype}\")) */
70
$var = (AV*)SvRV($arg);
72
croak(\"$var is not an array reference\")
75
$var = INT2PTR($type,SvIV($arg)
81
if ($arg == &PL_sv_undef)
83
else if (sv_derived_from($arg, \"${ntype}\")) {
84
IV tmp = SvIV((SV *)GetInternalObject($arg));
85
$var = INT2PTR($type, tmp);
88
croak(\"$var is not of type ${ntype}\")
91
if ($arg == &PL_sv_undef)
93
else if (sv_derived_from($arg, \"${ntype}\")) {
94
HV * hv = (HV *)GetInternalObject($arg);
95
SV ** svp = hv_fetch(hv, \"db\", 2, FALSE);
97
$var = INT2PTR($type, tmp);
100
croak(\"$var is not of type ${ntype}\")
103
if (sv_derived_from($arg, \"${ntype}\")) {
104
HV * hv = (HV *)GetInternalObject($arg);
105
SV ** svp = hv_fetch(hv, \"db\", 2, FALSE);
107
$var = INT2PTR($type, tmp);
110
croak(\"$var is not of type ${ntype}\")
114
if (sv_derived_from($arg, \"${ntype}\")) {
115
IV tmp = SvIV((SV*)SvRV($arg));
116
$var = INT2PTR($type, tmp);
119
croak(\"$var is not of type ${ntype}\")
124
HV * hv = (HV *)SvRV($arg);
125
SV ** svp = hv_fetch(hv, \"db\", 2, FALSE);
127
$var = INT2PTR($type, tmp);
131
if ($arg == &PL_sv_undef)
134
$var = ($type)SvPV($arg,PL_na) ;
140
if ($arg == &PL_sv_undef)
143
$var = IoOFP(sv_2io($arg))
146
if ($arg == &PL_sv_undef)
148
else if (sv_derived_from($arg, \"${ntype}\")) {
149
IV tmp = SvIV((SV*)SvRV($arg));
150
$var = INT2PTR($type, tmp);
153
croak(\"$var is not of type ${ntype}\")
156
if ($arg == &PL_sv_undef)
158
else if (sv_derived_from($arg, \"${ntype}\")) {
159
IV tmp = SvIV((SV*)SvRV($arg));
160
$var = INT2PTR($type, tmp);
163
croak(\"$var is not of type ${ntype}\")
166
if ($arg == &PL_sv_undef || $arg == NULL)
168
else if (sv_derived_from($arg, \"${ntype}\")) {
169
IV tmp = SvIV(getInnerObject($arg)) ;
170
$var = INT2PTR($type, tmp);
173
croak(\"$var is not of type ${ntype}\")
176
DBM_ckFilter($arg, filter_store_key, \"filter_store_key\");
178
if (db->recno_or_queue) {
179
Value = GetRecnoKey(db, SvIV($arg)) ;
181
$var.size = (int)sizeof(db_recno_t);
184
$var.data = SvPV($arg, PL_na);
185
$var.size = (int)PL_na;
189
DBM_ckFilter($arg, filter_store_key, \"filter_store_key\");
191
if (db->recno_or_queue ||
192
(db->type == DB_BTREE && flagSet(DB_SET_RECNO))) {
193
Value = GetRecnoKey(db, SvIV($arg)) ;
195
$var.size = (int)sizeof(db_recno_t);
198
$var.data = SvPV($arg, PL_na);
199
$var.size = (int)PL_na;
203
DBM_ckFilter($arg, filter_store_value, \"filter_store_value\");
205
$var.data = SvPV($arg, PL_na);
206
$var.size = (int)PL_na;
207
$var.flags = db->partial ;
208
$var.dlen = db->dlen ;
209
$var.doff = db->doff ;
213
if (flagSet(DB_GET_BOTH)) {
214
DBM_ckFilter($arg, filter_store_value, \"filter_store_value\");
215
$var.data = SvPV($arg, PL_na);
216
$var.size = (int)PL_na;
217
$var.flags = db->partial ;
218
$var.dlen = db->dlen ;
219
$var.doff = db->doff ;
224
if (flagSet(DB_GET_BOTH)) {
225
DBM_ckFilter($arg, filter_store_value, \"filter_store_value\");
226
$var.data = SvPV($arg, PL_na);
227
$var.size = (int)PL_na;
228
$var.flags = db->partial ;
229
$var.dlen = db->dlen ;
230
$var.doff = db->doff ;
237
sv_setiv($arg, PTR2IV($var));
240
sv_setiv($arg, PTR2IV($var));
243
sv_setiv($arg, PTR2IV($var));
246
sv_setiv($arg, PTR2IV($var));
249
sv_setiv($arg, PTR2IV($var));
252
setDUALerrno($arg, $var) ;
255
sv_setuv($arg, (UV)$var);
258
sv_setpv((SV*)$arg, $var);
261
OutputKey_B($arg, $var)
263
OutputKey($arg, $var)
265
OutputValue($arg, $var)
267
OutputValue($arg, $var)
269
OutputValue_B($arg, $var)
272
sv_setref_pv($arg, \"${ntype}\", (void*)$var);
275
sv_setref_pv($arg, self, (void*)$var);