aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@digia.com>2014-03-17 18:27:10 +0100
committerChristian Kandeler <christian.kandeler@digia.com>2014-03-25 14:19:32 +0100
commita55314a6dd3c2f4778b3de259748f1ee6ba6e16b (patch)
treea4c2629ff4dbaab583ee84e49501fe91f80ac8fb /src
parenta68fbbbf66b8ef65df9c4cc870b11c0e1b414512 (diff)
make PropertyDeclaration implicitly shared
Change-Id: Iad2f353371bd64ce8138dc86ed1f07ac994cf237 Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Diffstat (limited to 'src')
-rw-r--r--src/lib/corelib/api/languageinfo.cpp4
-rw-r--r--src/lib/corelib/language/builtindeclarations.cpp72
-rw-r--r--src/lib/corelib/language/evaluatorscriptclass.cpp2
-rw-r--r--src/lib/corelib/language/itemreaderastvisitor.cpp14
-rw-r--r--src/lib/corelib/language/moduleloader.cpp8
-rw-r--r--src/lib/corelib/language/projectresolver.cpp16
-rw-r--r--src/lib/corelib/language/propertydeclaration.cpp114
-rw-r--r--src/lib/corelib/language/propertydeclaration.h36
8 files changed, 199 insertions, 67 deletions
diff --git a/src/lib/corelib/api/languageinfo.cpp b/src/lib/corelib/api/languageinfo.cpp
index 8864a73c9..cda83fee4 100644
--- a/src/lib/corelib/api/languageinfo.cpp
+++ b/src/lib/corelib/api/languageinfo.cpp
@@ -63,9 +63,9 @@ QByteArray LanguageInfo::qmlTypeInfo()
Internal::ItemDeclaration itemDecl = builtins.declarationsForType(typeName);
foreach (const Internal::PropertyDeclaration &property, itemDecl.properties()) {
result.append(" Property { name=\"");
- result.append(property.name.toUtf8());
+ result.append(property.name().toUtf8());
result.append("\"; ");
- switch (property.type) {
+ switch (property.type()) {
case qbs::Internal::PropertyDeclaration::UnknownType:
result.append("type=\"unknown\"");
break;
diff --git a/src/lib/corelib/language/builtindeclarations.cpp b/src/lib/corelib/language/builtindeclarations.cpp
index 187408add..b4cf7cda2 100644
--- a/src/lib/corelib/language/builtindeclarations.cpp
+++ b/src/lib/corelib/language/builtindeclarations.cpp
@@ -78,13 +78,13 @@ ItemDeclaration BuiltinDeclarations::declarationsForType(const QString &typeName
void BuiltinDeclarations::setupItemForBuiltinType(Item *item) const
{
foreach (const PropertyDeclaration &pd, declarationsForType(item->typeName()).properties()) {
- item->m_propertyDeclarations.insert(pd.name, pd);
- ValuePtr &value = item->m_properties[pd.name];
+ item->m_propertyDeclarations.insert(pd.name(), pd);
+ ValuePtr &value = item->m_properties[pd.name()];
if (!value) {
JSSourceValuePtr sourceValue = JSSourceValue::create();
sourceValue->setFile(item->file());
- sourceValue->setSourceCode(pd.initialValueSource.isEmpty() ?
- QLatin1String("undefined") : pd.initialValueSource);
+ sourceValue->setSourceCode(pd.initialValueSource().isEmpty() ?
+ QLatin1String("undefined") : pd.initialValueSource());
value = sourceValue;
}
}
@@ -98,7 +98,7 @@ void BuiltinDeclarations::insert(const ItemDeclaration &decl)
static PropertyDeclaration conditionProperty()
{
PropertyDeclaration decl(QLatin1String("condition"), PropertyDeclaration::Boolean);
- decl.initialValueSource = QLatin1String("true");
+ decl.setInitialValueSource(QLatin1String("true"));
return decl;
}
@@ -110,10 +110,11 @@ static PropertyDeclaration nameProperty()
static PropertyDeclaration prepareScriptProperty()
{
PropertyDeclaration decl(QLatin1String("prepare"), PropertyDeclaration::Verbatim);
- decl.functionArgumentNames
- << QLatin1String("project") << QLatin1String("product")
- << QLatin1String("inputs") << QLatin1String("outputs")
- << QLatin1String("input") << QLatin1String("output");
+ decl.setFunctionArgumentNames(
+ QStringList()
+ << QLatin1String("project") << QLatin1String("product")
+ << QLatin1String("inputs") << QLatin1String("outputs")
+ << QLatin1String("input") << QLatin1String("output"));
return decl;
}
@@ -124,7 +125,7 @@ void BuiltinDeclarations::addArtifactItem()
item << PropertyDeclaration(QLatin1String("fileName"), PropertyDeclaration::Verbatim);
item << PropertyDeclaration(QLatin1String("fileTags"), PropertyDeclaration::Variant);
PropertyDeclaration decl(QLatin1String("alwaysUpdated"), PropertyDeclaration::Boolean);
- decl.initialValueSource = QLatin1String("true");
+ decl.setInitialValueSource(QLatin1String("true"));
item << decl;
insert(item);
}
@@ -136,7 +137,7 @@ void BuiltinDeclarations::addDependsItem()
item << nameProperty();
item << PropertyDeclaration(QLatin1String("submodules"), PropertyDeclaration::Variant);
PropertyDeclaration requiredDecl(QLatin1String("required"), PropertyDeclaration::Boolean);
- requiredDecl.initialValueSource = QLatin1String("true");
+ requiredDecl.setInitialValueSource(QLatin1String("true"));
item << requiredDecl;
insert(item);
}
@@ -180,10 +181,10 @@ void BuiltinDeclarations::addGroupItem()
item << PropertyDeclaration(QLatin1String("prefix"), PropertyDeclaration::Variant,
PropertyDeclaration::PropertyNotAvailableInConfig);
PropertyDeclaration declaration;
- declaration.name = QLatin1String("overrideTags");
- declaration.type = PropertyDeclaration::Boolean;
- declaration.flags = PropertyDeclaration::PropertyNotAvailableInConfig;
- declaration.initialValueSource = QLatin1String("true");
+ declaration.setName(QLatin1String("overrideTags"));
+ declaration.setType(PropertyDeclaration::Boolean);
+ declaration.setFlags(PropertyDeclaration::PropertyNotAvailableInConfig);
+ declaration.setInitialValueSource(QLatin1String("true"));
item << declaration;
insert(item);
}
@@ -212,7 +213,7 @@ void BuiltinDeclarations::addModuleItem()
item << PropertyDeclaration(QLatin1String("additionalProductFileTags"),
PropertyDeclaration::Variant);
PropertyDeclaration presentDecl(QLatin1String("present"), PropertyDeclaration::Boolean);
- presentDecl.initialValueSource = QLatin1String("true");
+ presentDecl.setInitialValueSource(QLatin1String("true"));
item << presentDecl;
insert(item);
}
@@ -222,7 +223,7 @@ void BuiltinDeclarations::addProbeItem()
ItemDeclaration item(QLatin1String("Probe"));
item << conditionProperty();
PropertyDeclaration foundProperty(QLatin1String("found"), PropertyDeclaration::Boolean);
- foundProperty.initialValueSource = QLatin1String("false");
+ foundProperty.setInitialValueSource(QLatin1String("false"));
item << foundProperty;
item << PropertyDeclaration(QLatin1String("configure"), PropertyDeclaration::Verbatim);
insert(item);
@@ -242,14 +243,14 @@ void BuiltinDeclarations::addProductItem()
<< QLatin1String("Rule"));
item << conditionProperty();
PropertyDeclaration decl(QLatin1String("type"), PropertyDeclaration::StringList);
- decl.initialValueSource = QLatin1String("[]");
+ decl.setInitialValueSource(QLatin1String("[]"));
item << decl;
item << nameProperty();
decl = PropertyDeclaration(QLatin1String("targetName"), PropertyDeclaration::String);
- decl.initialValueSource = QLatin1String("name");
+ decl.setInitialValueSource(QLatin1String("name"));
item << decl;
decl = PropertyDeclaration(QLatin1String("destinationDirectory"), PropertyDeclaration::String);
- decl.initialValueSource = QLatin1String("'.'");
+ decl.setInitialValueSource(QLatin1String("'.'"));
item << decl;
item << PropertyDeclaration(QLatin1String("consoleApplication"),
PropertyDeclaration::Boolean);
@@ -303,15 +304,16 @@ void BuiltinDeclarations::addRuleItem()
<< QLatin1String("Artifact"));
item << conditionProperty();
PropertyDeclaration decl(QLatin1String("multiplex"), PropertyDeclaration::Boolean);
- decl.initialValueSource = QLatin1String("false");
+ decl.setInitialValueSource(QLatin1String("false"));
item << decl;
item << PropertyDeclaration(QLatin1String("name"), PropertyDeclaration::String);
item << PropertyDeclaration(QLatin1String("inputs"), PropertyDeclaration::StringList);
item << PropertyDeclaration(QLatin1String("outputFileTags"), PropertyDeclaration::StringList);
decl = PropertyDeclaration(QLatin1String("outputArtifacts"), PropertyDeclaration::Verbatim);
- decl.functionArgumentNames
- << QLatin1String("project") << QLatin1String("product")
- << QLatin1String("inputs") << QLatin1String("input");
+ decl.setFunctionArgumentNames(
+ QStringList()
+ << QLatin1String("project") << QLatin1String("product")
+ << QLatin1String("inputs") << QLatin1String("input"));
item << decl;
item << PropertyDeclaration(QLatin1String("usings"), PropertyDeclaration::StringList);
item << PropertyDeclaration(QLatin1String("auxiliaryInputs"),
@@ -332,9 +334,9 @@ void BuiltinDeclarations::addSubprojectItem()
<< QLatin1String("Properties"));
item << PropertyDeclaration(QLatin1String("filePath"), PropertyDeclaration::Path);
PropertyDeclaration inheritProperty;
- inheritProperty.name = QLatin1String("inheritProperties");
- inheritProperty.type = PropertyDeclaration::Boolean;
- inheritProperty.initialValueSource = QLatin1String("true");
+ inheritProperty.setName(QLatin1String("inheritProperties"));
+ inheritProperty.setType(PropertyDeclaration::Boolean);
+ inheritProperty.setInitialValueSource(QLatin1String("true"));
item << inheritProperty;
insert(item);
}
@@ -358,15 +360,21 @@ void BuiltinDeclarations::addScannerItem()
item << conditionProperty();
item << PropertyDeclaration(QLatin1String("inputs"), PropertyDeclaration::StringList);
PropertyDeclaration recursive(QLatin1String("recursive"), PropertyDeclaration::Boolean);
- recursive.initialValueSource = QLatin1String("false");
+ recursive.setInitialValueSource(QLatin1String("false"));
item << recursive;
PropertyDeclaration searchPaths(QLatin1String("searchPaths"), PropertyDeclaration::Verbatim);
- searchPaths.functionArgumentNames << QLatin1String("project")
- << QLatin1String("product") << QLatin1String("input");
+ searchPaths.setFunctionArgumentNames(
+ QStringList()
+ << QLatin1String("project")
+ << QLatin1String("product")
+ << QLatin1String("input"));
item << searchPaths;
PropertyDeclaration scan(QLatin1String("scan"), PropertyDeclaration::Verbatim);
- scan.functionArgumentNames << QLatin1String("project")
- << QLatin1String("product") << QLatin1String("input");
+ scan.setFunctionArgumentNames(
+ QStringList()
+ << QLatin1String("project")
+ << QLatin1String("product")
+ << QLatin1String("input"));
item << scan;
insert(item);
}
diff --git a/src/lib/corelib/language/evaluatorscriptclass.cpp b/src/lib/corelib/language/evaluatorscriptclass.cpp
index fbcae8170..74677ff56 100644
--- a/src/lib/corelib/language/evaluatorscriptclass.cpp
+++ b/src/lib/corelib/language/evaluatorscriptclass.cpp
@@ -380,7 +380,7 @@ QScriptValue EvaluatorScriptClass::property(const QScriptValue &object, const QS
converter.start();
const PropertyDeclaration decl = data->item->propertyDeclarations().value(name.toString());
- convertToPropertyType(decl.type, result);
+ convertToPropertyType(decl.type(), result);
if (debugProperties)
m_logger.qbsTrace() << "[SC] cache miss " << name << ": " << resultToString(result);
diff --git a/src/lib/corelib/language/itemreaderastvisitor.cpp b/src/lib/corelib/language/itemreaderastvisitor.cpp
index 8800536d7..bffd46e46 100644
--- a/src/lib/corelib/language/itemreaderastvisitor.cpp
+++ b/src/lib/corelib/language/itemreaderastvisitor.cpp
@@ -335,18 +335,18 @@ bool ItemReaderASTVisitor::visit(AST::UiPublicMember *ast)
throw ErrorInfo(Tr::tr("public member without type"));
if (Q_UNLIKELY(ast->type == AST::UiPublicMember::Signal))
throw ErrorInfo(Tr::tr("public member with signal type not supported"));
- p.name = ast->name.toString();
- p.type = PropertyDeclaration::propertyTypeFromString(ast->memberType.toString());
- if (p.type == PropertyDeclaration::UnknownType)
+ p.setName(ast->name.toString());
+ p.setType(PropertyDeclaration::propertyTypeFromString(ast->memberType.toString()));
+ if (p.type() == PropertyDeclaration::UnknownType)
throw ErrorInfo(Tr::tr("Unknown type '%1' in property declaration.")
.arg(ast->memberType.toString()), toCodeLocation(ast->typeToken));
if (ast->typeModifier.compare(QLatin1String("list")))
- p.flags |= PropertyDeclaration::ListProperty;
+ p.setFlags(p.flags() | PropertyDeclaration::ListProperty);
else if (Q_UNLIKELY(!ast->typeModifier.isEmpty()))
throw ErrorInfo(Tr::tr("public member with type modifier '%1' not supported").arg(
ast->typeModifier.toString()));
- m_item->m_propertyDeclarations.insert(p.name, p);
+ m_item->m_propertyDeclarations.insert(p.name(), p);
JSSourceValuePtr value = JSSourceValue::create();
value->setFile(m_file);
@@ -354,11 +354,11 @@ bool ItemReaderASTVisitor::visit(AST::UiPublicMember *ast)
m_sourceValue.swap(value);
visitStatement(ast->statement);
m_sourceValue.swap(value);
- const QStringList bindingName(p.name);
+ const QStringList bindingName(p.name());
checkDuplicateBinding(m_item, bindingName, ast->colonToken);
}
- m_item->m_properties.insert(p.name, value);
+ m_item->m_properties.insert(p.name(), value);
return false;
}
diff --git a/src/lib/corelib/language/moduleloader.cpp b/src/lib/corelib/language/moduleloader.cpp
index 0d92afde1..8078d6e09 100644
--- a/src/lib/corelib/language/moduleloader.cpp
+++ b/src/lib/corelib/language/moduleloader.cpp
@@ -793,7 +793,7 @@ Item *ModuleLoader::loadModuleFile(ProductContext *productContext, const QString
throw ErrorInfo(Tr::tr("Unknown property: %1.%2").arg(fullModuleName, vmit.key()));
const PropertyDeclaration decl = firstValidPropertyDeclaration(module, vmit.key());
module->setProperty(vmit.key(),
- VariantValue::create(convertToPropertyType(vmit.value(), decl.type,
+ VariantValue::create(convertToPropertyType(vmit.value(), decl.type(),
QStringList(fullModuleName), vmit.key())));
}
@@ -913,7 +913,7 @@ void ModuleLoader::instantiateModule(ProductContext *productContext, Item *insta
}
const PropertyDeclaration decl = firstValidPropertyDeclaration(moduleInstance, vmit.key());
moduleInstance->setProperty(vmit.key(),
- VariantValue::create(convertToPropertyType(vmit.value(), decl.type, moduleName,
+ VariantValue::create(convertToPropertyType(vmit.value(), decl.type(), moduleName,
vmit.key())));
}
}
@@ -1042,7 +1042,7 @@ void ModuleLoader::copyProperties(const Item *sourceProject, Item *targetProject
= m_reader->builtins()->declarationsForType(QLatin1String("Project")).properties();
QSet<QString> builtinProjectPropertyNames;
foreach (const PropertyDeclaration &p, builtinProjectProperties)
- builtinProjectPropertyNames << p.name;
+ builtinProjectPropertyNames << p.name();
for (Item::PropertyDeclarationMap::ConstIterator it
= sourceProject->propertyDeclarations().constBegin();
@@ -1134,7 +1134,7 @@ void ModuleLoader::overrideItemProperties(Item *item, const QString &buildConfig
Tr::tr("Unknown property: %1.%2").arg(buildConfigKey, it.key()));
}
item->setProperty(it.key(),
- VariantValue::create(convertToPropertyType(it.value(), decl.type,
+ VariantValue::create(convertToPropertyType(it.value(), decl.type(),
QStringList(buildConfigKey), it.key())));
}
}
diff --git a/src/lib/corelib/language/projectresolver.cpp b/src/lib/corelib/language/projectresolver.cpp
index 66ecb9fd5..528be2a8e 100644
--- a/src/lib/corelib/language/projectresolver.cpp
+++ b/src/lib/corelib/language/projectresolver.cpp
@@ -213,7 +213,7 @@ void ProjectResolver::resolveProject(Item *item, ProjectContext *projectContext)
for (Item::PropertyDeclarationMap::const_iterator it
= item->propertyDeclarations().constBegin();
it != item->propertyDeclarations().constEnd(); ++it) {
- if (it.value().flags.testFlag(PropertyDeclaration::PropertyNotAvailableInConfig))
+ if (it.value().flags().testFlag(PropertyDeclaration::PropertyNotAvailableInConfig))
continue;
const ValueConstPtr v = item->property(it.key());
QBS_ASSERT(v && v->type() != Value::ItemValueType, continue);
@@ -532,7 +532,7 @@ void ProjectResolver::resolveGroup(Item *item, ProjectContext *projectContext)
static QString sourceCodeAsFunction(const JSSourceValueConstPtr &value,
const PropertyDeclaration &decl)
{
- const QString args = decl.functionArgumentNames.join(QLatin1String(","));
+ const QString args = decl.functionArgumentNames().join(QLatin1String(","));
if (value->hasFunctionForm()) {
// Insert the argument list.
QString code = value->sourceCode();
@@ -553,7 +553,7 @@ ScriptFunctionPtr ProjectResolver::scriptFunctionValue(Item *item, const QString
if (value) {
const PropertyDeclaration decl = item->propertyDeclaration(name);
script->sourceCode = sourceCodeAsFunction(value, decl);
- script->argumentNames = decl.functionArgumentNames;
+ script->argumentNames = decl.functionArgumentNames();
script->location = value->location();
script->fileContext = resolvedFileContext(value->file());
}
@@ -971,8 +971,8 @@ QVariantMap ProjectResolver::evaluateProperties(Item *item,
if (pd.isValid())
break;
}
- if (pd.type == PropertyDeclaration::Verbatim
- || pd.flags.testFlag(PropertyDeclaration::PropertyNotAvailableInConfig))
+ if (pd.type() == PropertyDeclaration::Verbatim
+ || pd.flags().testFlag(PropertyDeclaration::PropertyNotAvailableInConfig))
{
break;
}
@@ -984,13 +984,13 @@ QVariantMap ProjectResolver::evaluateProperties(Item *item,
// as such QScriptValues become invalid QVariants.
QVariant v = scriptValue.toVariant();
- if (pd.type == PropertyDeclaration::Path)
+ if (pd.type() == PropertyDeclaration::Path)
v = convertPathProperty(v.toString(),
m_productContext->product->sourceDirectory);
- else if (pd.type == PropertyDeclaration::PathList)
+ else if (pd.type() == PropertyDeclaration::PathList)
v = convertPathListProperty(v.toStringList(),
m_productContext->product->sourceDirectory);
- else if (pd.type == PropertyDeclaration::StringList)
+ else if (pd.type() == PropertyDeclaration::StringList)
v = v.toStringList();
result[it.key()] = v;
break;
diff --git a/src/lib/corelib/language/propertydeclaration.cpp b/src/lib/corelib/language/propertydeclaration.cpp
index 79236e6da..fef098d45 100644
--- a/src/lib/corelib/language/propertydeclaration.cpp
+++ b/src/lib/corelib/language/propertydeclaration.cpp
@@ -29,19 +29,45 @@
#include "propertydeclaration.h"
+#include <QSharedData>
+
namespace qbs {
namespace Internal {
+class PropertyDeclarationData : public QSharedData
+{
+public:
+ PropertyDeclarationData()
+ : type(PropertyDeclaration::UnknownType)
+ , flags(PropertyDeclaration::DefaultFlags)
+ {
+ }
+
+ QString name;
+ PropertyDeclaration::Type type;
+ PropertyDeclaration::Flags flags;
+ QScriptValue allowedValues;
+ QString description;
+ QString initialValueSource;
+ QStringList functionArgumentNames;
+};
+
+
PropertyDeclaration::PropertyDeclaration()
- : type(UnknownType)
- , flags(DefaultFlags)
+ : d(new PropertyDeclarationData)
{
}
PropertyDeclaration::PropertyDeclaration(const QString &name, Type type, Flags flags)
- : name(name)
- , type(type)
- , flags(flags)
+ : d(new PropertyDeclarationData)
+{
+ d->name = name;
+ d->type = type;
+ d->flags = flags;
+}
+
+PropertyDeclaration::PropertyDeclaration(const PropertyDeclaration &other)
+ : d(other.d)
{
}
@@ -49,9 +75,15 @@ PropertyDeclaration::~PropertyDeclaration()
{
}
+PropertyDeclaration &PropertyDeclaration::operator=(const PropertyDeclaration &other)
+{
+ d = other.d;
+ return *this;
+}
+
bool PropertyDeclaration::isValid() const
{
- return type != UnknownType;
+ return d && d->type != UnknownType;
}
PropertyDeclaration::Type PropertyDeclaration::propertyTypeFromString(const QString &typeName)
@@ -73,5 +105,75 @@ PropertyDeclaration::Type PropertyDeclaration::propertyTypeFromString(const QStr
return PropertyDeclaration::UnknownType;
}
+const QString &PropertyDeclaration::name() const
+{
+ return d->name;
+}
+
+void PropertyDeclaration::setName(const QString &name)
+{
+ d->name = name;
+}
+
+PropertyDeclaration::Type PropertyDeclaration::type() const
+{
+ return d->type;
+}
+
+void PropertyDeclaration::setType(PropertyDeclaration::Type t)
+{
+ d->type = t;
+}
+
+PropertyDeclaration::Flags PropertyDeclaration::flags() const
+{
+ return d->flags;
+}
+
+void PropertyDeclaration::setFlags(Flags f)
+{
+ d->flags = f;
+}
+
+const QScriptValue &PropertyDeclaration::allowedValues() const
+{
+ return d->allowedValues;
+}
+
+void PropertyDeclaration::setAllowedValues(const QScriptValue &v)
+{
+ d->allowedValues = v;
+}
+
+const QString &PropertyDeclaration::description() const
+{
+ return d->description;
+}
+
+void PropertyDeclaration::setDescripton(const QString &str)
+{
+ d->description = str;
+}
+
+const QString &PropertyDeclaration::initialValueSource() const
+{
+ return d->initialValueSource;
+}
+
+void PropertyDeclaration::setInitialValueSource(const QString &str)
+{
+ d->initialValueSource = str;
+}
+
+const QStringList &PropertyDeclaration::functionArgumentNames() const
+{
+ return d->functionArgumentNames;
+}
+
+void PropertyDeclaration::setFunctionArgumentNames(const QStringList &lst)
+{
+ d->functionArgumentNames = lst;
+}
+
} // namespace Internal
} // namespace qbs
diff --git a/src/lib/corelib/language/propertydeclaration.h b/src/lib/corelib/language/propertydeclaration.h
index 441e42af9..9b56e0c7b 100644
--- a/src/lib/corelib/language/propertydeclaration.h
+++ b/src/lib/corelib/language/propertydeclaration.h
@@ -30,6 +30,7 @@
#ifndef QBS_PROPERTYDECLARATION_H
#define QBS_PROPERTYDECLARATION_H
+#include <QSharedDataPointer>
#include <QString>
#include <QStringList>
#include <QScriptValue>
@@ -37,6 +38,8 @@
namespace qbs {
namespace Internal {
+class PropertyDeclarationData;
+
class PropertyDeclaration
{
public:
@@ -63,19 +66,38 @@ public:
PropertyDeclaration();
PropertyDeclaration(const QString &name, Type type, Flags flags = DefaultFlags);
+ PropertyDeclaration(const PropertyDeclaration &other);
~PropertyDeclaration();
+ PropertyDeclaration &operator=(const PropertyDeclaration &other);
+
bool isValid() const;
static Type propertyTypeFromString(const QString &typeName);
- QString name;
- Type type;
- Flags flags;
- QScriptValue allowedValues;
- QString description;
- QString initialValueSource;
- QStringList functionArgumentNames;
+ const QString &name() const;
+ void setName(const QString &name);
+
+ Type type() const;
+ void setType(Type t);
+
+ Flags flags() const;
+ void setFlags(Flags f);
+
+ const QScriptValue &allowedValues() const;
+ void setAllowedValues(const QScriptValue &v);
+
+ const QString &description() const;
+ void setDescripton(const QString &str);
+
+ const QString &initialValueSource() const;
+ void setInitialValueSource(const QString &str);
+
+ const QStringList &functionArgumentNames() const;
+ void setFunctionArgumentNames(const QStringList &lst);
+
+private:
+ QSharedDataPointer<PropertyDeclarationData> d;
};
} // namespace Internal