From 7481adc7d72665de7873b99f58764f2a6b906c9c Mon Sep 17 00:00:00 2001 From: Andrew den Exter Date: Fri, 29 Jun 2012 13:15:33 +1000 Subject: [PATCH] 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 --- src/qml/qml/v8/qv8engine_p.h | 11 +++++++++++ src/quick/items/qquickvisualadaptormodel.cpp | 18 ++++++------------ src/quick/items/qquickvisualdatamodel.cpp | 24 ++++++++---------------- 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 649edcd..1e91de9 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(); \ + } +#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 bc8c759..1179973 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 get_index(v8::Local, const v8::AccessorInfo &info) { QQuickVisualDataModelItem *data = v8_resource_cast(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 QQuickVDMCachedModelData::get_property( v8::Local, const v8::AccessorInfo &info) { QQuickVisualDataModelItem *data = v8_resource_cast(info.This()); - if (!data) - V8THROW_ERROR("Not a valid VisualData object"); + V8ASSERT_TYPE(data, "Not a valid VisualData object"); QQuickVDMCachedModelData *modelData = static_cast(data); const int propertyId = info.Data()->Int32Value(); @@ -337,8 +335,7 @@ void QQuickVDMCachedModelData::set_property( v8::Local, v8::Local value, const v8::AccessorInfo &info) { QQuickVisualDataModelItem *data = v8_resource_cast(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 get_hasModelChildren(v8::Local, const v8::AccessorInfo &info) { QQuickVisualDataModelItem *data = v8_resource_cast(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(data)->type->model; if (data->index >= 0 && *model) { @@ -682,8 +678,7 @@ public: static v8::Handle get_modelData(v8::Local, const v8::AccessorInfo &info) { QQuickVisualDataModelItem *data = v8_resource_cast(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(data)->cachedData); } @@ -691,8 +686,7 @@ public: static void set_modelData(v8::Local, const v8::Handle &value, const v8::AccessorInfo &info) { QQuickVisualDataModelItem *data = v8_resource_cast(info.This()); - if (!data) - V8THROW_ERROR_SETTER("Not a valid VisualData object"); + V8ASSERT_TYPE_SETTER(data, "Not a valid VisualData object"); static_cast(data)->setModelData( data->engine->toVariant(value, QVariant::Invalid)); diff --git a/src/quick/items/qquickvisualdatamodel.cpp b/src/quick/items/qquickvisualdatamodel.cpp index e721391..0570941 100644 --- a/src/quick/items/qquickvisualdatamodel.cpp +++ b/src/quick/items/qquickvisualdatamodel.cpp @@ -1628,8 +1628,7 @@ v8::Handle QQuickVisualDataModelItemMetaType::get_model( v8::Local, const v8::AccessorInfo &info) { QQuickVisualDataModelItem *cacheItem = v8_resource_cast(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 QQuickVisualDataModelItemMetaType::get_groups( v8::Local, const v8::AccessorInfo &info) { QQuickVisualDataModelItem *cacheItem = v8_resource_cast(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::Local value, const v8::AccessorInfo &info) { QQuickVisualDataModelItem *cacheItem = v8_resource_cast(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 QQuickVisualDataModelItemMetaType::get_member( v8::Local, const v8::AccessorInfo &info) { QQuickVisualDataModelItem *cacheItem = v8_resource_cast(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::Local value, const v8::AccessorInfo &info) { QQuickVisualDataModelItem *cacheItem = v8_resource_cast(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 QQuickVisualDataModelItemMetaType::get_index( v8::Local, const v8::AccessorInfo &info) { QQuickVisualDataModelItem *cacheItem = v8_resource_cast(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 get_change(quint32 index, const v8::AccessorInfo &info) { QQuickVisualDataGroupChangeArray *array = v8_resource_cast(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 get_length(v8::Local, const v8::AccessorInfo &info) { QQuickVisualDataGroupChangeArray *array = v8_resource_cast(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()); } -- 2.7.4