diff options
author | William S Fulton <wsf@fultondesigns.co.uk> | 2011-11-28 19:35:44 +0000 |
---|---|---|
committer | William S Fulton <wsf@fultondesigns.co.uk> | 2011-11-28 19:35:44 +0000 |
commit | 6d922f2ddd752c8e4dd0133df3af854d78de92af (patch) | |
tree | af4cedda8900ad367eb9b272557266f0a39ad559 /Source/DOH | |
parent | 5e4c27cdfdee8e702806521767b5e366c774cf5d (diff) | |
download | swig-6d922f2ddd752c8e4dd0133df3af854d78de92af.tar.gz |
Fix #3433541 %typemap(in, numinputs=0) with 10+ arguments.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12849 626c5289-ae23-0410-ae9c-e8d60b6d4f22
Diffstat (limited to 'Source/DOH')
-rw-r--r-- | Source/DOH/doh.h | 1 | ||||
-rw-r--r-- | Source/DOH/string.c | 17 |
2 files changed, 18 insertions, 0 deletions
diff --git a/Source/DOH/doh.h b/Source/DOH/doh.h index bca5f0f0f..621d0957c 100644 --- a/Source/DOH/doh.h +++ b/Source/DOH/doh.h @@ -294,6 +294,7 @@ extern char *DohStrchr(const DOHString_or_char *s1, int ch); #define DOH_REPLACE_FIRST 0x08 #define DOH_REPLACE_ID_BEGIN 0x10 #define DOH_REPLACE_ID_END 0x20 +#define DOH_REPLACE_NUMBER_END 0x40 #define Replaceall(s,t,r) DohReplace(s,t,r,DOH_REPLACE_ANY) #define Replaceid(s,t,r) DohReplace(s,t,r,DOH_REPLACE_ID) diff --git a/Source/DOH/string.c b/Source/DOH/string.c index b067d239c..e94a2bdb2 100644 --- a/Source/DOH/string.c +++ b/Source/DOH/string.c @@ -651,6 +651,21 @@ static char *match_identifier_end(char *base, char *s, char *token, int tokenlen return 0; } +static char *match_number_end(char *base, char *s, char *token, int tokenlen) { + (void) base; + while (s) { + s = strstr(s, token); + if (!s) + return 0; + if (isdigit((int) *(s + tokenlen))) { + s += tokenlen; + continue; + } + return s; + } + return 0; +} + /* ----------------------------------------------------------------------------- * replace_simple() * @@ -899,6 +914,8 @@ static int String_replace(DOH *stro, const DOHString_or_char *token, const DOHSt return replace_simple(str, Char(token), Char(rep), flags, count, match_identifier_begin); } else if (flags & DOH_REPLACE_ID) { return replace_simple(str, Char(token), Char(rep), flags, count, match_identifier); + } else if (flags & DOH_REPLACE_NUMBER_END) { + return replace_simple(str, Char(token), Char(rep), flags, count, match_number_end); } else { return replace_simple(str, Char(token), Char(rep), flags, count, match_simple); } |