From 685ee6cdc46bd4833851e0a55f535e9cfd18a978 Mon Sep 17 00:00:00 2001 From: William S Fulton Date: Sat, 19 Aug 2017 09:38:19 +0100 Subject: [PATCH] Use normal SWIG encodings for ref-qualifiers --- Source/CParse/parser.y | 8 +++++--- Source/Swig/naming.c | 7 +++++-- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/Source/CParse/parser.y b/Source/CParse/parser.y index 9a101b1d2..80ec8611e 100644 --- a/Source/CParse/parser.y +++ b/Source/CParse/parser.y @@ -487,7 +487,7 @@ static void add_symbols(Node *n) { } { 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_warning(WARN_TYPE_RVALUE_REF_QUALIFIER_IGNORED, Getfile(n), Getline(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 { - $$ = NewString("&"); + $$ = NewStringEmpty(); + SwigType_add_reference($$); } | LAND { - $$ = NewString("&&"); + $$ = NewStringEmpty(); + SwigType_add_rvalue_reference($$); } ; diff --git a/Source/Swig/naming.c b/Source/Swig/naming.c index 69b9e2190..4fa32538f 100644 --- a/Source/Swig/naming.c +++ b/Source/Swig/naming.c @@ -1697,8 +1697,11 @@ String *Swig_name_decl(Node *n) { decl = NewStringf("%s", qname); else decl = NewStringf("%s(%s)%s", qname, ParmList_errorstr(Getattr(n, "parms")), SwigType_isconst(Getattr(n, "decl")) ? " const" : ""); - if (refqualifier) - Printv(decl, " ", refqualifier, NIL); + if (refqualifier) { + String *rq = SwigType_str(refqualifier, 0); + Printv(decl, " ", rq, NIL); + Delete(rq); + } Delete(qname);