typemap
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:6k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. # typemap for Perl 5 interface to Berkeley DB version 2 & 3
  2. #
  3. # SCCS: %I%, %G%     
  4. #
  5. # written by Paul Marquess <Paul.Marquess@btinternet.com>
  6. #
  7. #################################### DB SECTION
  8. #
  9. void * T_PV
  10. u_int T_U_INT
  11. u_int32_t T_U_INT
  12. const char *  T_PV_NULL
  13. PV_or_NULL T_PV_NULL
  14. IO_or_NULL T_IO_NULL
  15. AV * T_AV
  16. BerkeleyDB T_PTROBJ
  17. BerkeleyDB::Common T_PTROBJ_AV
  18. BerkeleyDB::Hash T_PTROBJ_AV
  19. BerkeleyDB::Btree T_PTROBJ_AV
  20. BerkeleyDB::Recno T_PTROBJ_AV
  21. BerkeleyDB::Queue T_PTROBJ_AV
  22. BerkeleyDB::Cursor T_PTROBJ_AV
  23. BerkeleyDB::TxnMgr T_PTROBJ_AV
  24. BerkeleyDB::Txn T_PTROBJ_AV
  25. BerkeleyDB::Log T_PTROBJ_AV
  26. BerkeleyDB::Lock T_PTROBJ_AV
  27. BerkeleyDB::Env T_PTROBJ_AV
  28. BerkeleyDB::Raw T_RAW
  29. BerkeleyDB::Common::Raw T_RAW
  30. BerkeleyDB::Hash::Raw T_RAW
  31. BerkeleyDB::Btree::Raw T_RAW
  32. BerkeleyDB::Recno::Raw T_RAW
  33. BerkeleyDB::Queue::Raw T_RAW
  34. BerkeleyDB::Cursor::Raw T_RAW
  35. BerkeleyDB::TxnMgr::Raw T_RAW
  36. BerkeleyDB::Txn::Raw T_RAW
  37. BerkeleyDB::Log::Raw T_RAW
  38. BerkeleyDB::Lock::Raw T_RAW
  39. BerkeleyDB::Env::Raw T_RAW
  40. BerkeleyDB::Env::Inner T_INNER
  41. BerkeleyDB::Common::Inner T_INNER
  42. BerkeleyDB::Txn::Inner T_INNER
  43. BerkeleyDB::TxnMgr::Inner T_INNER
  44. # BerkeleyDB__Env  T_PTR
  45. DBT T_dbtdatum
  46. DBT_OPT T_dbtdatum_opt
  47. DBT_B T_dbtdatum_btree
  48. DBTKEY T_dbtkeydatum
  49. DBTKEY_B T_dbtkeydatum_btree
  50. DBTYPE T_U_INT
  51. DualType T_DUAL
  52. BerkeleyDB_type * T_IV
  53. BerkeleyDB_ENV_type * T_IV
  54. BerkeleyDB_TxnMgr_type * T_IV
  55. BerkeleyDB_Txn_type * T_IV
  56. BerkeleyDB__Cursor_type * T_IV
  57. DB * T_IV
  58. INPUT
  59. T_AV
  60. if (SvROK($arg) && SvTYPE(SvRV($arg)) == SVt_PVAV)
  61.         /* if (sv_isa($arg, "${ntype}")) */
  62.             $var = (AV*)SvRV($arg);
  63.         else
  64.             croak("$var is not an array reference")
  65. T_RAW
  66.         $var = ($type)SvIV($arg)
  67. T_U_INT
  68.         $var = SvUV($arg)
  69. T_SV_REF_NULL
  70. if ($arg == &PL_sv_undef)
  71.     $var = NULL ;
  72.         else if (sv_derived_from($arg, "${ntype}")) {
  73.             IV tmp = SvIV((SV *)GetInternalObject($arg));
  74.             $var =  ($type) tmp;
  75.         }
  76.         else
  77.             croak("$var is not of type ${ntype}")
  78. T_HV_REF_NULL
  79. if ($arg == &PL_sv_undef)
  80.     $var = NULL ;
  81.         else if (sv_derived_from($arg, "${ntype}")) {
  82.             HV * hv = (HV *)GetInternalObject($arg);
  83.             SV ** svp = hv_fetch(hv, "db", 2, FALSE);
  84.             IV tmp = SvIV(*svp);
  85.             $var =  ($type) tmp;
  86.         }
  87.         else
  88.             croak("$var is not of type ${ntype}")
  89. T_HV_REF
  90.         if (sv_derived_from($arg, "${ntype}")) {
  91.             HV * hv = (HV *)GetInternalObject($arg);
  92.             SV ** svp = hv_fetch(hv, "db", 2, FALSE);
  93.             IV tmp = SvIV(*svp);
  94.             $var =  ($type) tmp;
  95.         }
  96.         else
  97.             croak("$var is not of type ${ntype}")
  98. T_P_REF
  99.         if (sv_derived_from($arg, "${ntype}")) {
  100.             IV tmp = SvIV((SV*)SvRV($arg));
  101.             $var = ($type) tmp;
  102.         }
  103.         else
  104.             croak("$var is not of type ${ntype}")
  105. T_INNER
  106. {
  107.     HV * hv = (HV *)SvRV($arg);
  108.             SV ** svp = hv_fetch(hv, "db", 2, FALSE);
  109.             IV tmp = SvIV(*svp);
  110.             $var =  ($type) tmp;
  111. }
  112. T_PV_NULL
  113. if ($arg == &PL_sv_undef)
  114.     $var = NULL ;
  115. else {
  116.             $var = ($type)SvPV($arg,PL_na) ;
  117.     if (PL_na == 0)
  118. $var = NULL ;
  119. }
  120. T_IO_NULL
  121. if ($arg == &PL_sv_undef)
  122.     $var = NULL ; 
  123. else 
  124.             $var = IoOFP(sv_2io($arg))
  125. T_PTROBJ_NULL
  126. if ($arg == &PL_sv_undef)
  127.     $var = NULL ;
  128.         else if (sv_derived_from($arg, "${ntype}")) {
  129.             IV tmp = SvIV((SV*)SvRV($arg));
  130.             $var = ($type) tmp;
  131.         }
  132.         else
  133.             croak("$var is not of type ${ntype}")
  134. T_PTROBJ_SELF
  135. if ($arg == &PL_sv_undef)
  136.     $var = NULL ;
  137.         else if (sv_derived_from($arg, "${ntype}")) {
  138.             IV tmp = SvIV((SV*)SvRV($arg));
  139.             $var = ($type) tmp;
  140.         }
  141.         else
  142.             croak("$var is not of type ${ntype}")
  143. T_PTROBJ_AV
  144.         if ($arg == &PL_sv_undef || $arg == NULL)
  145.             $var = NULL ;
  146.         else if (sv_derived_from($arg, "${ntype}")) {
  147.             IV tmp = getInnerObject($arg) ;
  148.             $var = ($type) tmp;
  149.         }
  150.         else
  151.             croak("$var is not of type ${ntype}")
  152. T_dbtkeydatum
  153. ckFilter($arg, filter_store_key, "filter_store_key");
  154. DBT_clear($var) ;
  155. if (db->recno_or_queue) {
  156.     Value = GetRecnoKey(db, SvIV($arg)) ; 
  157.     $var.data = & Value; 
  158.     $var.size = (int)sizeof(db_recno_t);
  159. }
  160. else {
  161.     $var.data = SvPV($arg, PL_na);
  162.     $var.size = (int)PL_na;
  163. }
  164. T_dbtkeydatum_btree
  165. ckFilter($arg, filter_store_key, "filter_store_key");
  166. DBT_clear($var) ;
  167. if (db->recno_or_queue ||
  168. (db->type == DB_BTREE && flagSet(DB_SET_RECNO))) {
  169.     Value = GetRecnoKey(db, SvIV($arg)) ; 
  170.     $var.data = & Value; 
  171.     $var.size = (int)sizeof(db_recno_t);
  172. }
  173. else {
  174.     $var.data = SvPV($arg, PL_na);
  175.     $var.size = (int)PL_na;
  176. }
  177. T_dbtdatum
  178. ckFilter($arg, filter_store_value, "filter_store_value");
  179. DBT_clear($var) ;
  180. $var.data = SvPV($arg, PL_na);
  181. $var.size = (int)PL_na;
  182.    $var.flags = db->partial ;
  183.      $var.dlen  = db->dlen ;
  184. $var.doff  = db->doff ;
  185. T_dbtdatum_opt
  186. DBT_clear($var) ;
  187. if (flagSet(DB_GET_BOTH)) {
  188.    ckFilter($arg, filter_store_value, "filter_store_value");
  189.    $var.data = SvPV($arg, PL_na);
  190.    $var.size = (int)PL_na;
  191.       $var.flags = db->partial ;
  192.         $var.dlen  = db->dlen ;
  193.    $var.doff  = db->doff ;
  194. }
  195. T_dbtdatum_btree
  196. DBT_clear($var) ;
  197. if (flagSet(DB_GET_BOTH)) {
  198.     ckFilter($arg, filter_store_value, "filter_store_value");
  199.     $var.data = SvPV($arg, PL_na);
  200.     $var.size = (int)PL_na;
  201.        $var.flags = db->partial ;
  202.          $var.dlen  = db->dlen ;
  203.     $var.doff  = db->doff ;
  204. }
  205. OUTPUT
  206. T_RAW
  207.         sv_setiv($arg, (IV)$var);
  208. T_SV_REF_NULL
  209. sv_setiv($arg, (IV)$var);
  210. T_HV_REF_NULL
  211. sv_setiv($arg, (IV)$var);
  212. T_HV_REF
  213. sv_setiv($arg, (IV)$var);
  214. T_P_REF
  215. sv_setiv($arg, (IV)$var);
  216. T_DUAL
  217. setDUALerrno($arg, $var) ;
  218. T_U_INT
  219.         sv_setuv($arg, (UV)$var);
  220. T_PV_NULL
  221.         sv_setpv((SV*)$arg, $var);
  222. T_dbtkeydatum_btree
  223. OutputKey_B($arg, $var)
  224. T_dbtkeydatum
  225. OutputKey($arg, $var)
  226. T_dbtdatum
  227. OutputValue($arg, $var)
  228. T_dbtdatum_opt
  229. OutputValue($arg, $var)
  230. T_dbtdatum_btree
  231. OutputValue_B($arg, $var)
  232. T_PTROBJ_NULL
  233.         sv_setref_pv($arg, "${ntype}", (void*)$var);
  234. T_PTROBJ_SELF
  235.         sv_setref_pv($arg, self, (void*)$var);