summaryrefslogtreecommitdiff
path: root/util/qlalr/cppgenerator.cpp
diff options
context:
space:
mode:
authorPeter Hartmann <peter.hartmann@nokia.com>2009-10-29 14:15:59 +0100
committerPeter Hartmann <peter.hartmann@nokia.com>2009-11-11 11:12:12 +0100
commit1502df3ddedc5a4365e12bce570d946744259785 (patch)
tree977757c93743bce8df23a180e64a08f749935ba7 /util/qlalr/cppgenerator.cpp
parentc412b5f144ea99ea70f4df291678631e13900962 (diff)
downloadqt4-tools-1502df3ddedc5a4365e12bce570d946744259785.tar.gz
utils/qlalr generator: adapt changes to xmlstream and script files
some changes were made to qxmlstream_p.h and script files directly; however, those files are generated automatically by src/corelib/xml/make-parser.sh and src/script/parser/make-parser.sh, respectively, so the generator would overwrite the manual changes to the files the next time it is run. This patch integrates those changes into the generator rather than into the files directly. Reviewed-by: Roberto Raggi Reviewed-by: Olivier Goffart
Diffstat (limited to 'util/qlalr/cppgenerator.cpp')
-rw-r--r--util/qlalr/cppgenerator.cpp71
1 files changed, 43 insertions, 28 deletions
diff --git a/util/qlalr/cppgenerator.cpp b/util/qlalr/cppgenerator.cpp
index 39d94cd0b4..91340d2ef4 100644
--- a/util/qlalr/cppgenerator.cpp
+++ b/util/qlalr/cppgenerator.cpp
@@ -341,8 +341,8 @@ void CppGenerator::operator () ()
}
QTextStream out (&f);
- out << "// This file was generated by qlalr - DO NOT EDIT!\n";
+ // copyright headers must come first, otherwise the headers tests will fail
if (copyright)
{
out << copyrightHeader()
@@ -350,8 +350,16 @@ void CppGenerator::operator () ()
<< endl;
}
+ out << "// This file was generated by qlalr - DO NOT EDIT!\n";
+
out << startIncludeGuard(grammar.merged_output) << endl;
+ if (copyright) {
+ out << "#if defined(Q_OS_VXWORKS) && defined(ERROR)" << endl
+ << "# undef ERROR" << endl
+ << "#endif" << endl << endl;
+ }
+
generateDecl (out);
generateImpl (out);
out << p.decls();
@@ -371,10 +379,10 @@ void CppGenerator::operator () ()
QFile f (declFileName);
f.open (QFile::WriteOnly);
QTextStream out (&f);
- out << "// This file was generated by qlalr - DO NOT EDIT!\n";
QString prot = declFileName.toUpper ().replace (QLatin1Char ('.'), QLatin1Char ('_'));
+ // copyright headers must come first, otherwise the headers tests will fail
if (copyright)
{
out << copyrightHeader()
@@ -382,11 +390,19 @@ void CppGenerator::operator () ()
<< endl;
}
+ out << "// This file was generated by qlalr - DO NOT EDIT!\n";
+
out << "#ifndef " << prot << endl
<< "#define " << prot << endl
<< endl;
+ if (copyright) {
+ out << "#include <QtCore/qglobal.h>" << endl << endl;
+ out << "QT_BEGIN_NAMESPACE" << endl << endl;
+ }
generateDecl (out);
+ if (copyright)
+ out << "QT_END_NAMESPACE" << endl;
out << "#endif // " << prot << endl << endl;
} // end decls
@@ -395,13 +411,19 @@ void CppGenerator::operator () ()
QFile f (bitsFileName);
f.open (QFile::WriteOnly);
QTextStream out (&f);
- out << "// This file was generated by qlalr - DO NOT EDIT!\n";
+ // copyright headers must come first, otherwise the headers tests will fail
if (copyright)
out << copyrightHeader();
+ out << "// This file was generated by qlalr - DO NOT EDIT!\n";
+
out << "#include \"" << declFileName << "\"" << endl << endl;
+ if (copyright)
+ out << "QT_BEGIN_NAMESPACE" << endl << endl;
generateImpl(out);
+ if (copyright)
+ out << "QT_END_NAMESPACE" << endl;
} // end bits
@@ -410,7 +432,6 @@ void CppGenerator::operator () ()
QFile f (grammar.decl_file_name);
f.open (QFile::WriteOnly);
QTextStream out (&f);
- out << "// This file was generated by qlalr - DO NOT EDIT!\n";
out << p.decls();
}
@@ -419,7 +440,6 @@ void CppGenerator::operator () ()
QFile f (grammar.impl_file_name);
f.open (QFile::WriteOnly);
QTextStream out (&f);
- out << "// This file was generated by qlalr - DO NOT EDIT!\n";
out << p.impls();
}
}
@@ -468,9 +488,9 @@ void CppGenerator::generateDecl (QTextStream &out)
<< " GOTO_CHECK_OFFSET = " << compressed_action.check.size () << endl
<< " };" << endl
<< endl
- << " static const char *const spell [];" << endl
- << " static const int lhs [];" << endl
- << " static const int rhs [];" << endl;
+ << " static const char *const spell [];" << endl
+ << " static const short lhs [];" << endl
+ << " static const short rhs [];" << endl;
if (debug_info)
{
@@ -482,24 +502,19 @@ void CppGenerator::generateDecl (QTextStream &out)
<< "#endif // " << prot << endl << endl;
}
- out << " static const int goto_default [];" << endl
- << " static const int action_default [];" << endl
- << " static const int action_index [];" << endl
- << " static const int action_info [];" << endl
- << " static const int action_check [];" << endl
+ out << " static const short goto_default [];" << endl
+ << " static const short action_default [];" << endl
+ << " static const short action_index [];" << endl
+ << " static const short action_info [];" << endl
+ << " static const short action_check [];" << endl
<< endl
<< " static inline int nt_action (int state, int nt)" << endl
<< " {" << endl
- << " const int *const goto_index = &action_index [GOTO_INDEX_OFFSET];" << endl
- << " const int *const goto_check = &action_check [GOTO_CHECK_OFFSET];" << endl
- << endl
- << " const int yyn = goto_index [state] + nt;" << endl
- << endl
- << " if (yyn < 0 || goto_check [yyn] != nt)" << endl
+ << " const int yyn = action_index [GOTO_INDEX_OFFSET + state] + nt;" << endl
+ << " if (yyn < 0 || action_check [GOTO_CHECK_OFFSET + yyn] != nt)" << endl
<< " return goto_default [nt];" << endl
<< endl
- << " const int *const goto_info = &action_info [GOTO_INFO_OFFSET];" << endl
- << " return goto_info [yyn];" << endl
+ << " return action_info [GOTO_INFO_OFFSET + yyn];" << endl
<< " }" << endl
<< endl
<< " static inline int t_action (int state, int token)" << endl
@@ -567,7 +582,7 @@ void CppGenerator::generateImpl (QTextStream &out)
out << "};" << endl << endl;
- out << "const int " << grammar.table_name << "::lhs [] = {";
+ out << "const short " << grammar.table_name << "::lhs [] = {";
idx = 0;
for (RulePointer rule = grammar.rules.begin (); rule != grammar.rules.end (); ++rule, ++idx)
{
@@ -581,7 +596,7 @@ void CppGenerator::generateImpl (QTextStream &out)
}
out << "};" << endl << endl;
- out << "const int " << grammar.table_name << ":: rhs[] = {";
+ out << "const short " << grammar.table_name << "::rhs [] = {";
idx = 0;
for (RulePointer rule = grammar.rules.begin (); rule != grammar.rules.end (); ++rule, ++idx)
{
@@ -636,7 +651,7 @@ void CppGenerator::generateImpl (QTextStream &out)
<< "#endif // " << prot << endl << endl;
}
- out << "const int " << grammar.table_name << "::action_default [] = {";
+ out << "const short " << grammar.table_name << "::action_default [] = {";
idx = 0;
for (StatePointer state = aut.states.begin (); state != aut.states.end (); ++state, ++idx)
{
@@ -653,7 +668,7 @@ void CppGenerator::generateImpl (QTextStream &out)
}
out << "};" << endl << endl;
- out << "const int " << grammar.table_name << "::goto_default [] = {";
+ out << "const short " << grammar.table_name << "::goto_default [] = {";
for (int i = 0; i < defgoto.size (); ++i)
{
if (i)
@@ -666,7 +681,7 @@ void CppGenerator::generateImpl (QTextStream &out)
}
out << "};" << endl << endl;
- out << "const int " << grammar.table_name << "::action_index [] = {";
+ out << "const short " << grammar.table_name << "::action_index [] = {";
for (int i = 0; i < compressed_action.index.size (); ++i)
{
if (! (i % 10))
@@ -687,7 +702,7 @@ void CppGenerator::generateImpl (QTextStream &out)
}
out << "};" << endl << endl;
- out << "const int " << grammar.table_name << "::action_info [] = {";
+ out << "const short " << grammar.table_name << "::action_info [] = {";
for (int i = 0; i < compressed_action.info.size (); ++i)
{
if (! (i % 10))
@@ -708,7 +723,7 @@ void CppGenerator::generateImpl (QTextStream &out)
}
out << "};" << endl << endl;
- out << "const int " << grammar.table_name << "::action_check [] = {";
+ out << "const short " << grammar.table_name << "::action_check [] = {";
for (int i = 0; i < compressed_action.check.size (); ++i)
{
if (! (i % 10))