summaryrefslogtreecommitdiffstats
path: root/addon/doxmlparser/src/mainhandler.h
blob: e466b6f52d2bf6328e2975c13ce5e4e4c1c3b187 (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
/******************************************************************************
 *
 * $Id$
 *
 *
 * Copyright (C) 1997-2001 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.
 *
 */

#ifndef _MAINHANDLER_H
#define _MAINHANDLER_H

#include <qlist.h>
#include "basehandler.h"
#include "compoundhandler.h"
#include <doxmlintf.h>
#include "memberhandler.h"

class MainHandler : public IDoxygen, public BaseHandler<MainHandler>
{
  public:
    virtual void startCompound(const QXmlAttributes& attrib);
    MainHandler();
    virtual ~MainHandler();

    ICompoundIterator *compounds() const
    {
      return new CompoundIterator(m_compounds);
    }
    ICompound *compoundById(const QString &id) const
    {
      return m_compoundDict[id];
    }
    virtual ICompound *compoundByName(const QString &name) const
    {
      return name.isEmpty() ? 0 : m_compoundNameDict[name]; 
    }
    virtual IMember *memberById(const QString &id) const
    {
      return m_memberDict[id];
    }
    virtual IMemberIterator *memberByName(const QString &name) const
    {
      QList<IMember> *ml = m_memberNameDict[name];
      if (ml==0) return 0;
      return new MemberIterator(*ml); 
    }
    virtual void release() { delete this; }
    void insertMemberById(const QString &id,IMember *h);
    void insertMemberByName(const QString &name,IMember *h);

    void initialize();

  private:
    QList<ICompound>       m_compounds;
    QDict<ICompound>       m_compoundDict;
    QDict<ICompound>       m_compoundNameDict;
    QDict<IMember>         m_memberDict;
    QDict<QList<IMember> > m_memberNameDict;
};

#endif