Commit 4f520b36 authored by Dimitri van Heesch's avatar Dimitri van Heesch
Browse files

Merge branch 'tagenum'

parents c471d38e b0b17dc7
Loading
Loading
Loading
Loading
+13 −2
Original line number Original line Diff line number Diff line
@@ -1295,10 +1295,21 @@ static void addClassToContext(EntryNav *rootNav)
      tagName     = rootNav->tagInfo()->tagName;
      tagName     = rootNav->tagInfo()->tagName;
      refFileName = rootNav->tagInfo()->fileName;
      refFileName = rootNav->tagInfo()->fileName;
    }
    }
    Definition *d = 0;
    int i;
    if ((i=fullName.find("::"))!=-1)
    {
      d = buildScopeFromQualifiedName(fullName,fullName.contains("::"),root->lang);
    }
    cd=new ClassDef(root->fileName,root->startLine,root->startColumn,
    cd=new ClassDef(root->fileName,root->startLine,root->startColumn,
        fullName,sec,tagName,refFileName,TRUE,root->spec&Entry::Enum);
        fullName,sec,tagName,refFileName,TRUE,root->spec&Entry::Enum);
    Debug::print(Debug::Classes,0,"  New class `%s' (sec=0x%08x)! #tArgLists=%d\n",
    Debug::print(Debug::Classes,0,"  New class `%s' (sec=0x%08x)! #tArgLists=%d\n",
        fullName.data(),sec,root->tArgLists ? (int)root->tArgLists->count() : -1);
        fullName.data(),sec,root->tArgLists ? (int)root->tArgLists->count() : -1);
    if (d)
    {
      cd->setOuterScope(d);
      d->addInnerCompound(cd);
    }
    cd->setDocumentation(root->doc,root->docFile,root->docLine); // copy docs to definition
    cd->setDocumentation(root->doc,root->docFile,root->docLine); // copy docs to definition
    cd->setBriefDescription(root->brief,root->briefFile,root->briefLine);
    cd->setBriefDescription(root->brief,root->briefFile,root->briefLine);
    cd->setLanguage(root->lang);    
    cd->setLanguage(root->lang);    
@@ -7187,8 +7198,8 @@ static void addEnumValuesToEnums(EntryNav *rootNav)
                // them here and only add them to the enum
                // them here and only add them to the enum
                e->loadEntry(g_storage);
                e->loadEntry(g_storage);
                Entry *root = e->entry();
                Entry *root = e->entry();
                //printf("md->qualifiedName()=%s rootNav->name()=%s tagInfo=%p\n",
                //printf("md->qualifiedName()=%s rootNav->name()=%s tagInfo=%p name=%s\n",
                //    md->qualifiedName().data(),rootNav->name().data(),rootNav->tagInfo());
                //    md->qualifiedName().data(),rootNav->name().data(),rootNav->tagInfo(),root->name.data());
                if (substitute(md->qualifiedName(),"::",".")== // TODO: add function to get canonical representation
                if (substitute(md->qualifiedName(),"::",".")== // TODO: add function to get canonical representation
                    substitute(rootNav->name(),"::",".") ||    // enum value scope matches that of the enum
                    substitute(rootNav->name(),"::",".") ||    // enum value scope matches that of the enum
                    rootNav->tagInfo()                         // be less strict for tag files as members can have incomplete scope
                    rootNav->tagInfo()                         // be less strict for tag files as members can have incomplete scope
+2 −1
Original line number Original line Diff line number Diff line
@@ -4279,7 +4279,8 @@ bool getDefs(const QCString &scName,
          MemberDef *tmd = mmd->getEnumScope();
          MemberDef *tmd = mmd->getEnumScope();
          //printf("try member %s tmd=%s\n",mmd->name().data(),tmd?tmd->name().data():"<none>");
          //printf("try member %s tmd=%s\n",mmd->name().data(),tmd?tmd->name().data():"<none>");
          int ni=namespaceName.findRev("::");
          int ni=namespaceName.findRev("::");
          bool notInNS = tmd && ni==-1 && tmd->getNamespaceDef()==0;
          //printf("namespaceName=%s ni=%d\n",namespaceName.data(),ni);
          bool notInNS = tmd && ni==-1 && tmd->getNamespaceDef()==0 && (mScope.isEmpty() || mScope==tmd->name());
          bool sameNS  = tmd && tmd->getNamespaceDef() && namespaceName.left(ni)==tmd->getNamespaceDef()->name();
          bool sameNS  = tmd && tmd->getNamespaceDef() && namespaceName.left(ni)==tmd->getNamespaceDef()->name();
          //printf("notInNS=%d sameNS=%d\n",notInNS,sameNS);
          //printf("notInNS=%d sameNS=%d\n",notInNS,sameNS);
          if (tmd && tmd->isStrong() && // C++11 enum class
          if (tmd && tmd->isStrong() && // C++11 enum class