Exemplo n.º 1
0
bool MemberList::declVisible() const
{
  MemberListIterator mli(*this);
  const MemberDef *md;
  for ( ; (md=mli.current()); ++mli )
  {
    if (md->isBriefSectionVisible())
    {
      switch (md->memberType())
      {
        case MemberType_Define:     // fall through
        case MemberType_Typedef:    // fall through
        case MemberType_Variable:   // fall through
        case MemberType_Function:   // fall through
        case MemberType_Signal:     // fall through
        case MemberType_Slot:       // fall through
        case MemberType_DCOP:       // fall through
        case MemberType_Property:   // fall through
        case MemberType_Interface:  // fall through
        case MemberType_Service:    // fall through
        case MemberType_Sequence:   // fall through
        case MemberType_Dictionary: // fall through
        case MemberType_Event:  
          return TRUE;
        case MemberType_Enumeration: 
          {
            // if this is an anonymous enum and there are variables of this
            // enum type (i.e. enumVars>0), then we do not show the enum here.
            if (countEnumValues(md)==0) // show enum here
            {
              return TRUE;
            }
          }
          break;
        case MemberType_Friend:
          return TRUE;
        case MemberType_EnumValue: 
          {
            if (m_inGroup)
            {
              return TRUE;
            }
          }
          break;
      }
    }
  }
  return FALSE;
}
Exemplo n.º 2
0
void MemberList::writePlainDeclarations(OutputList &ol,
                                        ClassDef *cd,NamespaceDef *nd,FileDef *fd,
                                        GroupDef *gd,ClassDef *inheritedFrom,const char *inheritId
                                       )
{
    //printf("----- writePlainDeclaration() ----\n");
    static bool hideUndocMembers = Config_getBool(HIDE_UNDOC_MEMBERS);
    countDecMembers();
    if (numDecMembers()==0)
    {
        //printf("  --> no members!\n");
        return; // no members in this list
    }
    //printf("  --> writePlainDeclaration() numDecMembers()=%d\n",
    //    numDecMembers());

    ol.pushGeneratorState();

    bool first=TRUE;
    MemberDef *md;
    MemberListIterator mli(*this);
    for ( ; (md=mli.current()); ++mli )
    {
        //printf(">>> Member `%s' type=%d visible=%d\n",
        //    md->name().data(),md->memberType(),md->isBriefSectionVisible());
        if ((inheritedFrom==0 || !md->isReimplementedBy(inheritedFrom)) &&
                md->isBriefSectionVisible())
        {
            //printf(">>> rendering\n");
            switch(md->memberType())
            {
            case MemberType_Define:    // fall through
            //case MemberType_Prototype: // fall through
            case MemberType_Typedef:   // fall through
            case MemberType_Variable:  // fall through
            case MemberType_Function:  // fall through
            case MemberType_Signal:    // fall through
            case MemberType_Slot:      // fall through
            case MemberType_DCOP:      // fall through
            case MemberType_Property:  // fall through
            case MemberType_Interface: // fall through
            case MemberType_Service:   // fall through
            case MemberType_Clause:    // fall through
            case MemberType_Event:
            {
                if (first) ol.startMemberList(),first=FALSE;
                md->writeDeclaration(ol,cd,nd,fd,gd,m_inGroup,inheritedFrom,inheritId);
                break;
            }
            case MemberType_Enumeration:
            {
                // if this is an anonymous enum and there are variables of this
                // enum type (i.e. enumVars>0), then we do not show the enum here.
                if (countEnumValues(md,TRUE)==0) // show enum here
                {
                    //printf("Enum!!\n");
                    if (first)
                    {
                        ol.startMemberList();
                        first=FALSE;
                    }
                    ol.startMemberDeclaration();
                    ol.startMemberItem(md->anchor(),0,inheritId);
                    bool detailsLinkable = md->isDetailedSectionLinkable();
                    if (!detailsLinkable)
                    {
                        ol.startDoxyAnchor(md->getOutputFileBase(),0,md->anchor(),md->name(),QCString());
                    }
                    ol.writeString("enum ");
                    ol.insertMemberAlign();
                    md->writeEnumDeclaration(ol,cd,nd,fd,gd);
                    if (!detailsLinkable)
                    {
                        ol.endDoxyAnchor(md->getOutputFileBase(),md->anchor());
                    }
                    if (!md->briefDescription().isEmpty() && Config_getBool(BRIEF_MEMBER_DESC))
                    {
                        DocRoot *rootNode = validatingParseDoc(
                                                md->briefFile(),md->briefLine(),
                                                cd,md,
                                                md->briefDescription(),
                                                TRUE,FALSE,0,TRUE,FALSE
                                            );
                        if (rootNode && !rootNode->isEmpty())
                        {
                            ol.startMemberDescription(md->anchor());
                            ol.writeDoc(rootNode,cd,md);
                            if (md->isDetailedSectionLinkable())
                            {
                                ol.disableAllBut(OutputGenerator::Html);
                                ol.docify(" ");
                                ol.startTextLink(md->getOutputFileBase(),
                                                 md->anchor());
                                ol.parseText(theTranslator->trMore());
                                ol.endTextLink();
                                ol.enableAll();
                            }
                            ol.endMemberDescription();
                        }
                        delete rootNode;
                    }
                    ol.endMemberItem();
                    ol.endMemberDeclaration(md->anchor(),inheritId);
                }
                md->warnIfUndocumented();
                break;
            }
            case MemberType_Friend:
                if (inheritedFrom==0)
                {
                    if (first)
                    {
                        ol.startMemberList();
                        first=FALSE;
                    }
                    md->writeDeclaration(ol,cd,nd,fd,gd,m_inGroup,inheritedFrom,inheritId);
                    break;
                }
            case MemberType_EnumValue:
            {
                if (m_inGroup)
                {
                    //printf("EnumValue!\n");
                    if (first) ol.startMemberList(),first=FALSE;
                    md->writeDeclaration(ol,cd,nd,fd,gd,m_inGroup,inheritedFrom,inheritId);
                }
            }
            break;
            }
        }
    }

    // handle members that are inside anonymous compounds and for which
    // no variables of the anonymous compound type exist.
    if (cd)
    {
        MemberListIterator mli(*this);
        for  ( ; (md=mli.current()) ; ++mli )
        {
            if (md->fromAnonymousScope() && !md->anonymousDeclShown())
            {
                md->setFromAnonymousScope(FALSE);
                //printf("anonymous compound members\n");
                if (md->isBriefSectionVisible())
                {
                    if (first)
                    {
                        ol.startMemberList();
                        first=FALSE;
                    }
                    md->writeDeclaration(ol,cd,nd,fd,gd,m_inGroup);
                }
                md->setFromAnonymousScope(TRUE);
            }
        }
    }

    if (!first)
    {
        ol.endMemberList();
    }

    ol.popGeneratorState();
    //printf("----- end writePlainDeclaration() ----\n");
}