/trunk/Lib/typemaps/std_strings.swg

# · Unknown · 78 lines · 69 code · 9 blank · 0 comment · 0 complexity · 82b594c02b07504f87e410b7e3f14a44 MD5 · raw file

  1. /* defining the String asptr/from methods */
  2. %define %std_string_asptr(String, Char, SWIG_AsCharPtrAndSize, Frag)
  3. %fragment(SWIG_AsPtr_frag(String),"header",fragment=Frag) {
  4. SWIGINTERN int
  5. SWIG_AsPtr_dec(String)(SWIG_Object obj, String **val)
  6. {
  7. Char* buf = 0 ; size_t size = 0; int alloc = SWIG_OLDOBJ;
  8. if (SWIG_IsOK((SWIG_AsCharPtrAndSize(obj, &buf, &size, &alloc)))) {
  9. if (buf) {
  10. if (val) *val = new String(buf, size - 1);
  11. if (alloc == SWIG_NEWOBJ) %delete_array(buf);
  12. return SWIG_NEWOBJ;
  13. } else {
  14. if (val) *val = 0;
  15. return SWIG_OLDOBJ;
  16. }
  17. } else {
  18. static int init = 0;
  19. static swig_type_info* descriptor = 0;
  20. if (!init) {
  21. descriptor = SWIG_TypeQuery(#String " *");
  22. init = 1;
  23. }
  24. if (descriptor) {
  25. String *vptr;
  26. int res = SWIG_ConvertPtr(obj, (void**)&vptr, descriptor, 0);
  27. if (SWIG_IsOK(res) && val) *val = vptr;
  28. return res;
  29. }
  30. }
  31. return SWIG_ERROR;
  32. }
  33. }
  34. %enddef
  35. %define %std_string_from(String, SWIG_FromCharPtrAndSize, Frag)
  36. %fragment(SWIG_From_frag(String),"header",fragment=Frag) {
  37. SWIGINTERNINLINE SWIG_Object
  38. SWIG_From_dec(String)(const String& s)
  39. {
  40. return SWIG_FromCharPtrAndSize(s.data(), s.size());
  41. }
  42. }
  43. %enddef
  44. %define %std_string_asval(String)
  45. %fragment(SWIG_AsVal_frag(String),"header", fragment=SWIG_AsPtr_frag(String)) {
  46. SWIGINTERN int
  47. SWIG_AsVal_dec(String)(SWIG_Object obj, String *val)
  48. {
  49. String* v = (String *) 0;
  50. int res = SWIG_AsPtr(String)(obj, &v);
  51. if (!SWIG_IsOK(res)) return res;
  52. if (v) {
  53. if (val) *val = *v;
  54. if (SWIG_IsNewObj(res)) {
  55. %delete(v);
  56. res = SWIG_DelNewMask(res);
  57. }
  58. return res;
  59. }
  60. return SWIG_ERROR;
  61. }
  62. }
  63. %enddef
  64. %define %typemaps_std_string(String, Char, AsPtrMethod, FromMethod, CheckCode)
  65. %std_string_asptr(String, Char, AsPtrMethod, #AsPtrMethod)
  66. %std_string_asval(String)
  67. %std_string_from(String, FromMethod, #FromMethod)
  68. %typemaps_asptrfromn(%arg(CheckCode), String);
  69. %enddef