/** ****************************************************************************** * * @file codegeneration.cpp * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. * Parts by Nokia Corporation (qt-info@nokia.com) Copyright (C) 2009. * @brief * @see The GNU Public License (GPL) Version 3 * @defgroup * @{ * *****************************************************************************/ /* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "codegeneration.h" #include #include #include namespace Utils { QTCREATOR_UTILS_EXPORT QString fileNameToCppIdentifier(const QString &s) { QString rc; const int len = s.size(); const QChar underscore = QLatin1Char('_'); const QChar dot = QLatin1Char('.'); for (int i = 0; i < len; i++) { const QChar c = s.at(i); if (c == underscore || c.isLetterOrNumber()) rc += c; else if (c == dot) rc += underscore; } return rc; } QTCREATOR_UTILS_EXPORT QString headerGuard(const QString &file) { const QFileInfo fi(file); QString rc = fileNameToCppIdentifier(fi.completeBaseName()).toUpper(); rc += QLatin1Char('_'); rc += fileNameToCppIdentifier(fi.suffix()).toUpper(); return rc; } QTCREATOR_UTILS_EXPORT void writeIncludeFileDirective(const QString &file, bool globalInclude, QTextStream &str) { const QChar opening = globalInclude ? QLatin1Char('<') : QLatin1Char('"'); const QChar closing = globalInclude ? QLatin1Char('>') : QLatin1Char('"'); str << QLatin1String("#include ") << opening << file << closing << QLatin1Char('\n'); } QTCREATOR_UTILS_EXPORT QString writeOpeningNameSpaces(const QStringList &l, const QString &indent, QTextStream &str) { const int count = l.size(); QString rc; if (count) { str << '\n'; for (int i = 0; i < count; i++) { str << rc << "namespace " << l.at(i) << " {\n"; rc += indent; } } return rc; } QTCREATOR_UTILS_EXPORT void writeClosingNameSpaces(const QStringList &l, const QString &indent, QTextStream &str) { if (!l.empty()) str << '\n'; for (int i = l.size() - 1; i >= 0; i--) { if (i) str << QString(indent.size() * i, QLatin1Char(' ')); str << "} // namespace " << l.at(i) << '\n'; } } } // namespace Utils