summaryrefslogtreecommitdiff
path: root/Source/DOH
diff options
context:
space:
mode:
authorWilliam S Fulton <wsf@fultondesigns.co.uk>2011-11-28 19:35:44 +0000
committerWilliam S Fulton <wsf@fultondesigns.co.uk>2011-11-28 19:35:44 +0000
commit6d922f2ddd752c8e4dd0133df3af854d78de92af (patch)
treeaf4cedda8900ad367eb9b272557266f0a39ad559 /Source/DOH
parent5e4c27cdfdee8e702806521767b5e366c774cf5d (diff)
downloadswig-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.h1
-rw-r--r--Source/DOH/string.c17
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);
}