typemap 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. B::MAGIC T_MG_OBJ
  2. B::REGEXP T_RX_OBJ
  3. B::COP T_OP_OBJ
  4. B::OP T_OP_OBJ
  5. B::HV T_SV_OBJ
  6. B::PADNAME T_SV_OBJ
  7. B::PADLIST T_SV_OBJ
  8. B::PADNAMELIST T_SV_OBJ
  9. INPUT
  10. T_RX_OBJ
  11. if (SvROK($arg)) {
  12. int type = SvTYPE(SvRV($arg));
  13. if (type == SVt_REGEXP || type == SVt_PVMG) {
  14. IV tmp = SvIV((SV*)SvRV($arg));
  15. $var = INT2PTR($type,tmp);
  16. }
  17. else
  18. croak(\"ref to $var is of type %d, not a reference to REGEXP\", type);
  19. }
  20. else
  21. croak(\"$var is of type %d, not a reference to REGEXP\", SvTYPE($arg));
  22. T_MG_OBJ
  23. if (SvROK($arg)) {
  24. IV tmp = SvIV((SV*)SvRV($arg));
  25. $var = INT2PTR($type,tmp);
  26. }
  27. else
  28. croak(\"$var is not a reference\")
  29. T_OP_OBJ
  30. if (SvROK($arg)) {
  31. IV tmp = SvIV((SV*)SvRV($arg));
  32. $var = INT2PTR($type,tmp);
  33. }
  34. else
  35. croak(\"$var is not a reference\")
  36. T_SV_OBJ
  37. if (SvROK($arg)) {
  38. IV tmp = SvIV((SV*)SvRV($arg));
  39. $var = INT2PTR($type,tmp);
  40. }
  41. else
  42. croak(\"$var is not a reference\")