aboutsummaryrefslogtreecommitdiff
path: root/Lib/tcl/std_string.i
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/tcl/std_string.i')
-rw-r--r--Lib/tcl/std_string.i47
1 files changed, 47 insertions, 0 deletions
diff --git a/Lib/tcl/std_string.i b/Lib/tcl/std_string.i
new file mode 100644
index 000000000..c636c0388
--- /dev/null
+++ b/Lib/tcl/std_string.i
@@ -0,0 +1,47 @@
+//
+// SWIG typemaps for std::string
+// Luigi Ballabio and Manu ???
+// Apr 26, 2002
+//
+// Tcl implementation
+
+
+// ------------------------------------------------------------------------
+// std::string is typemapped by value
+// This can prevent exporting methods which return a string
+// in order for the user to modify it.
+// However, I think I'll wait until someone asks for it...
+// ------------------------------------------------------------------------
+
+%include exception.i
+
+%{
+#include <string>
+%}
+
+namespace std {
+
+ class string;
+
+ /* Overloading check */
+ %typemap(typecheck) string = char *;
+ %typemap(typecheck) const string & = char *;
+
+ %typemap(in) string {
+ $1 = std::string(Tcl_GetStringFromObj($input,NULL));
+ }
+
+ %typemap(in) const string & (std::string temp) {
+ temp = std::string(Tcl_GetStringFromObj($input,NULL));
+ $1 = &temp;
+ }
+
+ %typemap(out) string {
+ Tcl_SetStringObj($result,(char*)$1.c_str(),$1.length());
+ }
+
+ %typemap(out) const string & {
+ Tcl_SetStringObj($result,(char*)$1->c_str(),$1->length());
+ }
+
+}