PageRenderTime 36ms CodeModel.GetById 11ms RepoModel.GetById 0ms app.codeStats 0ms

/trunk/Lib/perl5/jstring.i

#
Swig | 48 lines | 44 code | 4 blank | 0 comment | 0 complexity | 496c46f5032b0677224af907c6590cdc MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
  1. %include <typemaps/valtypes.swg>
  2. %fragment(SWIG_AsVal_frag(jstring),"header") {
  3. SWIGINTERN int
  4. SWIG_AsVal_dec(jstring)(SV *obj, jstring *val)
  5. {
  6. if (SvPOK(obj)) {
  7. if (val) {
  8. STRLEN len = 0;
  9. char *cstr = SvPV(obj, len);
  10. *val = JvNewStringLatin1(cstr, len);
  11. }
  12. return SWIG_OK;
  13. }
  14. return SWIG_ERROR;
  15. }
  16. }
  17. %fragment(SWIG_From_frag(jstring),"header") {
  18. SWIGINTERNINLINE SV *
  19. SWIG_From_dec(jstring)(jstring val)
  20. {
  21. SV *obj = sv_newmortal();
  22. if (!val) {
  23. sv_setsv(obj, &PL_sv_undef);
  24. } else {
  25. jsize len = JvGetStringUTFLength(val);
  26. if (!len) {
  27. sv_setsv(obj, &PL_sv_undef);
  28. } else {
  29. char *tmp = %new_array(len, char);
  30. JvGetStringUTFRegion(val, 0, len, tmp);
  31. sv_setpvn(obj, tmp, len);
  32. SvUTF8_on(obj);
  33. %delete_array(tmp);
  34. }
  35. }
  36. return obj;
  37. }
  38. }
  39. %typemaps_asvalfrom(%checkcode(STRING),
  40. %arg(SWIG_AsVal(jstring)),
  41. %arg(SWIG_From(jstring)),
  42. %arg(SWIG_AsVal_frag(jstring)),
  43. %arg(SWIG_From_frag(jstring)),
  44. java::lang::String *);