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");
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($$);
}
;

View file

@ -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);