aboutsummaryrefslogtreecommitdiff
path: root/src/kconfig_compiler/KConfigSourceGenerator.cpp
diff options
context:
space:
mode:
authorMéven Car <meven.car@enioka.com>2020-02-04 16:03:52 +0100
committerMéven Car <meven29@gmail.com>2020-02-04 16:09:29 +0100
commitd46739294d04c72af1e434e414e1c012d7e78a42 (patch)
tree5a227069a6a1a110cc26b788ff8a3bd99005735e /src/kconfig_compiler/KConfigSourceGenerator.cpp
parentfd0e26ddb49122fa55bdc8f35e189c832cc138ad (diff)
downloadkconfig-d46739294d04c72af1e434e414e1c012d7e78a42.tar.gz
kconfig-d46739294d04c72af1e434e414e1c012d7e78a42.tar.bz2
Add an is<PropertyName>Immutable to know if a property is immutable
Summary: Add a utility function is<Parameter>Immutable to access immutability quickly. Generated classes uses them internally to avoid code redundance. Sample: ``` /** Set blocked-by-default */ void setBlockedByDefault( bool v ) { if (v != mBlockedByDefault && !isBlockedByDefaultImmutable() ) { mBlockedByDefault = v; Q_EMIT blockedByDefaultChanged(); } } /** Is blocked-by-default Immutable */ bool isBlockedByDefaultImmutable() { return isImmutable( QStringLiteral( "blockedByDefault" ) ); } ``` ``` /** Set org.kde.ActivityManager.ResourceScoringEnabled */ void setResourceScoringEnabled( bool v ) { if (!isResourceScoringEnabledImmutable() ) mResourceScoringEnabled = v; } /** Is org.kde.ActivityManager.ResourceScoringEnabled Immutable */ bool isResourceScoringEnabledImmutable() { return isImmutable( QStringLiteral( "resourceScoringEnabled" ) ); } ``` Reviewers: ervin, #frameworks, dfaure Reviewed By: ervin Subscribers: dfaure, tcanabrava, kde-frameworks-devel Tags: #frameworks Differential Revision: https://phabricator.kde.org/D26368
Diffstat (limited to 'src/kconfig_compiler/KConfigSourceGenerator.cpp')
-rw-r--r--src/kconfig_compiler/KConfigSourceGenerator.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/kconfig_compiler/KConfigSourceGenerator.cpp b/src/kconfig_compiler/KConfigSourceGenerator.cpp
index 87d00960..63f5b6b4 100644
--- a/src/kconfig_compiler/KConfigSourceGenerator.cpp
+++ b/src/kconfig_compiler/KConfigSourceGenerator.cpp
@@ -478,6 +478,20 @@ void KConfigSourceGenerator::createGetterDPointerMode(const CfgEntry *entry)
stream() << '\n';
}
+void KConfigSourceGenerator::createImmutableGetterDPointerMode(const CfgEntry *entry)
+{
+ stream() << whitespace() << "";
+ stream() << "bool " << " " << immutableFunction(entry->name, cfg().className) << "(";
+ if (!entry->param.isEmpty()) {
+ stream() << " " << cppType(entry->paramType) << " i ";
+ }
+ stream() << ")" << Const() << '\n';
+ startScope();
+ memberImmutableBody(entry, cfg().globalEnums);
+ endScope();
+ stream() << '\n';
+}
+
void KConfigSourceGenerator::createSetterDPointerMode(const CfgEntry *entry)
{
// Manipulator
@@ -533,6 +547,7 @@ void KConfigSourceGenerator::doGetterSetterDPointerMode()
for (auto *entry : parseResult.entries) {
createSetterDPointerMode(entry);
createGetterDPointerMode(entry);
+ createImmutableGetterDPointerMode(entry);
createItemGetterDPointerMode(entry);
stream() << '\n';
}