diff options
author | Kent Hansen <kent.hansen@nokia.com> | 2010-03-25 14:50:38 (GMT) |
---|---|---|
committer | Kent Hansen <kent.hansen@nokia.com> | 2010-03-25 14:53:00 (GMT) |
commit | f4da9f9b347d296bc23e44e47e0a6883d5ad41ea (patch) | |
tree | 3a2fa3ab32ac986e74763bba01ef2dde643d1266 /examples/script | |
parent | 2fdfb3e0285ac535b63548d208da6dcae71105cc (diff) | |
download | Qt-f4da9f9b347d296bc23e44e47e0a6883d5ad41ea.zip Qt-f4da9f9b347d296bc23e44e47e0a6883d5ad41ea.tar.gz Qt-f4da9f9b347d296bc23e44e47e0a6883d5ad41ea.tar.bz2 |
Use the new memory cost reporting API in QtScript Custom Class example
Also describe its purpose in the example doc.
Diffstat (limited to 'examples/script')
-rw-r--r-- | examples/script/customclass/bytearrayclass.cpp | 17 | ||||
-rw-r--r-- | examples/script/customclass/bytearrayclass.h | 2 |
2 files changed, 17 insertions, 2 deletions
diff --git a/examples/script/customclass/bytearrayclass.cpp b/examples/script/customclass/bytearrayclass.cpp index 1dbf2d4..239b4b4 100644 --- a/examples/script/customclass/bytearrayclass.cpp +++ b/examples/script/customclass/bytearrayclass.cpp @@ -148,13 +148,13 @@ void ByteArrayClass::setProperty(QScriptValue &object, if (!ba) return; if (name == length) { - ba->resize(value.toInt32()); + resize(*ba, value.toInt32()); } else { qint32 pos = id; if (pos < 0) return; if (ba->size() <= pos) - ba->resize(pos + 1); + resize(*ba, pos + 1); (*ba)[pos] = char(value.toInt32()); } } @@ -194,10 +194,13 @@ QScriptValue ByteArrayClass::constructor() return ctor; } +//! [10] QScriptValue ByteArrayClass::newInstance(int size) { + engine()->reportAdditionalMemoryCost(size); return newInstance(QByteArray(size, /*ch=*/0)); } +//! [10] //! [1] QScriptValue ByteArrayClass::newInstance(const QByteArray &ba) @@ -235,6 +238,16 @@ void ByteArrayClass::fromScriptValue(const QScriptValue &obj, QByteArray &ba) ba = qvariant_cast<QByteArray>(obj.data().toVariant()); } +//! [9] +void ByteArrayClass::resize(QByteArray &ba, int newSize) +{ + int oldSize = ba.size(); + ba.resize(newSize); + if (newSize > oldSize) + engine()->reportAdditionalMemoryCost(newSize - oldSize); +} +//! [9] + ByteArrayClassPropertyIterator::ByteArrayClassPropertyIterator(const QScriptValue &object) diff --git a/examples/script/customclass/bytearrayclass.h b/examples/script/customclass/bytearrayclass.h index f185754..3f7ce22 100644 --- a/examples/script/customclass/bytearrayclass.h +++ b/examples/script/customclass/bytearrayclass.h @@ -82,6 +82,8 @@ private: static QScriptValue toScriptValue(QScriptEngine *eng, const QByteArray &ba); static void fromScriptValue(const QScriptValue &obj, QByteArray &ba); + void resize(QByteArray &ba, int newSize); + QScriptString length; QScriptValue proto; QScriptValue ctor; |