aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMontel Laurent <montel@kde.org>2015-03-09 21:55:24 +0100
committerMontel Laurent <montel@kde.org>2015-03-17 07:30:46 +0100
commit094c91f86baf1e82e55b435c07c5ba37ff107dd9 (patch)
treea69172e9f391f2af5114f17b1d091201b3488457
parent270b5ef5abd5b0db5670ffb4473a161e0553e396 (diff)
downloadkconfig-094c91f86baf1e82e55b435c07c5ba37ff107dd9.tar.gz
kconfig-094c91f86baf1e82e55b435c07c5ba37ff107dd9.tar.bz2
Allow to generate qloggingcategories support.
Add new variable to specify it in *.kcfgc : "CategoryLoggingName" CHANGELOG: Allow to generate file with qloggingcategories support. REVIEW: 122931
-rw-r--r--autotests/kconfig_compiler/CMakeLists.txt11
-rw-r--r--autotests/kconfig_compiler/kconfigcompiler_test.cpp2
-rw-r--r--autotests/kconfig_compiler/test_qdebugcategory.cpp.ref31
-rw-r--r--autotests/kconfig_compiler/test_qdebugcategory.h.ref96
-rw-r--r--autotests/kconfig_compiler/test_qdebugcategory.kcfg25
-rw-r--r--autotests/kconfig_compiler/test_qdebugcategory.kcfgc9
-rw-r--r--autotests/kconfig_compiler/test_qdebugcategory_debug.cpp4
-rw-r--r--autotests/kconfig_compiler/test_qdebugcategory_debug.h8
-rw-r--r--autotests/kconfig_compiler/test_qdebugcategorymain.cpp32
-rw-r--r--src/kconfig_compiler/kconfig_compiler.cpp17
10 files changed, 232 insertions, 3 deletions
diff --git a/autotests/kconfig_compiler/CMakeLists.txt b/autotests/kconfig_compiler/CMakeLists.txt
index 73e89bd2..0cca6052 100644
--- a/autotests/kconfig_compiler/CMakeLists.txt
+++ b/autotests/kconfig_compiler/CMakeLists.txt
@@ -222,6 +222,7 @@ ecm_add_test(${kconfigcompiler_test_signals_SRCS}
LINK_LIBRARIES Qt5::Test KF5::ConfigGui
)
+
########### next target ###############
ecm_add_test(kconfigcompiler_test.cpp
@@ -229,6 +230,16 @@ ecm_add_test(kconfigcompiler_test.cpp
LINK_LIBRARIES Qt5::Test
)
+
+########### next target ###############
+
+set(test_qcategory_SRCS test_qdebugcategorymain.cpp test_qdebugcategory_debug.cpp)
+gen_kcfg_test_source(test_qdebugcategory test_qcategory_SRCS)
+add_executable(test_qdebugcategory ${test_qcategory_SRCS})
+ecm_mark_as_test(test_qdebugcategory)
+target_link_libraries(test_qdebugcategory KF5::ConfigGui)
+
+
########### install files ###############
diff --git a/autotests/kconfig_compiler/kconfigcompiler_test.cpp b/autotests/kconfig_compiler/kconfigcompiler_test.cpp
index cfe86e05..43623cef 100644
--- a/autotests/kconfig_compiler/kconfigcompiler_test.cpp
+++ b/autotests/kconfig_compiler/kconfigcompiler_test.cpp
@@ -45,6 +45,7 @@ static CompilerTestSet testCases = {
"test12.h", "test12.cpp",
"test_dpointer.cpp", "test_dpointer.h",
"test_signal.cpp", "test_signal.h",
+ "test_qdebugcategory.cpp", "test_qdebugcategory.h",
Q_NULLPTR
};
@@ -64,6 +65,7 @@ static CompilerTestSet testCasesToRun = {
"test12",
"test_dpointer",
"test_signal",
+ "test_qdebugcategory",
Q_NULLPTR
};
diff --git a/autotests/kconfig_compiler/test_qdebugcategory.cpp.ref b/autotests/kconfig_compiler/test_qdebugcategory.cpp.ref
new file mode 100644
index 00000000..f2eea333
--- /dev/null
+++ b/autotests/kconfig_compiler/test_qdebugcategory.cpp.ref
@@ -0,0 +1,31 @@
+// This file is generated by kconfig_compiler_kf5 from test_qdebugcategory.kcfg.
+// All changes you do to this file will be lost.
+
+#include "test_qdebugcategory.h"
+
+TestQCategory::TestQCategory( int Number )
+ : KConfigSkeleton( QLatin1String( "test7rc" ) )
+ , mParamNumber(Number)
+{
+ setCurrentGroup( QLatin1String( "Foo" ) );
+
+ KConfigSkeleton::ItemColor *itemColor;
+ itemColor = new KConfigSkeleton::ItemColor( currentGroup(), QString( QLatin1String( "color #%1" ) ).arg( mParamNumber ), mColor, QColor( "red" ) );
+ addItem( itemColor, QLatin1String( "Color" ) );
+
+ setCurrentGroup( QString( QLatin1String( "Bar%1" ) ).arg( mParamNumber ) );
+
+ KConfigSkeleton::ItemString *itemFooBar;
+ itemFooBar = new KConfigSkeleton::ItemString( currentGroup(), QLatin1String( "foo bar" ), mFooBar );
+ addItem( itemFooBar, QLatin1String( "FooBar" ) );
+ KConfigSkeleton::ItemInt *itemAge;
+ itemAge = new KConfigSkeleton::ItemInt( currentGroup(), QLatin1String( "Age" ), mAge, 35 );
+ itemAge->setMinValue(8);
+ itemAge->setMaxValue(88);
+ addItem( itemAge, QLatin1String( "Age" ) );
+}
+
+TestQCategory::~TestQCategory()
+{
+}
+
diff --git a/autotests/kconfig_compiler/test_qdebugcategory.h.ref b/autotests/kconfig_compiler/test_qdebugcategory.h.ref
new file mode 100644
index 00000000..b6d16fc0
--- /dev/null
+++ b/autotests/kconfig_compiler/test_qdebugcategory.h.ref
@@ -0,0 +1,96 @@
+// This file is generated by kconfig_compiler_kf5 from test_qdebugcategory.kcfg.
+// All changes you do to this file will be lost.
+#ifndef TESTQCATEGORY_H
+#define TESTQCATEGORY_H
+
+#include <test_qdebugcategory_debug.h>
+
+#include <kconfigskeleton.h>
+#include <QCoreApplication>
+#include <QDebug>
+
+class TestQCategory : public KConfigSkeleton
+{
+ public:
+
+ TestQCategory( int Number );
+ ~TestQCategory();
+
+ /**
+ Set Block colors.
+ */
+ void setColor( const QColor & v )
+ {
+ if (!isImmutable( QString::fromLatin1( "Color" ) ))
+ mColor = v;
+ }
+
+ /**
+ Get Block colors.
+ */
+ QColor color() const
+ {
+ return mColor;
+ }
+
+ /**
+ Set foo bar
+ */
+ void setFooBar( const QString & v )
+ {
+ if (!isImmutable( QString::fromLatin1( "FooBar" ) ))
+ mFooBar = v;
+ }
+
+ /**
+ Get foo bar
+ */
+ QString fooBar() const
+ {
+ return mFooBar;
+ }
+
+ /**
+ Set Age
+ */
+ void setAge( int v )
+ {
+ if (v < 8)
+ {
+ qCDebug(CATEGORY_LOG) << "setAge: value " << v << " is less than the minimum value of 8";
+ v = 8;
+ }
+
+ if (v > 88)
+ {
+ qCDebug(CATEGORY_LOG) << "setAge: value " << v << " is greater than the maximum value of 88";
+ v = 88;
+ }
+
+ if (!isImmutable( QString::fromLatin1( "Age" ) ))
+ mAge = v;
+ }
+
+ /**
+ Get Age
+ */
+ int age() const
+ {
+ return mAge;
+ }
+
+ protected:
+ int mParamNumber;
+
+ // Foo
+ QColor mColor;
+
+ // Bar$(Number)
+ QString mFooBar;
+ int mAge;
+
+ private:
+};
+
+#endif
+
diff --git a/autotests/kconfig_compiler/test_qdebugcategory.kcfg b/autotests/kconfig_compiler/test_qdebugcategory.kcfg
new file mode 100644
index 00000000..2f54f608
--- /dev/null
+++ b/autotests/kconfig_compiler/test_qdebugcategory.kcfg
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0
+ http://www.kde.org/standards/kcfg/1.0/kcfg.xsd" >
+ <kcfgfile name="test7rc">
+ <parameter name="Number" type="Int"/>
+ </kcfgfile>
+
+ <group name="Foo">
+ <entry name="Color" type="Color" key="color #$(Number)">
+ <label>Block colors.</label>
+ <default>red</default>
+ </entry>
+ </group>
+ <group name="Bar$(Number)">
+ <entry name="FooBar" key="foo bar" type="String"/>
+ <entry name="Age" type="Int">
+ <default>35</default>
+ <min>8</min>
+ <max>88</max>
+ </entry>
+ </group>
+
+</kcfg>
diff --git a/autotests/kconfig_compiler/test_qdebugcategory.kcfgc b/autotests/kconfig_compiler/test_qdebugcategory.kcfgc
new file mode 100644
index 00000000..a7ae26e7
--- /dev/null
+++ b/autotests/kconfig_compiler/test_qdebugcategory.kcfgc
@@ -0,0 +1,9 @@
+# Code generation options for kconfig_compiler_kf5
+File=test_qdebugcategory.kcfgc
+ClassName=TestQCategory
+Singleton=false
+Mutators=true
+GlobalEnums=true
+ItemAccessors=false
+CategoryLoggingName=CATEGORY_LOG
+IncludeFiles=test_qdebugcategory_debug.h
diff --git a/autotests/kconfig_compiler/test_qdebugcategory_debug.cpp b/autotests/kconfig_compiler/test_qdebugcategory_debug.cpp
new file mode 100644
index 00000000..7c4f9f55
--- /dev/null
+++ b/autotests/kconfig_compiler/test_qdebugcategory_debug.cpp
@@ -0,0 +1,4 @@
+#include "test_qdebugcategory_debug.h"
+Q_LOGGING_CATEGORY(CATEGORY_LOG, "log_category")
+
+
diff --git a/autotests/kconfig_compiler/test_qdebugcategory_debug.h b/autotests/kconfig_compiler/test_qdebugcategory_debug.h
new file mode 100644
index 00000000..88ac4f35
--- /dev/null
+++ b/autotests/kconfig_compiler/test_qdebugcategory_debug.h
@@ -0,0 +1,8 @@
+#ifndef TEST_QCATEGORY_DEBUG_H
+#define TEST_QCATEGORY_DEBUG_H
+
+#include <QLoggingCategory>
+Q_DECLARE_LOGGING_CATEGORY(CATEGORY_LOG)
+
+#endif
+
diff --git a/autotests/kconfig_compiler/test_qdebugcategorymain.cpp b/autotests/kconfig_compiler/test_qdebugcategorymain.cpp
new file mode 100644
index 00000000..247ffe4c
--- /dev/null
+++ b/autotests/kconfig_compiler/test_qdebugcategorymain.cpp
@@ -0,0 +1,32 @@
+/*
+Copyright (c) 2004 Waldo Bastian <bastian@kde.org>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+#include "test_qdebugcategory.h"
+#include <QGuiApplication>
+
+int main(int argc, char **argv)
+{
+ QGuiApplication app(argc, argv);
+ Q_UNUSED(app);
+ TestQCategory *t = new TestQCategory(42);
+ delete t;
+ return 0;
+}
diff --git a/src/kconfig_compiler/kconfig_compiler.cpp b/src/kconfig_compiler/kconfig_compiler.cpp
index 28b151c5..7be74226 100644
--- a/src/kconfig_compiler/kconfig_compiler.cpp
+++ b/src/kconfig_compiler/kconfig_compiler.cpp
@@ -96,7 +96,6 @@ public:
allDefaultGetters = (defaultGetters.count() == 1) && (defaultGetters.at(0).toLower() == "true");
globalEnums = codegenConfig.value("GlobalEnums", false).toBool();
useEnumTypes = codegenConfig.value("UseEnumTypes", false).toBool();
-
const QString trString = codegenConfig.value("TranslationSystem").toString().toLower();
if (trString == "kde") {
translationSystem = KdeTranslation;
@@ -106,6 +105,7 @@ public:
}
translationSystem = QtTranslation;
}
+ qCategoryLoggingName = codegenConfig.value("CategoryLoggingName", QString()).toString();
}
public:
@@ -128,6 +128,7 @@ public:
QStringList sourceIncludes;
QStringList mutators;
QStringList defaultGetters;
+ QString qCategoryLoggingName;
bool allMutators;
bool setUserTexts;
bool allDefaultGetters;
@@ -1364,6 +1365,16 @@ QString memberAccessorBody(CfgEntry *e, bool globalEnums, const CfgConfig &cfg)
// returns the member mutator implementation
// which should go in the h file if inline
// or the cpp file if not inline
+
+void addDebugMethod(QTextStream &out, const CfgConfig &cfg, const QString &n)
+{
+ if (cfg.qCategoryLoggingName.isEmpty()) {
+ out << " qDebug() << \"" << setFunction(n);
+ } else {
+ out << " qCDebug(" << cfg.qCategoryLoggingName << ") << \"" << setFunction(n);
+ }
+}
+
QString memberMutatorBody(CfgEntry *e, const CfgConfig &cfg)
{
QString result;
@@ -1375,7 +1386,7 @@ QString memberMutatorBody(CfgEntry *e, const CfgConfig &cfg)
if (e->minValue() != "0" || !isUnsigned(t)) { // skip writing "if uint<0" (#187579)
out << "if (v < " << e->minValue() << ")" << endl;
out << "{" << endl;
- out << " qDebug() << \"" << setFunction(n);
+ addDebugMethod(out, cfg, n);
out << ": value \" << v << \" is less than the minimum value of ";
out << e->minValue() << "\";" << endl;
out << " v = " << e->minValue() << ";" << endl;
@@ -1386,7 +1397,7 @@ QString memberMutatorBody(CfgEntry *e, const CfgConfig &cfg)
if (!e->maxValue().isEmpty()) {
out << endl << "if (v > " << e->maxValue() << ")" << endl;
out << "{" << endl;
- out << " qDebug() << \"" << setFunction(n);
+ addDebugMethod(out, cfg, n);
out << ": value \" << v << \" is greater than the maximum value of ";
out << e->maxValue() << "\";" << endl;
out << " v = " << e->maxValue() << ";" << endl;