aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew den Exter <andrew.den-exter@nokia.com>2012-06-29 13:15:33 +1000
committerQt by Nokia <qt-info@nokia.com>2012-07-04 11:57:06 +0200
commit7481adc7d72665de7873b99f58764f2a6b906c9c (patch)
tree9d417a6615c91380f1c70d21f7149a270807c250
parent1d7471d93b4463657f2721074f2a63a12ea18752 (diff)
Add some private V8ASSERT macros.
Simple variation on the V8THROW macros to consilidate the normal usage pattern of if (!condition) THROW. Change-Id: I71aaabab705c3f73922efdaf8bb40b5dcc390101 Reviewed-by: Chris Adams <christopher.adams@nokia.com>
-rw-r--r--src/qml/qml/v8/qv8engine_p.h11
-rw-r--r--src/quick/items/qquickvisualadaptormodel.cpp18
-rw-r--r--src/quick/items/qquickvisualdatamodel.cpp24
3 files changed, 25 insertions, 28 deletions
diff --git a/src/qml/qml/v8/qv8engine_p.h b/src/qml/qml/v8/qv8engine_p.h
index 649edcdbb2..1e91de91b6 100644
--- a/src/qml/qml/v8/qv8engine_p.h
+++ b/src/qml/qml/v8/qv8engine_p.h
@@ -108,6 +108,17 @@ QT_BEGIN_NAMESPACE
return; \
}
+#define V8ASSERT_TYPE(condition, string) \
+ if (!(condition)) { \
+ v8::ThrowException(v8::Exception::TypeError(v8::String::New(string))); \
+ return v8::Handle<v8::Value>(); \
+ }
+#define V8ASSERT_TYPE_SETTER(condition, string) \
+ if (!(condition)) { \
+ v8::ThrowException(v8::Exception::TypeError(v8::String::New(string))); \
+ return; \
+ }
+
#define V8_DEFINE_EXTENSION(dataclass, datafunction) \
static inline dataclass *datafunction(QV8Engine *engine) \
{ \
diff --git a/src/quick/items/qquickvisualadaptormodel.cpp b/src/quick/items/qquickvisualadaptormodel.cpp
index bc8c75933a..117997310b 100644
--- a/src/quick/items/qquickvisualadaptormodel.cpp
+++ b/src/quick/items/qquickvisualadaptormodel.cpp
@@ -67,8 +67,7 @@ static void addProperty(QMetaObjectBuilder *builder, int propertyId, const QByte
static v8::Handle<v8::Value> get_index(v8::Local<v8::String>, const v8::AccessorInfo &info)
{
QQuickVisualDataModelItem *data = v8_resource_cast<QQuickVisualDataModelItem>(info.This());
- if (!data)
- V8THROW_ERROR("Not a valid VisualData object");
+ V8ASSERT_TYPE(data, "Not a valid VisualData object");
return v8::Int32::New(data->index);
}
@@ -316,8 +315,7 @@ v8::Handle<v8::Value> QQuickVDMCachedModelData::get_property(
v8::Local<v8::String>, const v8::AccessorInfo &info)
{
QQuickVisualDataModelItem *data = v8_resource_cast<QQuickVisualDataModelItem>(info.This());
- if (!data)
- V8THROW_ERROR("Not a valid VisualData object");
+ V8ASSERT_TYPE(data, "Not a valid VisualData object");
QQuickVDMCachedModelData *modelData = static_cast<QQuickVDMCachedModelData *>(data);
const int propertyId = info.Data()->Int32Value();
@@ -337,8 +335,7 @@ void QQuickVDMCachedModelData::set_property(
v8::Local<v8::String>, v8::Local<v8::Value> value, const v8::AccessorInfo &info)
{
QQuickVisualDataModelItem *data = v8_resource_cast<QQuickVisualDataModelItem>(info.This());
- if (!data)
- V8THROW_ERROR_SETTER("Not a valid VisualData object");
+ V8ASSERT_TYPE_SETTER(data, "Not a valid VisualData object");
const int propertyId = info.Data()->Int32Value();
if (data->index == -1) {
@@ -410,8 +407,7 @@ public:
static v8::Handle<v8::Value> get_hasModelChildren(v8::Local<v8::String>, const v8::AccessorInfo &info)
{
QQuickVisualDataModelItem *data = v8_resource_cast<QQuickVisualDataModelItem>(info.This());
- if (!data)
- V8THROW_ERROR("Not a valid VisualData object");
+ V8ASSERT_TYPE(data, "Not a valid VisualData object");
const QQuickVisualAdaptorModel *const model = static_cast<QQuickVDMCachedModelData *>(data)->type->model;
if (data->index >= 0 && *model) {
@@ -682,8 +678,7 @@ public:
static v8::Handle<v8::Value> get_modelData(v8::Local<v8::String>, const v8::AccessorInfo &info)
{
QQuickVisualDataModelItem *data = v8_resource_cast<QQuickVisualDataModelItem>(info.This());
- if (!data)
- V8THROW_ERROR("Not a valid VisualData object");
+ V8ASSERT_TYPE(data, "Not a valid VisualData object");
return data->engine->fromVariant(static_cast<QQuickVDMListAccessorData *>(data)->cachedData);
}
@@ -691,8 +686,7 @@ public:
static void set_modelData(v8::Local<v8::String>, const v8::Handle<v8::Value> &value, const v8::AccessorInfo &info)
{
QQuickVisualDataModelItem *data = v8_resource_cast<QQuickVisualDataModelItem>(info.This());
- if (!data)
- V8THROW_ERROR_SETTER("Not a valid VisualData object");
+ V8ASSERT_TYPE_SETTER(data, "Not a valid VisualData object");
static_cast<QQuickVDMListAccessorData *>(data)->setModelData(
data->engine->toVariant(value, QVariant::Invalid));
diff --git a/src/quick/items/qquickvisualdatamodel.cpp b/src/quick/items/qquickvisualdatamodel.cpp
index e721391296..05709411f9 100644
--- a/src/quick/items/qquickvisualdatamodel.cpp
+++ b/src/quick/items/qquickvisualdatamodel.cpp
@@ -1628,8 +1628,7 @@ v8::Handle<v8::Value> QQuickVisualDataModelItemMetaType::get_model(
v8::Local<v8::String>, const v8::AccessorInfo &info)
{
QQuickVisualDataModelItem *cacheItem = v8_resource_cast<QQuickVisualDataModelItem>(info.This());
- if (!cacheItem)
- V8THROW_ERROR("Not a valid VisualData object");
+ V8ASSERT_TYPE(cacheItem, "Not a valid VisualData object");
if (!cacheItem->metaType->model)
return v8::Undefined();
@@ -1647,8 +1646,7 @@ v8::Handle<v8::Value> QQuickVisualDataModelItemMetaType::get_groups(
v8::Local<v8::String>, const v8::AccessorInfo &info)
{
QQuickVisualDataModelItem *cacheItem = v8_resource_cast<QQuickVisualDataModelItem>(info.This());
- if (!cacheItem)
- V8THROW_ERROR("Not a valid VisualData object");
+ V8ASSERT_TYPE(cacheItem, "Not a valid VisualData object");
QStringList groups;
for (int i = 1; i < cacheItem->metaType->groupCount; ++i) {
@@ -1663,8 +1661,7 @@ void QQuickVisualDataModelItemMetaType::set_groups(
v8::Local<v8::String>, v8::Local<v8::Value> value, const v8::AccessorInfo &info)
{
QQuickVisualDataModelItem *cacheItem = v8_resource_cast<QQuickVisualDataModelItem>(info.This());
- if (!cacheItem)
- V8THROW_ERROR_SETTER("Not a valid VisualData object");
+ V8ASSERT_TYPE_SETTER(cacheItem, "Not a valid VisualData object");
if (!cacheItem->metaType->model)
return;
@@ -1680,8 +1677,7 @@ v8::Handle<v8::Value> QQuickVisualDataModelItemMetaType::get_member(
v8::Local<v8::String>, const v8::AccessorInfo &info)
{
QQuickVisualDataModelItem *cacheItem = v8_resource_cast<QQuickVisualDataModelItem>(info.This());
- if (!cacheItem)
- V8THROW_ERROR("Not a valid VisualData object");
+ V8ASSERT_TYPE(cacheItem, "Not a valid VisualData object");
return v8::Boolean::New(cacheItem->groups & (1 << info.Data()->Int32Value()));
}
@@ -1690,8 +1686,7 @@ void QQuickVisualDataModelItemMetaType::set_member(
v8::Local<v8::String>, v8::Local<v8::Value> value, const v8::AccessorInfo &info)
{
QQuickVisualDataModelItem *cacheItem = v8_resource_cast<QQuickVisualDataModelItem>(info.This());
- if (!cacheItem)
- V8THROW_ERROR_SETTER("Not a valid VisualData object");
+ V8ASSERT_TYPE_SETTER(cacheItem, "Not a valid VisualData object");
if (!cacheItem->metaType->model)
return;
@@ -1715,8 +1710,7 @@ v8::Handle<v8::Value> QQuickVisualDataModelItemMetaType::get_index(
v8::Local<v8::String>, const v8::AccessorInfo &info)
{
QQuickVisualDataModelItem *cacheItem = v8_resource_cast<QQuickVisualDataModelItem>(info.This());
- if (!cacheItem)
- V8THROW_ERROR("Not a valid VisualData object");
+ V8ASSERT_TYPE(cacheItem, "Not a valid VisualData object");
return v8::Integer::New(cacheItem->groupIndex(Compositor::Group(info.Data()->Int32Value())));
}
@@ -2984,8 +2978,7 @@ public:
static v8::Handle<v8::Value> get_change(quint32 index, const v8::AccessorInfo &info)
{
QQuickVisualDataGroupChangeArray *array = v8_resource_cast<QQuickVisualDataGroupChangeArray>(info.This());
- if (!array)
- V8THROW_ERROR("Not a valid change array");
+ V8ASSERT_TYPE(array, "Not a valid change array");
if (index >= array->count())
return v8::Undefined();
@@ -3004,8 +2997,7 @@ public:
static v8::Handle<v8::Value> get_length(v8::Local<v8::String>, const v8::AccessorInfo &info)
{
QQuickVisualDataGroupChangeArray *array = v8_resource_cast<QQuickVisualDataGroupChangeArray>(info.This());
- if (!array)
- V8THROW_ERROR("Not a valid change array");
+ V8ASSERT_TYPE(array, "Not a valid change array");
return v8::Integer::New(array->count());
}