summaryrefslogtreecommitdiff
path: root/share/swig/2.0.11/tcl/jstring.i
diff options
context:
space:
mode:
Diffstat (limited to 'share/swig/2.0.11/tcl/jstring.i')
-rw-r--r--share/swig/2.0.11/tcl/jstring.i42
1 files changed, 42 insertions, 0 deletions
diff --git a/share/swig/2.0.11/tcl/jstring.i b/share/swig/2.0.11/tcl/jstring.i
new file mode 100644
index 0000000..7fb7b89
--- /dev/null
+++ b/share/swig/2.0.11/tcl/jstring.i
@@ -0,0 +1,42 @@
+%include <typemaps/valtypes.swg>
+
+%fragment(SWIG_AsVal_frag(jstring),"header") {
+SWIGINTERN int
+SWIG_AsVal_dec(jstring)(Tcl_Obj * obj, jstring *val)
+{
+ int len = 0;
+ const char *cstr = Tcl_GetStringFromObj(obj, &len);
+ if (!cstr || (strcmp(cstr,"NULL") == 0)) {
+ if (val) *val = 0;
+ return SWIG_OK;
+ } else {
+ int len = 0;
+ const Tcl_UniChar *ucstr = Tcl_GetUnicodeFromObj(obj,&len);
+ if (val) {
+ *val = JvNewString((const jchar*)ucstr, len);
+ }
+ }
+
+ return SWIG_NEWOBJ;
+}
+}
+
+%fragment(SWIG_From_frag(jstring),"header") {
+SWIGINTERNINLINE Tcl_Obj *
+SWIG_From_dec(jstring)(jstring val)
+{
+ if (!val) {
+ return Tcl_NewStringObj("NULL",-1);
+ } else {
+ return Tcl_NewUnicodeObj((Tcl_UniChar *)JvGetStringChars(val),JvGetStringUTFLength(val));
+ }
+}
+}
+
+%typemaps_asvalfrom(%checkcode(STRING),
+ %arg(SWIG_AsVal(jstring)),
+ %arg(SWIG_From(jstring)),
+ %arg(SWIG_AsVal_frag(jstring)),
+ %arg(SWIG_From_frag(jstring)),
+ java::lang::String *);
+