/tags/rel-1.3.35/Lib/guile/std_string.i
Swig | 90 lines | 66 code | 16 blank | 8 comment | 0 complexity | 2a300a789973b4d5379838405bf90deb MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
1/* -----------------------------------------------------------------------------
2 * See the LICENSE file for information on copyright, usage and redistribution
3 * of SWIG, and the README file for authors - http://www.swig.org/release.html.
4 *
5 * std_string.i
6 *
7 * SWIG typemaps for std::string
8 * ----------------------------------------------------------------------------- */
9
10// ------------------------------------------------------------------------
11// std::string is typemapped by value
12// This can prevent exporting methods which return a string
13// in order for the user to modify it.
14// However, I think I'll wait until someone asks for it...
15// ------------------------------------------------------------------------
16
17%include <exception.i>
18
19%{
20#include <string>
21%}
22
23namespace std {
24
25 %naturalvar string;
26
27 class string;
28
29 %typemap(typecheck) string = char *;
30 %typemap(typecheck) const string & = char *;
31
32 %typemap(in) string (char* tempptr) {
33 if (gh_string_p($input)) {
34 tempptr = SWIG_scm2str($input);
35 $1.assign(tempptr);
36 if (tempptr) SWIG_free(tempptr);
37 } else {
38 SWIG_exception(SWIG_TypeError, "string expected");
39 }
40 }
41
42 %typemap(in) const string & (std::string temp,
43 char* tempptr) {
44 if (gh_string_p($input)) {
45 tempptr = SWIG_scm2str($input);
46 temp.assign(tempptr);
47 if (tempptr) SWIG_free(tempptr);
48 $1 = &temp;
49 } else {
50 SWIG_exception(SWIG_TypeError, "string expected");
51 }
52 }
53
54 %typemap(in) string * (char* tempptr) {
55 if (gh_string_p($input)) {
56 tempptr = SWIG_scm2str($input);
57 $1 = new std::string(tempptr);
58 if (tempptr) SWIG_free(tempptr);
59 } else {
60 SWIG_exception(SWIG_TypeError, "string expected");
61 }
62 }
63
64 %typemap(out) string {
65 $result = gh_str02scm($1.c_str());
66 }
67
68 %typemap(out) const string & {
69 $result = gh_str02scm($1->c_str());
70 }
71
72 %typemap(out) string * {
73 $result = gh_str02scm($1->c_str());
74 }
75
76 %typemap(varin) string {
77 if (gh_string_p($input)) {
78 char *tempptr = SWIG_scm2str($input);
79 $1.assign(tempptr);
80 if (tempptr) SWIG_free(tempptr);
81 } else {
82 SWIG_exception(SWIG_TypeError, "string expected");
83 }
84 }
85
86 %typemap(varout) string {
87 $result = gh_str02scm($1.c_str());
88 }
89
90}