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 *tmp = Char(s);
|
||||||
char *c = tmp;
|
char *c = tmp;
|
||||||
char *cc = c;
|
char *cc = c;
|
||||||
|
char *co = 0;
|
||||||
if (!strstr(c,"::")) return 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) {
|
while (*c) {
|
||||||
if ((*c == ':') && (*(c+1) == ':')) {
|
if ((*c == ':') && (*(c+1) == ':')) {
|
||||||
cc = c;
|
cc = c;
|
||||||
|
|
@ -402,8 +411,14 @@ Swig_scopename_last(String *s) {
|
||||||
char *tmp = Char(s);
|
char *tmp = Char(s);
|
||||||
char *c = tmp;
|
char *c = tmp;
|
||||||
char *cc = c;
|
char *cc = c;
|
||||||
|
char *co = 0;
|
||||||
if (!strstr(c,"::")) return NewString(s);
|
if (!strstr(c,"::")) return NewString(s);
|
||||||
|
|
||||||
|
if ((co = strstr(cc,"operator "))) {
|
||||||
|
return NewString(co);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
while (*c) {
|
while (*c) {
|
||||||
if ((*c == ':') && (*(c+1) == ':')) {
|
if ((*c == ':') && (*(c+1) == ':')) {
|
||||||
cc = c;
|
cc = c;
|
||||||
|
|
@ -436,8 +451,17 @@ String *
|
||||||
Swig_scopename_first(String *s) {
|
Swig_scopename_first(String *s) {
|
||||||
char *tmp = Char(s);
|
char *tmp = Char(s);
|
||||||
char *c = tmp;
|
char *c = tmp;
|
||||||
|
char *co = 0;
|
||||||
if (!strstr(c,"::")) return 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) == ':')) {
|
if ((*c == ':') && (*(c+1) == ':')) {
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -473,7 +497,11 @@ String *
|
||||||
Swig_scopename_suffix(String *s) {
|
Swig_scopename_suffix(String *s) {
|
||||||
char *tmp = Char(s);
|
char *tmp = Char(s);
|
||||||
char *c = tmp;
|
char *c = tmp;
|
||||||
|
char *co = 0;
|
||||||
if (!strstr(c,"::")) return 0;
|
if (!strstr(c,"::")) return 0;
|
||||||
|
if ((co = strstr(c,"operator "))) {
|
||||||
|
if (co == c) return 0;
|
||||||
|
}
|
||||||
while (*c) {
|
while (*c) {
|
||||||
if ((*c == ':') && (*(c+1) == ':')) {
|
if ((*c == ':') && (*(c+1) == ':')) {
|
||||||
break;
|
break;
|
||||||
|
|
@ -505,6 +533,10 @@ Swig_scopename_suffix(String *s) {
|
||||||
|
|
||||||
int Swig_scopename_check(String *s) {
|
int Swig_scopename_check(String *s) {
|
||||||
char *c = Char(s);
|
char *c = Char(s);
|
||||||
|
char *co = 0;
|
||||||
|
if ((co = strstr(c,"operator "))) {
|
||||||
|
if (co == c) return 0;
|
||||||
|
}
|
||||||
if (!strstr(c,"::")) return 0;
|
if (!strstr(c,"::")) return 0;
|
||||||
while (*c) {
|
while (*c) {
|
||||||
if ((*c == ':') && (*(c+1) == ':')) {
|
if ((*c == ':') && (*(c+1) == ':')) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue