summaryrefslogtreecommitdiffstats
path: root/src/tools
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools')
-rw-r--r--src/tools/bootstrap/bootstrap.pri22
-rw-r--r--src/tools/bootstrap/bootstrap.pro27
-rw-r--r--src/tools/moc/generator.cpp50
-rw-r--r--src/tools/moc/moc.cpp84
-rw-r--r--src/tools/moc/moc.h8
-rw-r--r--src/tools/moc/util/generate_keywords.pro1
-rw-r--r--src/tools/tools.pro21
-rw-r--r--src/tools/uic/cpp/cppextractimages.cpp2
-rw-r--r--src/tools/uic/cpp/cppwriteicondata.cpp12
-rw-r--r--src/tools/uic/cpp/cppwriteicondata.h3
-rw-r--r--src/tools/uic/option.h2
-rw-r--r--src/tools/uic3/converter.cpp1
-rw-r--r--src/tools/uic3/form.cpp1
-rw-r--r--src/tools/uic3/main.cpp3
-rw-r--r--src/tools/uic3/ui3reader.h3
15 files changed, 148 insertions, 92 deletions
diff --git a/src/tools/bootstrap/bootstrap.pri b/src/tools/bootstrap/bootstrap.pri
index b3ee948..1aa8121 100644
--- a/src/tools/bootstrap/bootstrap.pri
+++ b/src/tools/bootstrap/bootstrap.pri
@@ -42,18 +42,19 @@ hpux-acc*|hpuxi-acc* {
} else {
contains(CONFIG, debug_and_release_target) {
CONFIG(debug, debug|release) {
- LIBS+=-L$$QT_BUILD_TREE/src/tools/bootstrap/debug
+ QMAKE_LIBDIR += $$QT_BUILD_TREE/src/tools/bootstrap/debug
} else {
- LIBS+=-L$$QT_BUILD_TREE/src/tools/bootstrap/release
+ QMAKE_LIBDIR += $$QT_BUILD_TREE/src/tools/bootstrap/release
}
} else {
- LIBS += -L$$QT_BUILD_TREE/src/tools/bootstrap
+ QMAKE_LIBDIR += $$QT_BUILD_TREE/src/tools/bootstrap
}
LIBS += -lbootstrap
}
-!contains(QT_CONFIG, zlib):!contains(QT_CONFIG, no-zlib) {
- unix:LIBS += -lz
-# win32:LIBS += libz.lib
+!contains(QT_CONFIG, zlib):!contains(QT_CONFIG, no-zlib):!cross_compile {
+ symbian:LIBS_PRIVATE += -llibz
+ else:if(unix|win32-g++*):LIBS_PRIVATE += -lz
+ else:LIBS += zdll.lib
}
win32:LIBS += -luser32
@@ -62,3 +63,12 @@ mac {
LIBS += -framework CoreServices
}
+# Make dummy "sis" and "freeze" target to keep recursive "make sis/freeze" working.
+sis_target.target = sis
+sis_target.commands =
+sis_target.depends = first
+QMAKE_EXTRA_TARGETS += sis_target
+freeze_target.target = freeze
+freeze_target.commands =
+freeze_target.depends = first
+QMAKE_EXTRA_TARGETS += freeze_target
diff --git a/src/tools/bootstrap/bootstrap.pro b/src/tools/bootstrap/bootstrap.pro
index 21fd412..ba844ea 100644
--- a/src/tools/bootstrap/bootstrap.pro
+++ b/src/tools/bootstrap/bootstrap.pro
@@ -96,21 +96,18 @@ macx: {
LIBS += -framework CoreServices
}
-contains(QT_CONFIG, zlib) {
- INCLUDEPATH += ../../3rdparty/zlib
- SOURCES+= \
- ../3rdparty/zlib/adler32.c \
- ../3rdparty/zlib/compress.c \
- ../3rdparty/zlib/crc32.c \
- ../3rdparty/zlib/deflate.c \
- ../3rdparty/zlib/gzio.c \
- ../3rdparty/zlib/inffast.c \
- ../3rdparty/zlib/inflate.c \
- ../3rdparty/zlib/inftrees.c \
- ../3rdparty/zlib/trees.c \
- ../3rdparty/zlib/uncompr.c \
- ../3rdparty/zlib/zutil.c
-}
+if(contains(QT_CONFIG, zlib)|cross_compile):include(../../3rdparty/zlib.pri)
+else:include(../../3rdparty/zlib_dependency.pri)
lib.CONFIG = dummy_install
INSTALLS += lib
+
+# Make dummy "sis" and "freeze" target to keep recursive "make sis/freeze" working.
+sis_target.target = sis
+sis_target.commands =
+sis_target.depends = first
+QMAKE_EXTRA_TARGETS += sis_target
+freeze_target.target = freeze
+freeze_target.commands =
+freeze_target.depends = first
+QMAKE_EXTRA_TARGETS += freeze_target
diff --git a/src/tools/moc/generator.cpp b/src/tools/moc/generator.cpp
index ff8029b..c3bbba1 100644
--- a/src/tools/moc/generator.cpp
+++ b/src/tools/moc/generator.cpp
@@ -173,7 +173,7 @@ void Generator::generateCode()
int index = 14;
fprintf(out, "static const uint qt_meta_data_%s[] = {\n", qualifiedClassNameIdentifier.constData());
fprintf(out, "\n // content:\n");
- fprintf(out, " %4d, // revision\n", 4);
+ fprintf(out, " %4d, // revision\n", 5);
fprintf(out, " %4d, // classname\n", strreg(cdef->qualified));
fprintf(out, " %4d, %4d, // classinfo\n", cdef->classInfoList.count(), cdef->classInfoList.count() ? index : 0);
index += cdef->classInfoList.count() * 2;
@@ -483,54 +483,6 @@ void Generator::generateFunctions(QList<FunctionDef>& list, const char *functype
void Generator::generateProperties()
{
//
- // specify get function, for compatibiliy we accept functions
- // returning pointers, or const char * for QByteArray.
- //
- for (int i = 0; i < cdef->propertyList.count(); ++i) {
- PropertyDef &p = cdef->propertyList[i];
- if (p.read.isEmpty())
- continue;
- for (int j = 0; j < cdef->publicList.count(); ++j) {
- const FunctionDef &f = cdef->publicList.at(j);
- if (f.name != p.read)
- continue;
- if (!f.isConst) // get functions must be const
- continue;
- if (f.arguments.size()) // and must not take any arguments
- continue;
- PropertyDef::Specification spec = PropertyDef::ValueSpec;
- QByteArray tmp = f.normalizedType;
- if (p.type == "QByteArray" && tmp == "const char *")
- tmp = "QByteArray";
- if (tmp.left(6) == "const ")
- tmp = tmp.mid(6);
- if (p.type != tmp && tmp.endsWith('*')) {
- tmp.chop(1);
- spec = PropertyDef::PointerSpec;
- } else if (f.type.name.endsWith('&')) { // raw type, not normalized type
- spec = PropertyDef::ReferenceSpec;
- }
- if (p.type != tmp)
- continue;
- p.gspec = spec;
- break;
- }
- if(!p.notify.isEmpty()) {
- int notifyId = -1;
- for (int j = 0; j < cdef->signalList.count(); ++j) {
- const FunctionDef &f = cdef->signalList.at(j);
- if(f.name != p.notify) {
- continue;
- } else {
- notifyId = j /* Signal indexes start from 0 */;
- break;
- }
- }
- p.notifyId = notifyId;
- }
- }
-
- //
// Create meta data
//
diff --git a/src/tools/moc/moc.cpp b/src/tools/moc/moc.cpp
index 680b8a5..2c24165 100644
--- a/src/tools/moc/moc.cpp
+++ b/src/tools/moc/moc.cpp
@@ -230,11 +230,13 @@ Type Moc::parseType()
}
}
while (test(CONST) || test(VOLATILE) || test(SIGNED) || test(UNSIGNED)
- || test(STAR) || test(AND)) {
+ || test(STAR) || test(AND) || test(ANDAND)) {
type.name += ' ';
type.name += lexem();
if (lookup(0) == AND)
type.referenceType = Type::Reference;
+ else if (lookup(0) == ANDAND)
+ type.referenceType = Type::RValueReference;
else if (lookup(0) == STAR)
type.referenceType = Type::Pointer;
}
@@ -725,6 +727,7 @@ void Moc::parse()
error("Class declarations lacks Q_OBJECT macro.");
checkSuperClasses(&def);
+ checkProperties(&def);
classList += def;
knownQObjectClasses.insert(def.classname);
@@ -1206,6 +1209,12 @@ bool Moc::until(Token target) {
default: break;
}
}
+
+ //when searching commas within the default argument, we should take care of template depth (anglecount)
+ // unfortunatelly, we do not have enough semantic information to know if '<' is the operator< or
+ // the beginning of a template type. so we just use heuristics.
+ int possible = -1;
+
while (index < symbols.size()) {
Token t = symbols.at(index++).token;
switch (t) {
@@ -1224,8 +1233,16 @@ bool Moc::until(Token target) {
&& braceCount <= 0
&& brackCount <= 0
&& parenCount <= 0
- && (target != RANGLE || angleCount <= 0))
+ && (target != RANGLE || angleCount <= 0)) {
+ if (target != COMMA || angleCount <= 0)
+ return true;
+ possible = index;
+ }
+
+ if (target == COMMA && t == EQ && possible != -1) {
+ index = possible;
return true;
+ }
if (braceCount < 0 || brackCount < 0 || parenCount < 0
|| (target == RANGLE && angleCount < 0)) {
@@ -1233,6 +1250,12 @@ bool Moc::until(Token target) {
break;
}
}
+
+ if(target == COMMA && angleCount != 0 && possible != -1) {
+ index = possible;
+ return true;
+ }
+
return false;
}
@@ -1290,5 +1313,62 @@ void Moc::checkSuperClasses(ClassDef *def)
}
}
+void Moc::checkProperties(ClassDef *cdef)
+{
+ //
+ // specify get function, for compatibiliy we accept functions
+ // returning pointers, or const char * for QByteArray.
+ //
+ for (int i = 0; i < cdef->propertyList.count(); ++i) {
+ PropertyDef &p = cdef->propertyList[i];
+ if (p.read.isEmpty())
+ continue;
+ for (int j = 0; j < cdef->publicList.count(); ++j) {
+ const FunctionDef &f = cdef->publicList.at(j);
+ if (f.name != p.read)
+ continue;
+ if (!f.isConst) // get functions must be const
+ continue;
+ if (f.arguments.size()) // and must not take any arguments
+ continue;
+ PropertyDef::Specification spec = PropertyDef::ValueSpec;
+ QByteArray tmp = f.normalizedType;
+ if (p.type == "QByteArray" && tmp == "const char *")
+ tmp = "QByteArray";
+ if (tmp.left(6) == "const ")
+ tmp = tmp.mid(6);
+ if (p.type != tmp && tmp.endsWith('*')) {
+ tmp.chop(1);
+ spec = PropertyDef::PointerSpec;
+ } else if (f.type.name.endsWith('&')) { // raw type, not normalized type
+ spec = PropertyDef::ReferenceSpec;
+ }
+ if (p.type != tmp)
+ continue;
+ p.gspec = spec;
+ break;
+ }
+ if(!p.notify.isEmpty()) {
+ int notifyId = -1;
+ for (int j = 0; j < cdef->signalList.count(); ++j) {
+ const FunctionDef &f = cdef->signalList.at(j);
+ if(f.name != p.notify) {
+ continue;
+ } else {
+ notifyId = j /* Signal indexes start from 0 */;
+ break;
+ }
+ }
+ p.notifyId = notifyId;
+ if (notifyId == -1) {
+ QByteArray msg = "NOTIFY signal '" + p.notify + "' of property '" + p.name
+ + "' does not exist in class " + cdef->classname + ".";
+ error(msg.constData());
+ }
+ }
+ }
+}
+
+
QT_END_NAMESPACE
diff --git a/src/tools/moc/moc.h b/src/tools/moc/moc.h
index d365ed5..5e47d9a 100644
--- a/src/tools/moc/moc.h
+++ b/src/tools/moc/moc.h
@@ -55,7 +55,7 @@ struct QMetaObject;
struct Type
{
- enum ReferenceType { NoReference, Reference, Pointer };
+ enum ReferenceType { NoReference, Reference, RValueReference, Pointer };
inline Type() : isVolatile(false), isScoped(false), firstToken(NOTOKEN), referenceType(NoReference) {}
inline explicit Type(const QByteArray &_name) : name(_name), isVolatile(false), isScoped(false), firstToken(NOTOKEN), referenceType(NoReference) {}
@@ -238,12 +238,16 @@ public:
bool testFunctionAttribute(Token tok, FunctionDef *def);
void checkSuperClasses(ClassDef *def);
+ void checkProperties(ClassDef* cdef);
};
inline QByteArray noRef(const QByteArray &type)
{
- if (type.endsWith('&'))
+ if (type.endsWith('&')) {
+ if (type.endsWith("&&"))
+ return type.left(type.length()-2);
return type.left(type.length()-1);
+ }
return type;
}
diff --git a/src/tools/moc/util/generate_keywords.pro b/src/tools/moc/util/generate_keywords.pro
index 8dff744..eb04409 100644
--- a/src/tools/moc/util/generate_keywords.pro
+++ b/src/tools/moc/util/generate_keywords.pro
@@ -10,4 +10,3 @@ INCLUDEPATH += .
# Input
SOURCES += generate_keywords.cpp
CONFIG += qt create_prl link_prl
-OBJECTS_DIR=.obj/debug-shared
diff --git a/src/tools/tools.pro b/src/tools/tools.pro
index 25527e3..4736d09 100644
--- a/src/tools/tools.pro
+++ b/src/tools/tools.pro
@@ -1,6 +1,7 @@
TEMPLATE = subdirs
-TOOLS_SUBDIRS = src_tools_bootstrap src_tools_moc src_tools_rcc src_tools_uic
+TOOLS_SUBDIRS = src_tools_bootstrap src_tools_moc src_tools_rcc
+!contains(QT_CONFIG, no-gui): TOOLS_SUBDIRS += src_tools_uic
!cross_compile {
contains(QT_CONFIG, qt3support): SRC_SUBDIRS += src_tools_uic3
win32:!wince*: SRC_SUBDIRS += src_tools_idc
@@ -20,7 +21,7 @@ src_tools_uic3.target = sub-uic3
src_tools_idc.subdir = $$QT_SOURCE_TREE/src/tools/idc
src_tools_idc.target = sub-idc
-!wince*:!symbian:!ordered {
+!wince*:!ordered {
# Set dependencies for each subdir
src_tools_moc.depends = src_tools_bootstrap
src_tools_rcc.depends = src_tools_bootstrap
@@ -44,24 +45,24 @@ EXTRA_RELEASE_TARGETS =
SUB_TEMPLATE = $$list($$fromfile($$subpro, TEMPLATE))
!isEqual(subname, src_tools_bootstrap):if(isEqual($$SUB_TEMPLATE, lib) | isEqual($$SUB_TEMPLATE, subdirs) | isEqual(subname, src_tools_idc) | isEqual(subname, src_tools_uic3)):!separate_debug_info {
#debug
- eval(debug-$${subtarget}.depends = $${subdir}\$${QMAKE_DIR_SEP}$(MAKEFILE) $$EXTRA_DEBUG_TARGETS)
- eval(debug-$${subtarget}.commands = (cd $$subdir && $(MAKE) -f $(MAKEFILE) debug))
+ debug-$${subtarget}.depends = $${subdir}$${QMAKE_DIR_SEP}$(MAKEFILE) $$EXTRA_DEBUG_TARGETS
+ debug-$${subtarget}.commands = (cd $$subdir && $(MAKE) -f $(MAKEFILE) debug)
EXTRA_DEBUG_TARGETS += debug-$${subtarget}
QMAKE_EXTRA_TARGETS += debug-$${subtarget}
#release
- eval(release-$${subtarget}.depends = $${subdir}\$${QMAKE_DIR_SEP}$(MAKEFILE) $$EXTRA_RELEASE_TARGETS)
- eval(release-$${subtarget}.commands = (cd $$subdir && $(MAKE) -f $(MAKEFILE) release))
+ release-$${subtarget}.depends = $${subdir}$${QMAKE_DIR_SEP}$(MAKEFILE) $$EXTRA_RELEASE_TARGETS
+ release-$${subtarget}.commands = (cd $$subdir && $(MAKE) -f $(MAKEFILE) release)
EXTRA_RELEASE_TARGETS += release-$${subtarget}
QMAKE_EXTRA_TARGETS += release-$${subtarget}
} else { #do not have a real debug target/release
#debug
- eval(debug-$${subtarget}.depends = $${subdir}\$${QMAKE_DIR_SEP}$(MAKEFILE) $$EXTRA_DEBUG_TARGETS)
- eval(debug-$${subtarget}.commands = (cd $$subdir && $(MAKE) -f $(MAKEFILE) first))
+ debug-$${subtarget}.depends = $${subdir}$${QMAKE_DIR_SEP}$(MAKEFILE) $$EXTRA_DEBUG_TARGETS
+ debug-$${subtarget}.commands = (cd $$subdir && $(MAKE) -f $(MAKEFILE) first)
EXTRA_DEBUG_TARGETS += debug-$${subtarget}
QMAKE_EXTRA_TARGETS += debug-$${subtarget}
#release
- eval(release-$${subtarget}.depends = $${subdir}\$${QMAKE_DIR_SEP}$(MAKEFILE) $$EXTRA_RELEASE_TARGETS)
- eval(release-$${subtarget}.commands = (cd $$subdir && $(MAKE) -f $(MAKEFILE) first))
+ release-$${subtarget}.depends = $${subdir}$${QMAKE_DIR_SEP}$(MAKEFILE) $$EXTRA_RELEASE_TARGETS
+ release-$${subtarget}.commands = (cd $$subdir && $(MAKE) -f $(MAKEFILE) first)
EXTRA_RELEASE_TARGETS += release-$${subtarget}
QMAKE_EXTRA_TARGETS += release-$${subtarget}
}
diff --git a/src/tools/uic/cpp/cppextractimages.cpp b/src/tools/uic/cpp/cppextractimages.cpp
index d452168..52c1b9d 100644
--- a/src/tools/uic/cpp/cppextractimages.cpp
+++ b/src/tools/uic/cpp/cppextractimages.cpp
@@ -134,7 +134,7 @@ void ExtractImages::acceptImage(DomImage *image)
QTextStream *imageOut = new QTextStream(&f);
imageOut->setCodec(QTextCodec::codecForName("UTF-8"));
- CPP::WriteIconData::writeImage(*imageOut, QString(), image);
+ CPP::WriteIconData::writeImage(*imageOut, QString(), m_option.limitXPM_LineLength, image);
delete imageOut;
} else {
CPP::WriteIconData::writeImage(f, image);
diff --git a/src/tools/uic/cpp/cppwriteicondata.cpp b/src/tools/uic/cpp/cppwriteicondata.cpp
index 81ef56b..7e4b5c8 100644
--- a/src/tools/uic/cpp/cppwriteicondata.cpp
+++ b/src/tools/uic/cpp/cppwriteicondata.cpp
@@ -114,10 +114,12 @@ void WriteIconData::acceptImages(DomImages *images)
void WriteIconData::acceptImage(DomImage *image)
{
- writeImage(output, option.indent, image);
+ // Limit line length when writing code.
+ writeImage(output, option.indent, true, image);
}
-void WriteIconData::writeImage(QTextStream &output, const QString &indent, DomImage *image)
+void WriteIconData::writeImage(QTextStream &output, const QString &indent,
+ bool limitXPM_LineLength, const DomImage *image)
{
QString img = image->attributeName() + QLatin1String("_data");
QString data = image->elementData()->text();
@@ -133,7 +135,8 @@ void WriteIconData::writeImage(QTextStream &output, const QString &indent, DomIm
int a = 0;
int column = 0;
bool inQuote = false;
- output << indent << "static const char* const " << img << "[] = { \n";
+ output << indent << "/* XPM */\n"
+ << indent << "static const char* const " << img << "[] = { \n";
while (baunzip[a] != '\"')
a++;
for (; a < (int) length; a++) {
@@ -144,7 +147,8 @@ void WriteIconData::writeImage(QTextStream &output, const QString &indent, DomIm
inQuote = !inQuote;
}
- if (column++ >= 511 && inQuote) {
+ column++;
+ if (limitXPM_LineLength && column >= 512 && inQuote) {
output << "\"\n\""; // be nice with MSVC & Co.
column = 1;
}
diff --git a/src/tools/uic/cpp/cppwriteicondata.h b/src/tools/uic/cpp/cppwriteicondata.h
index 40d56bc..42cfab0 100644
--- a/src/tools/uic/cpp/cppwriteicondata.h
+++ b/src/tools/uic/cpp/cppwriteicondata.h
@@ -64,7 +64,8 @@ public:
void acceptImages(DomImages *images);
void acceptImage(DomImage *image);
- static void writeImage(QTextStream &output, const QString &indent, DomImage *image);
+ static void writeImage(QTextStream &output, const QString &indent,
+ bool limitXPM_LineLength, const DomImage *image);
static void writeImage(QIODevice &output, DomImage *image);
private:
diff --git a/src/tools/uic/option.h b/src/tools/uic/option.h
index f1198a0..8556728 100644
--- a/src/tools/uic/option.h
+++ b/src/tools/uic/option.h
@@ -61,6 +61,7 @@ struct Option
unsigned int autoConnection : 1;
unsigned int dependencies : 1;
unsigned int extractImages : 1;
+ unsigned int limitXPM_LineLength : 1;
unsigned int implicitIncludes: 1;
Generator generator;
@@ -85,6 +86,7 @@ struct Option
autoConnection(1),
dependencies(0),
extractImages(0),
+ limitXPM_LineLength(0),
implicitIncludes(1),
generator(CppGenerator),
prefix(QLatin1String("Ui_"))
diff --git a/src/tools/uic3/converter.cpp b/src/tools/uic3/converter.cpp
index e1b4b38..2ee939d 100644
--- a/src/tools/uic3/converter.cpp
+++ b/src/tools/uic3/converter.cpp
@@ -518,6 +518,7 @@ DomUI *Ui3Reader::generateUi4(const QDomElement &widget)
if (m_extractImages) {
Option opt;
opt.extractImages = m_extractImages;
+ opt.limitXPM_LineLength = (m_options & LimitXPM_LineLength) ? 1 : 0;
opt.qrcOutputFile = m_qrcOutputFile;
CPP::ExtractImages(opt).acceptUI(ui);
diff --git a/src/tools/uic3/form.cpp b/src/tools/uic3/form.cpp
index df1314f..9df644a 100644
--- a/src/tools/uic3/form.cpp
+++ b/src/tools/uic3/form.cpp
@@ -256,6 +256,7 @@ void Ui3Reader::createFormDecl(const QDomElement &e)
d.option().headerProtection = false;
d.option().copyrightHeader = false;
d.option().extractImages = m_extractImages;
+ d.option().limitXPM_LineLength = (m_options & LimitXPM_LineLength) ? 1 : 0;
d.option().qrcOutputFile = m_qrcOutputFile;
d.option().implicitIncludes = (m_options & ImplicitIncludes) ? 1 : 0;
if (trmacro.size())
diff --git a/src/tools/uic3/main.cpp b/src/tools/uic3/main.cpp
index 1ebb76a..d7657b1 100644
--- a/src/tools/uic3/main.cpp
+++ b/src/tools/uic3/main.cpp
@@ -149,6 +149,8 @@ int runUic3(int argc, char * argv[])
readerOptions &= ~Ui3Reader::CustomWidgetForwardDeclarations;
} else if (opt == "layout-names") {
readerOptions |= Ui3Reader::PreserveLayoutNames;
+ } else if (opt == "limit-xpm-linelength") {
+ readerOptions |= Ui3Reader::LimitXPM_LineLength;
} else if (opt == "nounload") {
// skip
} else if (opt == "convert") {
@@ -251,6 +253,7 @@ int runUic3(int argc, char * argv[])
"Options:\n"
"\t-o file Write output to file rather than stdout\n"
"\t-extract qrcFile Create resource file and extract embedded images into \"image\" dir\n"
+ "\t-limit-xpm-linelength Limit the line length of XPM files for -extract.\n"
"\t-pch file Add #include \"file\" as the first statement in implementation\n"
"\t-nofwd Omit forward declarations of custom classes\n"
"\t-layout-names Preserve layout names of Qt Designer 3\n"
diff --git a/src/tools/uic3/ui3reader.h b/src/tools/uic3/ui3reader.h
index 144ef05..abe323e 100644
--- a/src/tools/uic3/ui3reader.h
+++ b/src/tools/uic3/ui3reader.h
@@ -68,7 +68,8 @@ typedef QList<QPair<int, Color> > ColorGroup;
class Ui3Reader
{
public:
- enum Options { CustomWidgetForwardDeclarations = 0x1, ImplicitIncludes = 0x2, PreserveLayoutNames = 0x4 };
+ enum Options { CustomWidgetForwardDeclarations = 0x1, ImplicitIncludes = 0x2,
+ PreserveLayoutNames = 0x4, LimitXPM_LineLength = 0x8 };
explicit Ui3Reader(QTextStream &stream, unsigned options);
~Ui3Reader();