summaryrefslogtreecommitdiffstats
path: root/src/classlist.cpp
blob: f62ff366bc9d9e52642a800b35796fb684f63612 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
/******************************************************************************
 *
 * 
 *
 * Copyright (C) 1997-2000 by Dimitri van Heesch.
 *
 * Permission to use, copy, modify, and distribute this software and its
 * documentation under the terms of the GNU General Public License is hereby 
 * granted. No representations are made about the suitability of this software 
 * for any purpose. It is provided "as is" without express or implied warranty.
 * See the GNU General Public License for more details.
 *
 * Documents produced by Doxygen are derivative works derived from the
 * input used in their production; they are not affected by this license.
 *
 */

#include "classlist.h"
#include "config.h"
#include "util.h"
#include "outputlist.h"
#include "language.h"
#include "doc.h"
#include "doxygen.h"

ClassList::ClassList() : QList<ClassDef>()
{
}

ClassList::~ClassList()
{
}

int ClassList::compareItems(GCI item1, GCI item2)
{
  ClassDef *c1=(ClassDef *)item1;
  ClassDef *c2=(ClassDef *)item2;
  //int prefixLength = Config::ignorePrefix.length();
  //int i1 = c1->name().left(prefixLength)==Config::ignorePrefix ? prefixLength : 0;
  //int i2 = c2->name().left(prefixLength)==Config::ignorePrefix ? prefixLength : 0;
  return stricmp(c1->name().data()+getPrefixIndex(c1->name()),
                 c2->name().data()+getPrefixIndex(c2->name())
                );
}

ClassListIterator::ClassListIterator(const ClassList &cllist) :
  QListIterator<ClassDef>(cllist)
{
}

void ClassList::writeDeclaration(OutputList &ol)
{
  if (count()>0)
  {
    ClassDef *cd=first();
    bool found=FALSE;
    while (cd)
    {
      if (cd->name().find('@')==-1)
      {
        bool isLink = cd->isLinkable();
        if (isLink || !Config::hideClassFlag)
        {
          if (!found)
          {
            ol.startMemberHeader();
            parseText(ol,theTranslator->trCompounds());
            ol.endMemberHeader();
            ol.startMemberList();
            found=TRUE;
          }
          if (!Config::genTagFile.isEmpty()) 
          {
            tagFile << "    <class>" << convertToXML(cd->name()) << "</class>" << endl;
          }
          ol.startMemberItem(FALSE);
          switch (cd->compoundType())
          {
            case ClassDef::Class:      ol.writeString("class");  break;
            case ClassDef::Struct:     ol.writeString("struct"); break;
            case ClassDef::Union:      ol.writeString("union");  break;
            case ClassDef::Interface:  ol.writeString("interface");  break;
            case ClassDef::Exception:  ol.writeString("exception");  break;
          }
          ol.writeString(" ");
          ol.insertMemberAlign();
          if (isLink) 
          {
            ol.writeObjectLink(cd->getReference(),
                cd->getOutputFileBase(),
                0,
                cd->name()
               );
          }
          else 
          {
            ol.startBold();
            ol.docify(cd->name());
            ol.endBold();
          }
          ol.endMemberItem(FALSE);
        }
      }
      cd=next();
    }
    if (found) ol.endMemberList();
  }
}