aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIvan Komissarov <abbapoh@gmail.com>2020-10-27 13:35:16 +0100
committerIvan Komissarov <ABBAPOH@gmail.com>2020-10-27 20:58:15 +0000
commit99d52feb0b90097457c71324801352f6f844ed13 (patch)
treea7f60d0547dabae009f0712597170f53c4acaac7
parent5ddcbc5084b666c5a5e5f4d217e2fa9b2b3c792f (diff)
Use make_shared to create Values
Should save some allocations. Requires making ctors public. Change-Id: I9d8a14a1c2edf374add0fdae914a028f9987d216 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
-rw-r--r--src/lib/corelib/language/value.cpp14
-rw-r--r--src/lib/corelib/language/value.h9
2 files changed, 12 insertions, 11 deletions
diff --git a/src/lib/corelib/language/value.cpp b/src/lib/corelib/language/value.cpp
index 342fbd89a..b3e782519 100644
--- a/src/lib/corelib/language/value.cpp
+++ b/src/lib/corelib/language/value.cpp
@@ -110,14 +110,14 @@ JSSourceValue::JSSourceValue(const JSSourceValue &other) : Value(other)
JSSourceValuePtr JSSourceValue::create(bool createdByPropertiesBlock)
{
- return JSSourceValuePtr(new JSSourceValue(createdByPropertiesBlock));
+ return std::make_shared<JSSourceValue>(createdByPropertiesBlock);
}
JSSourceValue::~JSSourceValue() = default;
ValuePtr JSSourceValue::clone() const
{
- return JSSourceValuePtr(new JSSourceValue(*this));
+ return std::make_shared<JSSourceValue>(*this);
}
QString JSSourceValue::sourceCodeForEvaluation() const
@@ -171,7 +171,7 @@ ItemValue::ItemValue(Item *item, bool createdByPropertiesBlock)
ItemValuePtr ItemValue::create(Item *item, bool createdByPropertiesBlock)
{
- return ItemValuePtr(new ItemValue(item, createdByPropertiesBlock));
+ return std::make_shared<ItemValue>(item, createdByPropertiesBlock);
}
ValuePtr ItemValue::clone() const
@@ -191,7 +191,7 @@ VariantValuePtr VariantValue::create(const QVariant &v)
return invalidValue();
if (static_cast<QMetaType::Type>(v.type()) == QMetaType::Bool)
return v.toBool() ? VariantValue::trueValue() : VariantValue::falseValue();
- return VariantValuePtr(new VariantValue(v));
+ return std::make_shared<VariantValue>(v);
}
ValuePtr VariantValue::clone() const
@@ -201,19 +201,19 @@ ValuePtr VariantValue::clone() const
const VariantValuePtr &VariantValue::falseValue()
{
- static const VariantValuePtr v = VariantValuePtr(new VariantValue(false));
+ static const VariantValuePtr v = std::make_shared<VariantValue>(false);
return v;
}
const VariantValuePtr &VariantValue::trueValue()
{
- static const VariantValuePtr v = VariantValuePtr(new VariantValue(true));
+ static const VariantValuePtr v = std::make_shared<VariantValue>(true);
return v;
}
const VariantValuePtr &VariantValue::invalidValue()
{
- static const VariantValuePtr v = VariantValuePtr(new VariantValue(QVariant()));
+ static const VariantValuePtr v = std::make_shared<VariantValue>(QVariant());
return v;
}
diff --git a/src/lib/corelib/language/value.h b/src/lib/corelib/language/value.h
index d3a748d92..287060809 100644
--- a/src/lib/corelib/language/value.h
+++ b/src/lib/corelib/language/value.h
@@ -98,8 +98,6 @@ public:
class JSSourceValue : public Value
{
friend class ItemReaderASTVisitor;
- JSSourceValue(bool createdByPropertiesBlock);
- JSSourceValue(const JSSourceValue &other);
enum Flag
{
@@ -114,6 +112,9 @@ class JSSourceValue : public Value
Q_DECLARE_FLAGS(Flags, Flag)
public:
+ explicit JSSourceValue(bool createdByPropertiesBlock);
+ JSSourceValue(const JSSourceValue &other);
+
static JSSourceValuePtr QBS_AUTOTEST_EXPORT create(bool createdByPropertiesBlock = false);
~JSSourceValue() override;
@@ -190,8 +191,8 @@ private:
class ItemValue : public Value
{
- ItemValue(Item *item, bool createdByPropertiesBlock);
public:
+ ItemValue(Item *item, bool createdByPropertiesBlock);
static ItemValuePtr create(Item *item, bool createdByPropertiesBlock = false);
Item *item() const { return m_item; }
@@ -207,8 +208,8 @@ private:
class VariantValue : public Value
{
- VariantValue(QVariant v);
public:
+ explicit VariantValue(QVariant v);
static VariantValuePtr create(const QVariant &v = QVariant());
void apply(ValueHandler *handler) override { handler->handle(this); }