PageRenderTime 23ms CodeModel.GetById 22ms app.highlight 0ms RepoModel.GetById 1ms app.codeStats 0ms

/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}