Add some private V8ASSERT macros.
authorAndrew den Exter <andrew.den-exter@nokia.com>
Fri, 29 Jun 2012 03:15:33 +0000 (13:15 +1000)
committerQt by Nokia <qt-info@nokia.com>
Wed, 4 Jul 2012 09:57:06 +0000 (11:57 +0200)
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>
src/qml/qml/v8/qv8engine_p.h
src/quick/items/qquickvisualadaptormodel.cpp
src/quick/items/qquickvisualdatamodel.cpp

index 649edcd..1e91de9 100644 (file)
@@ -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) \
     { \
index bc8c759..1179973 100644 (file)
@@ -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));
index e721391..0570941 100644 (file)
@@ -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());
     }