diff --git a/SWIG/Lib/tcl/tcl8.swg b/SWIG/Lib/tcl/tcl8.swg index 16d9591ff..532eff405 100644 --- a/SWIG/Lib/tcl/tcl8.swg +++ b/SWIG/Lib/tcl/tcl8.swg @@ -288,7 +288,7 @@ /* -- Variable input --- */ -%typemap(varin) int, unsigned int, short, unsigned short, long, unsigned long, signed char, unsigned char, enum SWIGTYPE +%typemap(varin) int, unsigned int, short, unsigned short, long, unsigned long, signed char, unsigned char { long temp; if (Tcl_GetLongFromObj(interp, $input, &temp) != TCL_OK) { @@ -297,6 +297,18 @@ $1 = ($1_type) temp; } +%typemap(varin) enum SWIGTYPE +{ + int temp; + if (Tcl_GetIntFromObj(interp, $input, &temp) != TCL_OK) { + return (char*) "Type error. expected an integer"; + } + if (sizeof(int) != sizeof($1)) { + return (char*) "enum variable '$name' can not be set."; + } + *(int *)(void *)&($1) = temp; +} + %typemap(varin) bool { long temp; @@ -354,6 +366,10 @@ strncpy((char*)$1,temp,$1_dim0); } +%typemap(varin,warning="462: Unable to set variable of type char []") char [] { + return (char*)"Variable $symname is read-only."; +} + %typemap(varin) char { char *temp = Tcl_GetStringFromObj($input,NULL);