/tags/rel-1-3-26/SWIG/Lib/guile/std_string.i
Swig | 58 lines | 47 code | 11 blank | 0 comment | 0 complexity | a58a974bf2cc8f680aa7ad858c03f886 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
1// 2// SWIG typemaps for std::string 3// Luigi Ballabio 4// Apr 8, 2002 5// 6// Guile implementation 7 8// ------------------------------------------------------------------------ 9// std::string is typemapped by value 10// This can prevent exporting methods which return a string 11// in order for the user to modify it. 12// However, I think I'll wait until someone asks for it... 13// ------------------------------------------------------------------------ 14 15%include exception.i 16 17%{ 18#include <string> 19%} 20 21namespace std { 22 23 class string; 24 25 %typemap(typecheck) string = char *; 26 %typemap(typecheck) const string & = char *; 27 28 %typemap(in) string (char* tempptr) { 29 if (gh_string_p($input)) { 30 tempptr = SWIG_scm2str($input); 31 $1 = std::string(tempptr); 32 if (tempptr) SWIG_free(tempptr); 33 } else { 34 SWIG_exception(SWIG_TypeError, "string expected"); 35 } 36 } 37 38 %typemap(in) const string & (std::string temp, 39 char* tempptr) { 40 if (gh_string_p($input)) { 41 tempptr = SWIG_scm2str($input); 42 temp = std::string(tempptr); 43 if (tempptr) SWIG_free(tempptr); 44 $1 = &temp; 45 } else { 46 SWIG_exception(SWIG_TypeError, "string expected"); 47 } 48 } 49 50 %typemap(out) string { 51 $result = gh_str02scm($1.c_str()); 52 } 53 54 %typemap(out) const string & { 55 $result = gh_str02scm($1->c_str()); 56 } 57 58}