From 11b935315a8706991436746267dc327d2eac812e Mon Sep 17 00:00:00 2001 From: Marcelo Matus Date: Fri, 17 Jun 2005 23:15:51 +0000 Subject: [PATCH] fix for long long types and old Tcl versions git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@7304 626c5289-ae23-0410-ae9c-e8d60b6d4f22 --- Lib/tcl/swigtcl8.swg | 1 + Lib/tcl/tcl8.swg | 23 +++++++++++++++++------ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/Lib/tcl/swigtcl8.swg b/Lib/tcl/swigtcl8.swg index 5a280534d..eb6a58c0a 100644 --- a/Lib/tcl/swigtcl8.swg +++ b/Lib/tcl/swigtcl8.swg @@ -5,6 +5,7 @@ */ #include +#include #include #include #include diff --git a/Lib/tcl/tcl8.swg b/Lib/tcl/tcl8.swg index f28c4ad5a..f911c55f8 100644 --- a/Lib/tcl/tcl8.swg +++ b/Lib/tcl/tcl8.swg @@ -492,12 +492,23 @@ } %typecheck(SWIG_TYPECHECK_INTEGER) - long long, unsigned long long, - const long long &, const unsigned long long & -{ - Tcl_WideInt tmp; - if (Tcl_GetWideIntFromObj(NULL,$input,&tmp) == TCL_ERROR) $1 = 0; - else $1 = 1; + long long, const long long & +{ + int len; + char *end = 0; + char *str = Tcl_GetStringFromObj($input, &len); + strtoll(str, &end, 0); + $1 = (end != 0) && (*end != '\0') && (str != end) && (errno == 0); +} + +%typecheck(SWIG_TYPECHECK_INTEGER) + unsigned long long, const unsigned long long & +{ + int len; + char *end = 0; + char *str = Tcl_GetStringFromObj($input, &len); + strtoull(str, &end, 0); + $1 = (end != 0) && (*end != '\0') && (str != end) && (errno == 0); } %typecheck(SWIG_TYPECHECK_DOUBLE)