aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormescalinum <mescalinum@users.sourceforge.net>2011-11-15 19:25:13 +0000
committermescalinum <mescalinum@users.sourceforge.net>2011-11-15 19:25:13 +0000
commit6fa52928ea68ca9e0f51f8df0ce549555e984897 (patch)
treeb87c24ac22dbe4df86c9381533300e918e5e102b
parent519a19844437310ecce7a9295df7f1bcfe534282 (diff)
add proper string representation to A_SEMI and A_COMMA, so they are valid after stripping selectors
svn path=/trunk/externals/loaders/tclpd/; revision=15752
-rw-r--r--tcl_typemap.c22
1 files changed, 18 insertions, 4 deletions
diff --git a/tcl_typemap.c b/tcl_typemap.c
index e1d770f..9bc4ced 100644
--- a/tcl_typemap.c
+++ b/tcl_typemap.c
@@ -63,7 +63,10 @@ int tcl_to_pdatom(Tcl_Obj *input, t_atom *output) {
}
case A_POINTER:
{
- SETPOINTER(output, NULL);
+ long gpointer;
+ if(Tcl_GetLongFromObj(tclpd_interp, obj[1], &gpointer) == TCL_ERROR)
+ return TCL_ERROR;
+ SETPOINTER(output, (t_gpointer *)gpointer);
break;
}
case A_SEMI:
@@ -78,9 +81,12 @@ int tcl_to_pdatom(Tcl_Obj *input, t_atom *output) {
}
case A_DOLLAR:
{
- int ii;
- if(Tcl_GetIntFromObj(tclpd_interp, obj[1], &ii) == TCL_ERROR)
+ char *str = Tcl_GetStringFromObj(obj[1], 0);
+ if(!str) {
return TCL_ERROR;
+ }
+ if(*str == '$') str++;
+ int ii = atoi(str);
SETDOLLAR(output, ii);
break;
}
@@ -136,14 +142,22 @@ int pdatom_to_tcl(t_atom *input, Tcl_Obj **output) {
break;
}
case A_SEMI:
+ {
+ tcl_t_atom[1] = Tcl_NewStringObj(";", 1);
+ break;
+ }
case A_COMMA:
+ {
+ tcl_t_atom[1] = Tcl_NewStringObj(",", 1);
+ break;
+ }
case A_GIMME:
case A_CANT:
case A_BLOB:
case A_NULL:
default:
{
- tcl_t_atom[1] = Tcl_NewStringObj("--", 2);
+ tcl_t_atom[1] = Tcl_NewStringObj("?", 1);
break;
}
}