make all the suffix/prefix operations aware of operators, as in 'Foo::operator ns2::Bar()', where the prefix is 'Foo'
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@7806 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
edf21ab130
commit
d34532e249
1 changed files with 33 additions and 1 deletions
|
|
@ -363,7 +363,16 @@ Swig_scopename_prefix(String *s) {
|
|||
char *tmp = Char(s);
|
||||
char *c = tmp;
|
||||
char *cc = c;
|
||||
char *co = 0;
|
||||
if (!strstr(c,"::")) return 0;
|
||||
if ((co = strstr(cc,"operator "))) {
|
||||
if (co == cc) {
|
||||
return 0;
|
||||
} else {
|
||||
String *prefix = NewStringWithSize(cc, co - cc - 2);
|
||||
return prefix;
|
||||
}
|
||||
}
|
||||
while (*c) {
|
||||
if ((*c == ':') && (*(c+1) == ':')) {
|
||||
cc = c;
|
||||
|
|
@ -402,8 +411,14 @@ Swig_scopename_last(String *s) {
|
|||
char *tmp = Char(s);
|
||||
char *c = tmp;
|
||||
char *cc = c;
|
||||
char *co = 0;
|
||||
if (!strstr(c,"::")) return NewString(s);
|
||||
|
||||
if ((co = strstr(cc,"operator "))) {
|
||||
return NewString(co);
|
||||
}
|
||||
|
||||
|
||||
while (*c) {
|
||||
if ((*c == ':') && (*(c+1) == ':')) {
|
||||
cc = c;
|
||||
|
|
@ -436,8 +451,17 @@ String *
|
|||
Swig_scopename_first(String *s) {
|
||||
char *tmp = Char(s);
|
||||
char *c = tmp;
|
||||
char *co = 0;
|
||||
if (!strstr(c,"::")) return 0;
|
||||
while (*c) {
|
||||
if ((co = strstr(c,"operator "))) {
|
||||
if (co == c) {
|
||||
return 0;
|
||||
}
|
||||
} else {
|
||||
co = c + Len(s);
|
||||
}
|
||||
|
||||
while (*c && (c != co)) {
|
||||
if ((*c == ':') && (*(c+1) == ':')) {
|
||||
break;
|
||||
} else {
|
||||
|
|
@ -473,7 +497,11 @@ String *
|
|||
Swig_scopename_suffix(String *s) {
|
||||
char *tmp = Char(s);
|
||||
char *c = tmp;
|
||||
char *co = 0;
|
||||
if (!strstr(c,"::")) return 0;
|
||||
if ((co = strstr(c,"operator "))) {
|
||||
if (co == c) return 0;
|
||||
}
|
||||
while (*c) {
|
||||
if ((*c == ':') && (*(c+1) == ':')) {
|
||||
break;
|
||||
|
|
@ -505,6 +533,10 @@ Swig_scopename_suffix(String *s) {
|
|||
|
||||
int Swig_scopename_check(String *s) {
|
||||
char *c = Char(s);
|
||||
char *co = 0;
|
||||
if ((co = strstr(c,"operator "))) {
|
||||
if (co == c) return 0;
|
||||
}
|
||||
if (!strstr(c,"::")) return 0;
|
||||
while (*c) {
|
||||
if ((*c == ':') && (*(c+1) == ':')) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue