[SCM] smokegen packaging branch, master, updated. debian/4.12.2-2-6-g8cfd024

Maximiliano Curia maxy at moszumanska.debian.org
Sat Aug 30 23:03:50 UTC 2014


Gitweb-URL: http://git.debian.org/?p=pkg-kde/kde-sc/smokegen.git;a=commitdiff;h=12a2a56

The following commit has been merged in the master branch:
commit 12a2a5601072d38f2eb13f6961169110359730e3
Author: Maximiliano Curia <maxy at debian.org>
Date:   Fri Aug 29 20:31:50 2014 +0200

    Remove patch: smokegen_load_system_defines.diff
---
 debian/changelog                                 |   6 +
 debian/patches/series                            |   1 -
 debian/patches/smokegen_load_system_defines.diff | 638 -----------------------
 3 files changed, 6 insertions(+), 639 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 4c34012..05e7633 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+smokegen (4:4.14.0-2) UNRELEASED; urgency=medium
+
+  * Remove patch: smokegen_load_system_defines.diff
+
+ -- Maximiliano Curia <maxy at debian.org>  Fri, 29 Aug 2014 20:30:25 +0200
+
 smokegen (4:4.14.0-1) unstable; urgency=medium
 
   * New upstream release.
diff --git a/debian/patches/series b/debian/patches/series
index 7b74722..651399d 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,2 +1 @@
-smokegen_load_system_defines.diff
 version_cppparser_library.diff
diff --git a/debian/patches/smokegen_load_system_defines.diff b/debian/patches/smokegen_load_system_defines.diff
deleted file mode 100644
index 91551ef..0000000
--- a/debian/patches/smokegen_load_system_defines.diff
+++ /dev/null
@@ -1,638 +0,0 @@
-From: Modestas Vainius <modax at debian.org>
-From: Pino Toscano <pino at debian.org>
-Subject: get system #defines from current compiler
-Bug-Debian: http://bugs.debian.org/626631
-Forwarded: no
-Last-Update: 2011-09-23
-Origin: vendor
-
-Steal and port some setuphelpers code from the latest kdevelop (b3104e25) which
-dynamically gets system #defines from the current gcc and feeds them to
-smokegen macro preprocessor. This code replaces a couple of macros which were
-hardcoded in the preprocessor code but were insufficient in some cases (e.g.
-generator failed to generate proper code on kFreeBSD with eglibc >= 2.13, see
-build logs of kdebindings 4:4.4.5-6 [1]).
-
-While porting, KProcess was replaced by QProcess, kDebug() with qDebug(),
-adjusted include paths and setuphelpers functions were integrated into existing
-generator code. A few new interfaces had to be made to the pp-macro class to
-support some setuphelpers calls.
-
-[1] https://buildd.debian.org/status/fetch.php?pkg=kdebindings&arch=kfreebsd-amd64&ver=4%3A4.4.5-6&stamp=1304984309
-
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -30,6 +30,8 @@ set(generator_SRC
-     type_compiler.cpp
-     name_compiler.cpp
-     type.cpp
-+    setuphelpers.cpp
-+    setuphelpers_gcc.cpp
- )
- 
- # force RPATH so that the binary is usable from within the build tree
---- a/generatorpreprocessor.cpp
-+++ b/generatorpreprocessor.cpp
-@@ -18,6 +18,7 @@
- 
- #include "generatorpreprocessor.h"
- #include "generatorenvironment.h"
-+#include "setuphelpers.h"
- 
- #include <rpp/pp-environment.h>
- #include <rpp/pp-macro.h>
-@@ -39,94 +40,8 @@ Preprocessor::Preprocessor(const QList<Q
-     m_topBlock = new rpp::MacroBlock(0);
-     
-     // some basic definitions
--    rpp::pp_macro* exportMacro = new rpp::pp_macro;
--    exportMacro->name = IndexedString("__cplusplus");
--    exportMacro->definition.append(IndexedString('1'));
--    exportMacro->function_like = false;
--    exportMacro->variadics = false;
--    m_topBlock->setMacro(exportMacro);
--
--    exportMacro = new rpp::pp_macro;
--    exportMacro->name = IndexedString("__GNUC__");
--    exportMacro->definition.append(IndexedString('4'));
--    exportMacro->function_like = false;
--    exportMacro->variadics = false;
--    m_topBlock->setMacro(exportMacro);
--
--    exportMacro = new rpp::pp_macro;
--    exportMacro->name = IndexedString("__GNUC_MINOR__");
--    exportMacro->definition.append(IndexedString('1'));
--    exportMacro->function_like = false;
--    exportMacro->variadics = false;
--    m_topBlock->setMacro(exportMacro);
--
--    exportMacro = new rpp::pp_macro;
--#if defined(Q_OS_LINUX)
--    exportMacro->name = IndexedString("__linux__");
--#elif defined(Q_OS_WIN32)
--    exportMacro->name = IndexedString("WIN32");
--#elif defined(Q_OS_WIN64)
--    exportMacro->name = IndexedString("WIN64");
--#elif defined(Q_OS_DARWIN)
--    exportMacro->name = IndexedString("__APPLE__");
--#elif defined(Q_OS_SOLARIS)
--    exportMacro->name = IndexedString("__sun");
--#else
--    // fall back to linux if nothing matches
--    exportMacro->name = IndexedString("__linux__");
--#endif
--    exportMacro->function_like = false;
--    exportMacro->variadics = false;
--    m_topBlock->setMacro(exportMacro);
--
--#if defined(Q_OS_DARWIN64)
--    exportMacro = new rpp::pp_macro;
--    exportMacro->name = IndexedString("__LP64__");
--    exportMacro->function_like = false;
--    exportMacro->variadics = false;
--    m_topBlock->setMacro(exportMacro);
--#endif
--
--#if (defined(QT_ARCH_ARM) || defined (QT_ARCH_ARMV6)) && !defined(QT_NO_ARM_EABI)
--    exportMacro = new rpp::pp_macro;
--    exportMacro->name = IndexedString("__ARM_EABI__");
--    exportMacro->function_like = false;
--    exportMacro->variadics = false;
--    m_topBlock->setMacro(exportMacro);
--#endif
--
--    // ansidecl.h will define macros for keywords if we don't define __STDC__
--    exportMacro = new rpp::pp_macro;
--    exportMacro->name = IndexedString("__STDC__");
--    exportMacro->function_like = false;
--    exportMacro->variadics = false;
--    m_topBlock->setMacro(exportMacro);
--
--    // the following macros are gcc specialties
--    exportMacro = new rpp::pp_macro;
--    exportMacro->name = IndexedString("__extension__");
--    exportMacro->function_like = false;
--    exportMacro->variadics = false;
--    m_topBlock->setMacro(exportMacro);
--
--    exportMacro = new rpp::pp_macro;
--    exportMacro->name = IndexedString("__restrict");
--    exportMacro->function_like = false;
--    exportMacro->variadics = false;
--    m_topBlock->setMacro(exportMacro);
--
--    exportMacro = new rpp::pp_macro;
--    exportMacro->name = IndexedString("__const");
--    exportMacro->definition.append(IndexedString("const"));
--    exportMacro->function_like = false;
--    exportMacro->variadics = false;
--    m_topBlock->setMacro(exportMacro);
--
--    exportMacro = new rpp::pp_macro;
--    exportMacro->name = IndexedString("__attribute__");
--    exportMacro->function_like = true;
--    exportMacro->variadics = false;
--    m_topBlock->setMacro(exportMacro);
-+    rpp::pp_macro* exportMacro = 0;
-+    CppTools::setupStandardMacros(*m_topBlock);
- 
-     exportMacro = new rpp::pp_macro;
-     exportMacro->name = IndexedString("__SMOKEGEN_RUN__");
-@@ -135,6 +50,11 @@ Preprocessor::Preprocessor(const QList<Q
-     exportMacro->variadics = false;
-     m_topBlock->setMacro(exportMacro);
- 
-+    // Do not add standard include paths
-+//    foreach (QString dir, CppTools::setupStandardIncludePaths()) {
-+//        m_includeDirs << QDir(dir);
-+//    }
-+
-     foreach (QString define, defines) {
-         exportMacro = new rpp::pp_macro;
-         exportMacro->name = IndexedString(define);
---- /dev/null
-+++ b/setuphelpers.cpp
-@@ -0,0 +1,167 @@
-+/*
-+* This file is part of KDevelop
-+*
-+* Copyright 2007-2008 David Nolden <david.nolden.kdevelop at art-master.de>
-+* Copyright 2007 Kris Wong <kris.p.wong at gmail.com>
-+* Copyright 2011 Modestas Vainius <modax at debian.org>
-+*
-+* This program is free software; you can redistribute it and/or modify
-+* it under the terms of the GNU Library General Public License as
-+* published by the Free Software Foundation; either version 2 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.,
-+* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-+*/
-+#include "setuphelpers.h"
-+
-+#include <QString>
-+#include <QStringList>
-+
-+//#include <rpp/chartools.h>
-+#include <rpp/pp-environment.h>
-+#include <rpp/pp-macro.h>
-+
-+namespace CppTools {
-+QStringList gccSetupStandardIncludePaths();
-+const QVector<rpp::pp_macro*>& gccStandardMacros();
-+
-+#ifdef _MSC_VER
-+QStringList msvcSetupStandardIncludePaths();
-+const QVector<rpp::pp_macro*>& msvcStandardMacros();
-+#endif
-+
-+QStringList setupStandardIncludePaths()
-+{
-+//TODO: this should happen depending on the actual compiler used for the target and not on the compiler used for kdevelop itself.
-+#ifdef _MSC_VER
-+    QStringList includePaths = msvcSetupStandardIncludePaths();
-+#else
-+    QStringList includePaths = gccSetupStandardIncludePaths();
-+#endif
-+    return includePaths;
-+}
-+
-+void insertMacro(rpp::MacroBlock& macros, const rpp::pp_macro& macro)
-+{
-+  macros.setMacro(new rpp::pp_macro(macro));
-+}
-+
-+void setupStandardMacros(rpp::MacroBlock& macros)
-+{
-+    //Add some macros to be compatible with the gnu c++ compiler
-+    //Used in several headers like sys/time.h
-+    insertMacro( macros, rpp::pp_macro("__restrict") );
-+    insertMacro( macros, rpp::pp_macro("__extension__") );
-+    {
-+      //Used in several headers like sys/time.h
-+      rpp::pp_macro m("__const");
-+      m.setDefinitionText( "const" );
-+      insertMacro( macros, m );
-+    }
-+    {
-+      rpp::pp_macro m("__null");
-+      m.setDefinitionText( "0" );
-+      insertMacro( macros, m );
-+      m.name = IndexedString("NULL");
-+      insertMacro( macros, m );
-+    }
-+
-+    {
-+      //Used in several gcc headers
-+      rpp::pp_macro m("__inline");
-+      m.setDefinitionText( "inline" );
-+      insertMacro( macros, m );
-+      m.name = IndexedString("__always_inline");
-+      insertMacro( macros, m );
-+    }
-+
-+    {
-+      //It would be better if the parser could deal with it, for example in class declarations. However it cannot.
-+      //If we wouldn't need this, macros could be more transparent.
-+      rpp::pp_macro m("__attribute__");
-+      m.function_like = true;
-+      m.formalsList().append(IndexedString("param"));
-+      insertMacro( macros, m );
-+    }
-+    
-+    /// The following macros are required for qt only. That's why we set them to become active only when their
-+    /// 'real' versions become defined in qobjectdefs.h. A slight problem is that they are 'fixed', so they will block
-+    /// any other macros with the same names.
-+    {
-+      rpp::pp_macro m("Q_SLOTS");
-+      m.setDefinitionText( "__qt_slots__" );
-+      
-+      m.defined = false;
-+      m.defineOnOverride = true;
-+      m.file = IndexedString("/qobjectdefs.h"); // Only define the macro if it is overriden in this file
-+      m.fixed = true;
-+      
-+      insertMacro( macros, m );
-+
-+      m.name = IndexedString("Q_PRIVATE_SLOT");
-+      m.formalsList().append(IndexedString("d"));
-+      m.formalsList().append(IndexedString("sig"));
-+      m.function_like = true;
-+      m.setDefinitionText( "private slots: sig{ d; }; private:" );
-+      insertMacro( macros, m );
-+      
-+      m.name = IndexedString("slots");
-+      m.setDefinitionText("__qt_slots__");
-+      m.formalsList().clear();
-+      m.function_like = false;
-+      insertMacro( macros, m );
-+
-+      m.name = IndexedString("Q_SIGNALS");
-+      m.setDefinitionText( "__qt_signals__" );
-+      m.formalsList().clear();
-+      insertMacro( macros, m );
-+
-+      m.name = IndexedString("signals");
-+      m.setDefinitionText("__qt_signals__");
-+      m.formalsList().clear();
-+      insertMacro( macros, m );
-+
-+      m.name = IndexedString("SIGNAL");
-+      m.setDefinitionText("__qt_signal__");
-+      m.formalsList().clear();
-+      insertMacro( macros, m );
-+      
-+      m.name = IndexedString("SLOT");
-+      m.setDefinitionText("__qt_slot__");
-+      m.formalsList().clear();
-+      insertMacro( macros, m );
-+
-+      m.name = IndexedString("Q_PROPERTY");
-+      m.setDefinitionText("__qt_property__");
-+      m.formalsList().clear();
-+      insertMacro( macros, m );
-+    }
-+    
-+    {
-+      // We don't provide a real implementation of offsetof, but at least provide a stub that allows correct use-building for the member.
-+      rpp::pp_macro m("__builtin_offsetof");
-+      m.function_like = true;
-+      m.formalsList().append(IndexedString("TYPE"));
-+      m.formalsList().append(IndexedString("MEMBER"));
-+      m.setDefinitionText("(size_t)((void)TYPE::MEMBER)");
-+      insertMacro( macros, m );
-+    }
-+
-+#ifdef _MSC_VER    
-+    foreach(const rpp::pp_macro* macro, msvcStandardMacros())
-+#else
-+    foreach(const rpp::pp_macro* macro, gccStandardMacros())
-+#endif
-+      insertMacro(macros, *macro);
-+}
-+
-+}
-+
---- /dev/null
-+++ b/setuphelpers.h
-@@ -0,0 +1,47 @@
-+/*
-+* This file is part of KDevelop
-+*
-+* Copyright 2007-2008 David Nolden <david.nolden.kdevelop at art-master.de>
-+* Copyright 2007 Kris Wong <kris.p.wong at gmail.com>
-+*
-+* This program is free software; you can redistribute it and/or modify
-+* it under the terms of the GNU Library General Public License as
-+* published by the Free Software Foundation; either version 2 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.,
-+* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-+*/
-+#ifndef CPPTOOLSSETUPHELPERS_H
-+#define CPPTOOLSSETUPHELPERS_H
-+
-+class QStringList;
-+namespace rpp {
-+    class MacroBlock;
-+}
-+
-+namespace CppTools {
-+
-+    /**
-+    * This function attempts to run a gcc command to retrieve the standard
-+    * c++ include paths for this machine.
-+    */
-+    QStringList setupStandardIncludePaths();
-+
-+    /**
-+    * This function attempts to run a gcc command to retrieve the standard
-+    * c++ macro definitions.
-+    */
-+    void setupStandardMacros(rpp::MacroBlock& macros);
-+
-+}
-+
-+#endif
-+
---- /dev/null
-+++ b/setuphelpers_gcc.cpp
-@@ -0,0 +1,161 @@
-+/*
-+* This file is part of KDevelop
-+*
-+* Copyright 2007-2008 David Nolden <david.nolden.kdevelop at art-master.de>
-+* Copyright 2007 Kris Wong <kris.p.wong at gmail.com>
-+* Copyright 2011 Modestas Vainius <modax at debian.org>
-+*
-+* This program is free software; you can redistribute it and/or modify
-+* it under the terms of the GNU Library General Public License as
-+* published by the Free Software Foundation; either version 2 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.,
-+* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-+*/
-+#include "setuphelpers.h"
-+
-+#include <QString>
-+#include <QStringList>
-+#include <QDir>
-+#include <QtCore/QProcess>
-+#include <QtCore/QDebug>
-+
-+#include <rpp/pp-macro.h>
-+
-+#ifdef _WIN32
-+#define NULL_DEVICE "NUL"
-+#else
-+#define NULL_DEVICE "/dev/null"
-+#endif
-+
-+namespace CppTools {
-+
-+QStringList gccSetupStandardIncludePaths()
-+{
-+    QStringList includePaths;
-+    
-+    QProcess proc;
-+    proc.setProcessChannelMode(QProcess::MergedChannels);
-+    proc.setTextModeEnabled(true);
-+
-+    // The following command will spit out a bnuch of information we don't care
-+    // about before spitting out the include paths.  The parts we care about
-+    // look like this:
-+    // #include "..." search starts here:
-+    // #include <...> search starts here:
-+    //  /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../include/c++/4.1.2
-+    //  /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../include/c++/4.1.2/i486-linux-gnu
-+    //  /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../include/c++/4.1.2/backward
-+    //  /usr/local/include
-+    //  /usr/lib/gcc/i486-linux-gnu/4.1.2/include
-+    //  /usr/include
-+    // End of search list.
-+    proc.start("gcc", QStringList() <<"-xc++" <<"-E" <<"-v" <<NULL_DEVICE);
-+
-+    // We'll use the following constants to know what we're currently parsing.
-+    const short parsingInitial = 0;
-+    const short parsedFirstSearch = 1;
-+    const short parsingIncludes = 2;
-+    const short parsingFinished = 3;
-+    short parsingMode = parsingInitial;
-+
-+    if (proc.waitForStarted() && proc.waitForFinished(5000) &&
-+        proc.exitStatus() == QProcess::NormalExit && proc.exitCode() == 0)
-+    {
-+        QString line;
-+        while (proc.canReadLine() && parsingMode != parsingFinished) {
-+            QByteArray buff = proc.readLine();
-+            if (!buff.isEmpty()) {
-+                line = buff;
-+                switch (parsingMode) {
-+                case parsingInitial:
-+                    if (line.indexOf("#include \"...\"") != -1) {
-+                        parsingMode = parsedFirstSearch;
-+                    }
-+                    break;
-+                case parsedFirstSearch:
-+                    if (line.indexOf("#include <...>") != -1) {
-+                        parsingMode = parsingIncludes;
-+                        break;
-+                    }
-+                case parsingIncludes:
-+                    //if (!line.indexOf(QDir::separator()) == -1 && line != "." ) {
-+                    //Detect the include-paths by the first space that is prepended. Reason: The list may contain relative paths like "."
-+                    if (!line.startsWith(" ") ) {
-+                        // We've reached the end of the list.
-+                        parsingMode = parsingFinished;
-+                    } else {
-+                        line = line.trimmed();
-+                        // This is an include path, add it to the list.
-+                        includePaths << QDir::cleanPath(line);
-+                    }
-+                    break;
-+                }
-+            }
-+        }
-+    } else {
-+        qDebug() <<"Unable to read standard c++ macro definitions from gcc:" <<QString(proc.readAll()) ;
-+    }
-+    
-+    return includePaths;
-+}
-+
-+QVector<rpp::pp_macro*> computeGccStandardMacros()
-+{
-+    QVector<rpp::pp_macro*> ret;
-+    //Get standard macros from gcc
-+    QProcess proc;
-+    proc.setProcessChannelMode(QProcess::MergedChannels);
-+    proc.setTextModeEnabled(true);
-+
-+    // The output of the following gcc commands is several line in the format:
-+    // "#define MACRO [definition]", where definition may or may not be present.
-+    // Parsing each line sequentially, we can easily build the macro set.
-+    proc.start("gcc", QStringList() <<"-xc++" <<"-E" <<"-dM" <<NULL_DEVICE);
-+
-+    if (proc.waitForStarted() && proc.waitForFinished(5000) &&
-+        proc.exitStatus() == QProcess::NormalExit && proc.exitCode() == 0)
-+    {
-+        QString line;
-+        while (proc.canReadLine()) {
-+            QByteArray buff = proc.readLine();
-+            if (!buff.isEmpty()) {
-+                line = buff;
-+                if (line.startsWith("#define ")) {
-+                    line = line.right(line.length() - 8).trimmed();
-+                    int pos = line.indexOf(' ');
-+                    
-+                    ret.append(new rpp::pp_macro);
-+                    
-+                    rpp::pp_macro& macro(*ret.back());
-+                    if (pos != -1) {
-+                        macro.name = IndexedString( line.left(pos) );
-+                        macro.setDefinitionText( line.right(line.length() - pos - 1).toUtf8() );
-+                    } else {
-+                        macro.name = IndexedString( line );
-+                    }
-+                }
-+            }
-+        }
-+    } else {
-+        qDebug() <<"Unable to read standard c++ macro definitions from gcc:" <<QString(proc.readAll()) ;
-+    }
-+    return ret;
-+}
-+
-+const QVector<rpp::pp_macro*>& gccStandardMacros()
-+{
-+  static QVector<rpp::pp_macro*> macros = computeGccStandardMacros();
-+  return macros;
-+}
-+
-+}
-+
---- a/generatorenvironment.cpp
-+++ b/generatorenvironment.cpp
-@@ -38,15 +38,26 @@ GeneratorEnvironment::~GeneratorEnvironm
- 
- void GeneratorEnvironment::setMacro(rpp::pp_macro* macro)
- {
--    QString macroName = macro->name.str();
--    if (   macroName == "signals" || macroName == "slots" || macroName == "Q_SIGNALS" || macroName == "Q_SLOTS"
--        || ParserOptions::dropMacros.contains(macroName)) {
-+    rpp::pp_macro* hadMacro = retrieveStoredMacro(macro->name);
-+
-+    if(hadMacro && hadMacro->fixed) {
-+      if(hadMacro->defineOnOverride && (hadMacro->file.isEmpty() ||
-+          (macro->file.length() >= hadMacro->file.length() &&
-+           memcmp(macro->file.byteArray().data() + (macro->file.length() - hadMacro->file.length()), 
-+                         hadMacro->file.byteArray().data(),
-+                         hadMacro->file.length()) == 0)))
-+      {
-+        // We have to define the macro now, as it is being overridden
-+        rpp::pp_macro* definedMacro = new rpp::pp_macro(*hadMacro);
-+        definedMacro->defined = true;
-         delete macro;
--        return;
--    } else if (ParserOptions::qtMode && macroName == "Q_PROPERTY") {
-+        macro = definedMacro;
-+      }else{
-+        // A fixed macro exists, simply ignore the added macro
-         delete macro;
--        rpp::Environment::setMacro(q_property);
-         return;
-+      }
-     }
-+
-     rpp::Environment::setMacro(macro);
- }
---- a/parser/rpp/pp-macro.cpp
-+++ b/parser/rpp/pp-macro.cpp
-@@ -50,6 +50,7 @@ bool pp_macro::operator==(const pp_macro
-          function_like == rhs.function_like &&
-          variadics == rhs.variadics &&
-          fixed == rhs.fixed &&
-+         defineOnOverride == rhs.defineOnOverride &&
-          definition == rhs.definition &&
-          formals == rhs.formals;
- //          listsEqual(rhs);
-@@ -66,6 +67,7 @@ pp_macro::pp_macro(const IndexedString&
-   , function_like(false)
-   , variadics(false)
-   , fixed(false)
-+  , defineOnOverride(false)
-   , m_valueHashValid(false)
-   , m_valueHash(0)
- {
-@@ -81,6 +83,7 @@ pp_macro::pp_macro(const pp_macro& rhs,
-    function_like(rhs.function_like),
-    variadics(rhs.variadics),
-    fixed(rhs.fixed),
-+   defineOnOverride(rhs.defineOnOverride),
-    m_valueHashValid(true),
-    m_valueHash(rhs.valueHash()),
-    definition(rhs.definition),
-@@ -97,6 +100,7 @@ pp_macro::pp_macro(const char* nm) : nam
-   , function_like(false)
-   , variadics(false)
-   , fixed(false)
-+  , defineOnOverride(false)
-   , m_valueHashValid(false)
-   , m_valueHash(0)
- {
-@@ -139,7 +143,7 @@ void pp_macro::computeHash() const {
- 
-     m_valueHash = 27 * ( 137 + (defined ? 1 : 0 ) );
- 
--    m_valueHash += 1741 * file.hash() + 238 * sourceLine + (hidden ? 19 : 0) + (function_like ? 811241 : 0) + (variadics ? 129119 : 0) + (fixed ? 1807 : 0);
-+    m_valueHash += 1741 * file.hash() + 238 * sourceLine + (hidden ? 19 : 0) + (function_like ? 811241 : 0) + (variadics ? 129119 : 0) + (fixed ? 1807 : 0) + (defineOnOverride ? 31621 : 0);
-   
-     foreach(const IndexedString& definitionComponent, definition)
-       m_valueHash = definitionComponent.hash() + 17 * m_valueHash;
---- a/parser/rpp/pp-macro.h
-+++ b/parser/rpp/pp-macro.h
-@@ -66,6 +66,10 @@ struct CPPPARSER_EXPORT pp_macro
-   bool function_like: 1; // hasArguments
-   bool variadics: 1;
-   bool fixed : 1; //If this is set, the macro can not be overridden or undefined.
-+  //If defineOnOverride is set, the macro is changed to "defined = true", if it is overridden.
-+  //If the macro also has a valid "file" entry, the macro will only be defined if the file-name of the overriding
-+  //macro ends with the string given in 'file'.
-+  bool defineOnOverride : 1;
-   mutable bool m_valueHashValid : 1;
-   
-   //The valueHash is not necessarily valid
-@@ -152,6 +156,10 @@ struct CPPPARSER_EXPORT pp_macro
-   void setDefinitionText(const char* definition) {
-     setDefinitionText(QByteArray(definition));
-   }
-+
-+  inline QVector<IndexedString>& formalsList() {
-+    return formals;
-+  }
-   
- //   START_APPENDED_LISTS(pp_macro)
- //   APPENDED_LIST_FIRST(pp_macro, IndexedString, definition)

-- 
smokegen packaging



More information about the pkg-kde-commits mailing list