Use normal SWIG encodings for ref-qualifiers

This commit is contained in:
William S Fulton 2017-08-19 09:38:19 +01:00
commit 685ee6cdc4
2 changed files with 10 additions and 5 deletions

View file

@ -487,7 +487,7 @@ static void add_symbols(Node *n) {
} }
{ {
String *refqualifier = Getattr(n, "refqualifier"); String *refqualifier = Getattr(n, "refqualifier");
if (Equal(refqualifier, "&&") && strncmp(Char(symname), "$ignore", 7) != 0) { if (SwigType_isrvalue_reference(refqualifier) && strncmp(Char(symname), "$ignore", 7) != 0) {
SWIG_WARN_NODE_BEGIN(n); SWIG_WARN_NODE_BEGIN(n);
Swig_warning(WARN_TYPE_RVALUE_REF_QUALIFIER_IGNORED, Getfile(n), Getline(n), Swig_warning(WARN_TYPE_RVALUE_REF_QUALIFIER_IGNORED, Getfile(n), Getline(n),
"Method with rvalue ref-qualifier ignored %s.\n", Swig_name_decl(n)); "Method with rvalue ref-qualifier ignored %s.\n", Swig_name_decl(n));
@ -5866,10 +5866,12 @@ cv_ref_qualifier : type_qualifier {
; ;
ref_qualifier : AND { ref_qualifier : AND {
$$ = NewString("&"); $$ = NewStringEmpty();
SwigType_add_reference($$);
} }
| LAND { | LAND {
$$ = NewString("&&"); $$ = NewStringEmpty();
SwigType_add_rvalue_reference($$);
} }
; ;

View file

@ -1697,8 +1697,11 @@ String *Swig_name_decl(Node *n) {
decl = NewStringf("%s", qname); decl = NewStringf("%s", qname);
else else
decl = NewStringf("%s(%s)%s", qname, ParmList_errorstr(Getattr(n, "parms")), SwigType_isconst(Getattr(n, "decl")) ? " const" : ""); decl = NewStringf("%s(%s)%s", qname, ParmList_errorstr(Getattr(n, "parms")), SwigType_isconst(Getattr(n, "decl")) ? " const" : "");
if (refqualifier) if (refqualifier) {
Printv(decl, " ", refqualifier, NIL); String *rq = SwigType_str(refqualifier, 0);
Printv(decl, " ", rq, NIL);
Delete(rq);
}
Delete(qname); Delete(qname);