From fdfd672d72efaca065df367b7eb645733d928421 Mon Sep 17 00:00:00 2001 From: Dimitri van Heesch Date: Sun, 22 Sep 2013 10:23:09 +0200 Subject: Bug 707825 - Const treatment --- src/scanner.l | 39 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/src/scanner.l b/src/scanner.l index 9e2cfd5..8d4cadd 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -1598,9 +1598,20 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}) "@class" | // for Objective C class declarations {B}*{TYPEDEFPREFIX}"class{" | {B}*{TYPEDEFPREFIX}"class"{BN}+ { - isTypedef=((QCString)yytext).find("typedef")!=-1; + QCString decl = yytext; + isTypedef=decl.find("typedef")!=-1; + bool isConst=decl.find("const")!=-1; + bool isVolatile=decl.find("volatile")!=-1; current->section = Entry::CLASS_SEC; addType( current ) ; + if (isConst) + { + current->type += " const"; + } + else if (isVolatile) + { + current->type += " volatile"; + } current->type += " class" ; current->fileName = yyFileName; current->startLine = yyLineNr; @@ -1689,13 +1700,24 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}) } {B}*{TYPEDEFPREFIX}"struct{" | {B}*{TYPEDEFPREFIX}"struct"/{BN}+ { - isTypedef=((QCString)yytext).find("typedef")!=-1; + QCString decl = yytext; + isTypedef=decl.find("typedef")!=-1; + bool isConst=decl.find("const")!=-1; + bool isVolatile=decl.find("volatile")!=-1; current->section = Entry::CLASS_SEC ; current->spec = Entry::Struct | (current->spec & Entry::Published); // preserve UNO IDL // bug 582676: can be a struct nested in an interface so keep insideObjC state //current->objc = insideObjC = FALSE; addType( current ) ; + if (isConst) + { + current->type += " const"; + } + else if (isVolatile) + { + current->type += " volatile"; + } current->type += " struct" ; current->fileName = yyFileName; current->startLine = yyLineNr; @@ -1752,12 +1774,23 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}) } {B}*{TYPEDEFPREFIX}"union{" | {B}*{TYPEDEFPREFIX}"union"{BN}+ { - isTypedef=((QCString)yytext).find("typedef")!=-1; + QCString decl=yytext; + isTypedef=decl.find("typedef")!=-1; + bool isConst=decl.find("const")!=-1; + bool isVolatile=decl.find("volatile")!=-1; current->section = Entry::CLASS_SEC; current->spec = Entry::Union; // bug 582676: can be a struct nested in an interface so keep insideObjC state //current->objc = insideObjC = FALSE; addType( current ) ; + if (isConst) + { + current->type += " const"; + } + else if (isVolatile) + { + current->type += " volatile"; + } current->type += " union" ; current->fileName = yyFileName; current->startLine = yyLineNr; -- cgit v0.12