annotate generator/containergenerator.h @ 282:256ab6cb8e85

Signals look-up andNew syntax for connect. The old one will not work from now on. This will allow for the signals overload. Although changes are done for both D1 and D2 versions, D1 won't work because of compiler bugs. I am tired of waiting for fixes.
author eldar
date Fri, 16 Oct 2009 02:43:59 +0000
parents ae06da58ec25
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
e78566595089 initial import
mandel
parents:
diff changeset
1 /****************************************************************************
e78566595089 initial import
mandel
parents:
diff changeset
2 **
e78566595089 initial import
mandel
parents:
diff changeset
3 ** Copyright (C) 1992-2008 Nokia. All rights reserved.
e78566595089 initial import
mandel
parents:
diff changeset
4 **
e78566595089 initial import
mandel
parents:
diff changeset
5 ** This file is part of Qt Jambi.
e78566595089 initial import
mandel
parents:
diff changeset
6 **
e78566595089 initial import
mandel
parents:
diff changeset
7 ** * Commercial Usage
e78566595089 initial import
mandel
parents:
diff changeset
8 * Licensees holding valid Qt Commercial licenses may use this file in
e78566595089 initial import
mandel
parents:
diff changeset
9 * accordance with the Qt Commercial License Agreement provided with the
e78566595089 initial import
mandel
parents:
diff changeset
10 * Software or, alternatively, in accordance with the terms contained in
e78566595089 initial import
mandel
parents:
diff changeset
11 * a written agreement between you and Nokia.
e78566595089 initial import
mandel
parents:
diff changeset
12 *
e78566595089 initial import
mandel
parents:
diff changeset
13 *
e78566595089 initial import
mandel
parents:
diff changeset
14 * GNU General Public License Usage
e78566595089 initial import
mandel
parents:
diff changeset
15 * Alternatively, this file may be used under the terms of the GNU
e78566595089 initial import
mandel
parents:
diff changeset
16 * General Public License versions 2.0 or 3.0 as published by the Free
e78566595089 initial import
mandel
parents:
diff changeset
17 * Software Foundation and appearing in the file LICENSE.GPL included in
e78566595089 initial import
mandel
parents:
diff changeset
18 * the packaging of this file. Please review the following information
e78566595089 initial import
mandel
parents:
diff changeset
19 * to ensure GNU General Public Licensing requirements will be met:
e78566595089 initial import
mandel
parents:
diff changeset
20 * http://www.fsf.org/licensing/licenses/info/GPLv2.html and
e78566595089 initial import
mandel
parents:
diff changeset
21 * http://www.gnu.org/copyleft/gpl.html. In addition, as a special
e78566595089 initial import
mandel
parents:
diff changeset
22 * exception, Nokia gives you certain additional rights. These rights
e78566595089 initial import
mandel
parents:
diff changeset
23 * are described in the Nokia Qt GPL Exception version 1.2, included in
e78566595089 initial import
mandel
parents:
diff changeset
24 * the file GPL_EXCEPTION.txt in this package.
e78566595089 initial import
mandel
parents:
diff changeset
25 *
e78566595089 initial import
mandel
parents:
diff changeset
26 * Qt for Windows(R) Licensees
e78566595089 initial import
mandel
parents:
diff changeset
27 * As a special exception, Nokia, as the sole copyright holder for Qt
e78566595089 initial import
mandel
parents:
diff changeset
28 * Designer, grants users of the Qt/Eclipse Integration plug-in the
e78566595089 initial import
mandel
parents:
diff changeset
29 * right for the Qt/Eclipse Integration to link to functionality
e78566595089 initial import
mandel
parents:
diff changeset
30 * provided by Qt Designer and its related libraries.
e78566595089 initial import
mandel
parents:
diff changeset
31 *
e78566595089 initial import
mandel
parents:
diff changeset
32 *
e78566595089 initial import
mandel
parents:
diff changeset
33 * If you are unsure which license is appropriate for your use, please
e78566595089 initial import
mandel
parents:
diff changeset
34 * contact the sales department at qt-sales@nokia.com.
e78566595089 initial import
mandel
parents:
diff changeset
35
e78566595089 initial import
mandel
parents:
diff changeset
36 **
e78566595089 initial import
mandel
parents:
diff changeset
37 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
e78566595089 initial import
mandel
parents:
diff changeset
38 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
e78566595089 initial import
mandel
parents:
diff changeset
39 **
e78566595089 initial import
mandel
parents:
diff changeset
40 ****************************************************************************/
e78566595089 initial import
mandel
parents:
diff changeset
41
e78566595089 initial import
mandel
parents:
diff changeset
42 #ifndef CONTAINERGENERATOR_H
e78566595089 initial import
mandel
parents:
diff changeset
43 #define CONTAINERGENERATOR_H
e78566595089 initial import
mandel
parents:
diff changeset
44
e78566595089 initial import
mandel
parents:
diff changeset
45 #include "dgenerator.h"
e78566595089 initial import
mandel
parents:
diff changeset
46 #include "metajava.h"
e78566595089 initial import
mandel
parents:
diff changeset
47 #include "prigenerator.h"
e78566595089 initial import
mandel
parents:
diff changeset
48
e78566595089 initial import
mandel
parents:
diff changeset
49 const int NUM_ARRAY_FUNCS = 3;
e78566595089 initial import
mandel
parents:
diff changeset
50
e78566595089 initial import
mandel
parents:
diff changeset
51 class ContainerGenerator : public DGenerator
e78566595089 initial import
mandel
parents:
diff changeset
52 {
e78566595089 initial import
mandel
parents:
diff changeset
53 Q_OBJECT
e78566595089 initial import
mandel
parents:
diff changeset
54
e78566595089 initial import
mandel
parents:
diff changeset
55 public:
e78566595089 initial import
mandel
parents:
diff changeset
56 enum OutputDirectoryType {
e78566595089 initial import
mandel
parents:
diff changeset
57 CppDirectory,
e78566595089 initial import
mandel
parents:
diff changeset
58 DDirectory,
e78566595089 initial import
mandel
parents:
diff changeset
59 HDirectory
e78566595089 initial import
mandel
parents:
diff changeset
60 };
e78566595089 initial import
mandel
parents:
diff changeset
61
e78566595089 initial import
mandel
parents:
diff changeset
62 typedef void (ContainerGenerator::*WriteOut)(QTextStream &s, AbstractMetaClass *cls);
e78566595089 initial import
mandel
parents:
diff changeset
63
167
ae06da58ec25 fixed hacky conversion of arguments when emmitting a signal
eldar
parents: 1
diff changeset
64 ContainerGenerator(CppImplGenerator *cpp_impl_generator);
1
e78566595089 initial import
mandel
parents:
diff changeset
65
e78566595089 initial import
mandel
parents:
diff changeset
66 virtual void generate();
e78566595089 initial import
mandel
parents:
diff changeset
67 virtual void write(QTextStream &s, const AbstractMetaClass *java_class);
e78566595089 initial import
mandel
parents:
diff changeset
68 void writeFile(const QString& fileName, OutputDirectoryType dirType, WriteOut writeOut);
e78566595089 initial import
mandel
parents:
diff changeset
69
e78566595089 initial import
mandel
parents:
diff changeset
70 // base functions for operating with arrays
e78566595089 initial import
mandel
parents:
diff changeset
71 void writeHeaderContent(QTextStream &s, AbstractMetaClass *cls);
e78566595089 initial import
mandel
parents:
diff changeset
72 void writeCppContent(QTextStream &s, AbstractMetaClass *cls);
e78566595089 initial import
mandel
parents:
diff changeset
73 void writeDContent(QTextStream &s, AbstractMetaClass *cls);
167
ae06da58ec25 fixed hacky conversion of arguments when emmitting a signal
eldar
parents: 1
diff changeset
74 void writeDContent2(QTextStream &s, AbstractMetaClass *cls);
1
e78566595089 initial import
mandel
parents:
diff changeset
75
e78566595089 initial import
mandel
parents:
diff changeset
76 void buildTypeList();
e78566595089 initial import
mandel
parents:
diff changeset
77
e78566595089 initial import
mandel
parents:
diff changeset
78 void processFunction(const AbstractMetaFunction *d_function);
e78566595089 initial import
mandel
parents:
diff changeset
79 void processType(AbstractMetaType *d_type);
e78566595089 initial import
mandel
parents:
diff changeset
80 void addTypeEntry(const TypeEntry* te);
e78566595089 initial import
mandel
parents:
diff changeset
81
e78566595089 initial import
mandel
parents:
diff changeset
82 virtual QString subDirectoryForPackage(const QString &package, OutputDirectoryType type) const;
e78566595089 initial import
mandel
parents:
diff changeset
83
e78566595089 initial import
mandel
parents:
diff changeset
84 void setFilenameStub(const QString &stub) { m_filenameStub = stub; }
e78566595089 initial import
mandel
parents:
diff changeset
85 QString filenameStub() const { return m_filenameStub; }
e78566595089 initial import
mandel
parents:
diff changeset
86
e78566595089 initial import
mandel
parents:
diff changeset
87 QString headerFilename() const { return filenameStub() + ".h"; }
e78566595089 initial import
mandel
parents:
diff changeset
88 QString cppFilename() const { return filenameStub() + "_shell.cpp"; }
e78566595089 initial import
mandel
parents:
diff changeset
89 QString dFilename() const { return filenameStub() + ".d"; }
e78566595089 initial import
mandel
parents:
diff changeset
90
e78566595089 initial import
mandel
parents:
diff changeset
91 private:
e78566595089 initial import
mandel
parents:
diff changeset
92 virtual void writeArrayFunctions(QTextStream &s, const ComplexTypeEntry *centry);
e78566595089 initial import
mandel
parents:
diff changeset
93 void writeHeaderArrayFunctions(QTextStream &s, const ComplexTypeEntry *centry);
e78566595089 initial import
mandel
parents:
diff changeset
94 void writeNotice(QTextStream &s);
e78566595089 initial import
mandel
parents:
diff changeset
95
e78566595089 initial import
mandel
parents:
diff changeset
96 void setFuncNames(const QString& cls_name);
e78566595089 initial import
mandel
parents:
diff changeset
97
e78566595089 initial import
mandel
parents:
diff changeset
98 QString m_filenameStub;
e78566595089 initial import
mandel
parents:
diff changeset
99 QSet<const TypeEntry*> containerTypes;
e78566595089 initial import
mandel
parents:
diff changeset
100 // QSet< QPair<const TypeEntry*, AbstractMetaClass*> > containerTypes;
e78566595089 initial import
mandel
parents:
diff changeset
101 AbstractMetaClass* m_class;
e78566595089 initial import
mandel
parents:
diff changeset
102
e78566595089 initial import
mandel
parents:
diff changeset
103 QString all_name, ass_name, get_name;
167
ae06da58ec25 fixed hacky conversion of arguments when emmitting a signal
eldar
parents: 1
diff changeset
104 // QMap<QString, QMap<const TypeEntry*, AbstractMetaType*> > signalEntries;
ae06da58ec25 fixed hacky conversion of arguments when emmitting a signal
eldar
parents: 1
diff changeset
105 QMap<QString, QSet<AbstractMetaType*> > signalEntries;
ae06da58ec25 fixed hacky conversion of arguments when emmitting a signal
eldar
parents: 1
diff changeset
106
ae06da58ec25 fixed hacky conversion of arguments when emmitting a signal
eldar
parents: 1
diff changeset
107 CppImplGenerator *m_cpp_impl_generator;
1
e78566595089 initial import
mandel
parents:
diff changeset
108 };
e78566595089 initial import
mandel
parents:
diff changeset
109
e78566595089 initial import
mandel
parents:
diff changeset
110 #endif // CONTAINERGENERATOR_H