20
20
#include " doxygen.h"
21
21
#include " message.h"
22
22
#include " config.h"
23
+ #include " regex.h"
23
24
#include " classlist.h"
24
25
#include " util.h"
25
26
#include " defargs.h"
@@ -497,9 +498,15 @@ static void writeMemberReference(TextStream &t,const Definition *def,const Membe
497
498
498
499
}
499
500
500
- static void stripQualifiers (QCString &typeStr)
501
+ static void stripQualifiers (QCString &typeStr, const bool onlyAnon )
501
502
{
502
- bool done=FALSE ;
503
+ static const reg::Ex marker (R"( ::@\d+)" );
504
+ static const reg::Ex marker1 (R"( ^@\d+)" );
505
+
506
+ typeStr = reg::replace (reg::replace (typeStr.str (),marker," " ),marker1," " );
507
+ if (onlyAnon) return ;
508
+
509
+ bool done=false ;
503
510
typeStr.stripPrefix (" friend " );
504
511
while (!done)
505
512
{
@@ -576,16 +583,18 @@ static void generateXMLForMember(const MemberDef *md,TextStream &ti,TextStream &
576
583
case MemberType_Dictionary: memType=" dictionary" ; break ;
577
584
}
578
585
586
+ QCString nameStr = md->name ();
587
+ stripQualifiers (nameStr,true );
579
588
ti << " <member refid=\" " << memberOutputFileBase (md)
580
589
<< " _1" << md->anchor () << " \" kind=\" " << memType << " \" ><name>"
581
- << convertToXML (md-> name () ) << " </name></member>\n " ;
590
+ << convertToXML (nameStr ) << " </name></member>\n " ;
582
591
583
592
if (groupMember)
584
593
{
585
594
t << " <member refid=\" "
586
595
<< md->getGroupDef ()->getOutputFileBase ()
587
596
<< " _1" << md->anchor () << " \" kind=\" " << memType << " \" ><name>"
588
- << convertToXML (md-> name () ) << " </name></member>\n " ;
597
+ << convertToXML (nameStr ) << " </name></member>\n " ;
589
598
return ;
590
599
}
591
600
else
@@ -815,11 +824,13 @@ static void generateXMLForMember(const MemberDef *md,TextStream &ti,TextStream &
815
824
{
816
825
writeMemberTemplateLists (md,t);
817
826
QCString typeStr = md->typeString ();
818
- stripQualifiers (typeStr);
827
+ stripQualifiers (typeStr, false );
819
828
t << " <type>" ;
820
829
linkifyText (TextGeneratorXMLImpl (t),def,md->getBodyDef (),md,typeStr);
821
830
t << " </type>\n " ;
822
- t << " <definition>" << convertToXML (md->definition ()) << " </definition>\n " ;
831
+ QCString defStr = md->definition ();
832
+ stripQualifiers (defStr,true );
833
+ t << " <definition>" << convertToXML (defStr) << " </definition>\n " ;
823
834
t << " <argsstring>" << convertToXML (md->argsString ()) << " </argsstring>\n " ;
824
835
}
825
836
@@ -830,12 +841,12 @@ static void generateXMLForMember(const MemberDef *md,TextStream &ti,TextStream &
830
841
t << " </type>\n " ;
831
842
}
832
843
833
- QCString name = md->name () ;
834
- QCString qualifiedName = md-> qualifiedName (); ;
835
- t << " <name>" << convertToXML (name ) << " </name>\n " ;
836
- if (name!=qualifiedName )
844
+ QCString qualifiedNameStr = md->qualifiedName (); ;
845
+ stripQualifiers (qualifiedNameStr, true ) ;
846
+ t << " <name>" << convertToXML (nameStr ) << " </name>\n " ;
847
+ if (nameStr!=qualifiedNameStr )
837
848
{
838
- t << " <qualifiedname>" << convertToXML (qualifiedName ) << " </qualifiedname>\n " ;
849
+ t << " <qualifiedname>" << convertToXML (qualifiedNameStr ) << " </qualifiedname>\n " ;
839
850
}
840
851
841
852
if (md->memberType () == MemberType_Property)
@@ -876,7 +887,7 @@ static void generateXMLForMember(const MemberDef *md,TextStream &ti,TextStream &
876
887
{
877
888
t << " <param>\n " ;
878
889
t << " <type>" ;
879
- linkifyText (TextGeneratorXMLImpl (t),def,md->getBodyDef (),md,md-> name () );
890
+ linkifyText (TextGeneratorXMLImpl (t),def,md->getBodyDef (),md,nameStr );
880
891
t << " </type>\n " ;
881
892
t << " </param>\n " ;
882
893
}
@@ -1323,7 +1334,9 @@ static void generateXMLForClass(const ClassDef *cd,TextStream &ti)
1323
1334
if (cd->isAbstract ()) t << " \" abstract=\" yes" ;
1324
1335
t << " \" >\n " ;
1325
1336
t << " <compoundname>" ;
1326
- writeXMLString (t,cd->name ());
1337
+ QCString nameStr = cd->name ();
1338
+ stripQualifiers (nameStr,true );
1339
+ writeXMLString (t,nameStr);
1327
1340
t << " </compoundname>\n " ;
1328
1341
for (const auto &bcd : cd->baseClasses ())
1329
1342
{
@@ -1478,7 +1491,9 @@ static void generateXMLForConcept(const ConceptDef *cd,TextStream &ti)
1478
1491
t << " <compounddef id=\" " << cd->getOutputFileBase ()
1479
1492
<< " \" kind=\" concept\" >\n " ;
1480
1493
t << " <compoundname>" ;
1481
- writeXMLString (t,cd->name ());
1494
+ QCString nameStr = cd->name ();
1495
+ stripQualifiers (nameStr,true );
1496
+ writeXMLString (t,nameStr);
1482
1497
t << " </compoundname>\n " ;
1483
1498
writeIncludeInfo (cd->includeInfo (),t);
1484
1499
writeTemplateList (cd,t);
@@ -1535,7 +1550,9 @@ static void generateXMLForNamespace(const NamespaceDef *nd,TextStream &ti)
1535
1550
<< " language=\" "
1536
1551
<< langToString (nd->getLanguage ()) << " \" >\n " ;
1537
1552
t << " <compoundname>" ;
1538
- writeXMLString (t,nd->name ());
1553
+ QCString nameStr = nd->name ();
1554
+ stripQualifiers (nameStr,true );
1555
+ writeXMLString (t,nameStr);
1539
1556
t << " </compoundname>\n " ;
1540
1557
1541
1558
writeInnerClasses (nd->getClasses (),t);
0 commit comments