cppwriteincludes.h

上传用户:binglan008
上传日期:2007-01-28
资源大小:53508k
文件大小:3k
源码类别:Linux/Unix编程
开发平台:MultiPlatform
  1. /****************************************************************************
  2. **
  3. ** Copyright (C) 1992-2007 Trolltech ASA. All rights reserved.
  4. **
  5. ** This file is part of the tools applications of the Qt Toolkit.
  6. **
  7. ** This file may be used under the terms of the GNU General Public
  8. ** License version 2.0 as published by the Free Software Foundation
  9. ** and appearing in the file LICENSE.GPL included in the packaging of
  10. ** this file.  Please review the following information to ensure GNU
  11. ** General Public Licensing requirements will be met:
  12. ** http://trolltech.com/products/qt/licenses/licensing/opensource/
  13. **
  14. ** If you are unsure which license is appropriate for your use, please
  15. ** review the following information:
  16. ** http://trolltech.com/products/qt/licenses/licensing/licensingoverview
  17. ** or contact the sales department at sales@trolltech.com.
  18. **
  19. ** In addition, as a special exception, Trolltech gives you certain
  20. ** additional rights. These rights are described in the Trolltech GPL
  21. ** Exception version 1.0, which can be found at
  22. ** http://www.trolltech.com/products/qt/gplexception/ and in the file
  23. ** GPL_EXCEPTION.txt in this package.
  24. **
  25. ** In addition, as a special exception, Trolltech, as the sole copyright
  26. ** holder for Qt Designer, grants users of the Qt/Eclipse Integration
  27. ** plug-in the right for the Qt/Eclipse Integration to link to
  28. ** functionality provided by Qt Designer and its related libraries.
  29. **
  30. ** Trolltech reserves all rights not expressly granted herein.
  31. **
  32. ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
  33. ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  34. **
  35. ****************************************************************************/
  36. #ifndef CPPWRITEINCLUDES_H
  37. #define CPPWRITEINCLUDES_H
  38. #include "treewalker.h"
  39. #include <QHash>
  40. #include <QMap>
  41. #include <QSet>
  42. #include <QString>
  43. class QTextStream;
  44. class Driver;
  45. class Uic;
  46. namespace CPP {
  47. struct WriteIncludes : public TreeWalker
  48. {
  49.     WriteIncludes(Uic *uic);
  50.     void acceptUI(DomUI *node);
  51.     void acceptWidget(DomWidget *node);
  52.     void acceptLayout(DomLayout *node);
  53.     void acceptSpacer(DomSpacer *node);
  54.     void acceptProperty(DomProperty *node);
  55.     void acceptWidgetScripts(const DomScripts &, DomWidget *, const DomWidgets &);
  56. //
  57. // custom widgets
  58. //
  59.     void acceptCustomWidgets(DomCustomWidgets *node);
  60.     void acceptCustomWidget(DomCustomWidget *node);
  61. //
  62. // include hints
  63. //
  64.     void acceptIncludes(DomIncludes *node);
  65.     void acceptInclude(DomInclude *node);
  66.     bool scriptsActivated() const { return m_scriptsActivated; }
  67. private:
  68.     void add(const QString &className, bool determineHeader = true, const QString &header = QString(), bool global = false);
  69. private:
  70.     typedef QMap<QString, bool> OrderedSet;
  71.     void insertIncludeForClass(const QString &className, QString header = QString(), bool global = false);
  72.     void insertInclude(const QString &header, bool global);
  73.     void writeHeaders(const OrderedSet &headers, bool global);
  74.     QString headerForClassName(const QString &className) const;
  75.     void activateScripts();
  76.     const Uic *m_uic;
  77.     QTextStream &m_output;
  78.     OrderedSet m_localIncludes;
  79.     OrderedSet m_globalIncludes;
  80.     QSet<QString> m_includeBaseNames;
  81.     QSet<QString> m_knownClasses;
  82.     typedef QHash<QString, QString> StringMap;
  83.     StringMap m_classToHeader;
  84.     StringMap m_oldHeaderToNewHeader;
  85.     bool m_scriptsActivated;
  86. };
  87. } // namespace CPP
  88. #endif // CPPWRITEINCLUDES_H