[gjs/wip/ptomato/warnings: 1/3] WIP - do stuff with switches



commit 85f82237940b822ffaea990881f593043965ef4b
Author: Philip Chimento <philip endlessm com>
Date:   Mon Oct 3 13:48:12 2016 -0700

    WIP - do stuff with switches

 gi/arg.cpp                |  198 ++++++++++++++++++---------------------------
 gi/boxed.cpp              |   53 ++++++------
 gi/function.cpp           |    3 +
 gi/object.cpp             |    2 +
 gi/repo.cpp               |    4 +-
 gjs/importer.cpp          |    3 +
 gjs/jsapi-private.cpp     |    2 +
 modules/cairo-surface.cpp |   21 ++---
 8 files changed, 127 insertions(+), 159 deletions(-)
---
diff --git a/gi/arg.cpp b/gi/arg.cpp
index 7044ce1..e8fb7e2 100644
--- a/gi/arg.cpp
+++ b/gi/arg.cpp
@@ -118,15 +118,11 @@ _gjs_enum_value_is_valid(JSContext  *context,
 static bool
 _gjs_enum_uses_signed_type (GIEnumInfo *enum_info)
 {
-    switch (g_enum_info_get_storage_type (enum_info)) {
-    case GI_TYPE_TAG_INT8:
-    case GI_TYPE_TAG_INT16:
-    case GI_TYPE_TAG_INT32:
-    case GI_TYPE_TAG_INT64:
-        return true;
-    default:
-        return false;
-    }
+    GITypeTag storage = g_enum_info_get_storage_type(enum_info);
+    return (storage == GI_TYPE_TAG_INT8 ||
+        storage == GI_TYPE_TAG_INT16 ||
+        storage == GI_TYPE_TAG_INT32 ||
+        storage == GI_TYPE_TAG_INT64);
 }
 
 /* This is hacky - g_function_info_invoke() and g_field_info_get/set_field() expect
@@ -161,16 +157,16 @@ static bool
 type_needs_release (GITypeInfo *type_info,
                     GITypeTag   type_tag)
 {
-    switch (type_tag) {
-    case GI_TYPE_TAG_UTF8:
-    case GI_TYPE_TAG_FILENAME:
-    case GI_TYPE_TAG_ARRAY:
-    case GI_TYPE_TAG_GLIST:
-    case GI_TYPE_TAG_GSLIST:
-    case GI_TYPE_TAG_GHASH:
-    case GI_TYPE_TAG_ERROR:
+    if (type_tag == GI_TYPE_TAG_UTF8 ||
+        type_tag == GI_TYPE_TAG_FILENAME ||
+        type_tag == GI_TYPE_TAG_ARRAY ||
+        type_tag == GI_TYPE_TAG_GLIST ||
+        type_tag == GI_TYPE_TAG_GSLIST ||
+        type_tag == GI_TYPE_TAG_GHASH ||
+        type_tag == GI_TYPE_TAG_ERROR)
         return true;
-    case GI_TYPE_TAG_INTERFACE: {
+
+    if (type_tag == GI_TYPE_TAG_INTERFACE) {
         GIBaseInfo* interface_info;
         GIInfoType interface_type;
         GType gtype;
@@ -181,30 +177,23 @@ type_needs_release (GITypeInfo *type_info,
 
         interface_type = g_base_info_get_type(interface_info);
 
-        switch(interface_type) {
-
-        case GI_INFO_TYPE_STRUCT:
-        case GI_INFO_TYPE_ENUM:
-        case GI_INFO_TYPE_FLAGS:
-        case GI_INFO_TYPE_OBJECT:
-        case GI_INFO_TYPE_INTERFACE:
-        case GI_INFO_TYPE_UNION:
-        case GI_INFO_TYPE_BOXED:
+        if (interface_type == GI_INFO_TYPE_STRUCT ||
+            interface_type == GI_INFO_TYPE_ENUM ||
+            interface_type == GI_INFO_TYPE_FLAGS ||
+            interface_type == GI_INFO_TYPE_OBJECT ||
+            interface_type == GI_INFO_TYPE_INTERFACE ||
+            interface_type == GI_INFO_TYPE_UNION ||
+            interface_type == GI_INFO_TYPE_BOXED) {
             /* These are subtypes of GIRegisteredTypeInfo for which the
              * cast is safe */
             gtype = g_registered_type_info_get_g_type
                 ((GIRegisteredTypeInfo*)interface_info);
-            break;
-
-        case GI_INFO_TYPE_VALUE:
+        } else if (interface_type == GI_INFO_TYPE_VALUE) {
             /* Special case for GValues */
             gtype = G_TYPE_VALUE;
-            break;
-
-        default:
+        } else {
             /* Everything else */
             gtype = G_TYPE_NONE;
-            break;
         }
 
         if (g_type_is_a(gtype, G_TYPE_CLOSURE))
@@ -218,9 +207,8 @@ type_needs_release (GITypeInfo *type_info,
 
         return needs_release;
     }
-    default:
-        return false;
-    }
+
+    return false;
 }
 
 /* Check if an argument of the given needs to be released if we obtained it
@@ -230,47 +218,38 @@ static bool
 type_needs_out_release(GITypeInfo *type_info,
                        GITypeTag   type_tag)
 {
-    switch (type_tag) {
-    case GI_TYPE_TAG_UTF8:
-    case GI_TYPE_TAG_FILENAME:
-    case GI_TYPE_TAG_ARRAY:
-    case GI_TYPE_TAG_GLIST:
-    case GI_TYPE_TAG_GSLIST:
-    case GI_TYPE_TAG_GHASH:
-    case GI_TYPE_TAG_ERROR:
+    if (type_tag == GI_TYPE_TAG_UTF8 ||
+        type_tag == GI_TYPE_TAG_FILENAME ||
+        type_tag == GI_TYPE_TAG_ARRAY ||
+        type_tag == GI_TYPE_TAG_GLIST ||
+        type_tag == GI_TYPE_TAG_GSLIST ||
+        type_tag == GI_TYPE_TAG_GHASH ||
+        type_tag == GI_TYPE_TAG_ERROR)
         return true;
-    case GI_TYPE_TAG_INTERFACE: {
+
+    if (type_tag == GI_TYPE_TAG_INTERFACE) {
         GIBaseInfo* interface_info;
         GIInfoType interface_type;
-        bool needs_release;
+        bool needs_release = true;
 
         interface_info = g_type_info_get_interface(type_info);
         g_assert(interface_info != NULL);
 
         interface_type = g_base_info_get_type(interface_info);
 
-        switch(interface_type) {
-        case GI_INFO_TYPE_ENUM:
-        case GI_INFO_TYPE_FLAGS:
+        if (interface_type == GI_INFO_TYPE_ENUM ||
+            interface_type == GI_INFO_TYPE_FLAGS)
             needs_release = false;
-            break;
-
-        case GI_INFO_TYPE_STRUCT:
-        case GI_INFO_TYPE_UNION:
-            needs_release = g_type_info_is_pointer (type_info);
-            break;
-
-        default:
-            needs_release = true;
-        }
+        else if (interface_type == GI_INFO_TYPE_STRUCT ||
+            interface_type == GI_INFO_TYPE_UNION)
+            needs_release = g_type_info_is_pointer(type_info);
 
         g_base_info_unref(interface_info);
 
         return needs_release;
     }
-    default:
-        return false;
-    }
+
+    return false;
 }
 
 static bool
@@ -524,29 +503,26 @@ gjs_string_to_intarray(JSContext   *context,
 
     element_type = g_type_info_get_tag(param_info);
 
-    switch (element_type) {
-    case GI_TYPE_TAG_INT8:
-    case GI_TYPE_TAG_UINT8:
+    if (element_type == GI_TYPE_TAG_INT8 || element_type == GI_TYPE_TAG_UINT8) {
         if (!gjs_string_to_utf8(context, string_val, &result))
             return false;
         *arr_p = result;
         *length = strlen(result);
         return true;
+    }
 
-    case GI_TYPE_TAG_INT16:
-    case GI_TYPE_TAG_UINT16:
+    if (element_type == GI_TYPE_TAG_INT16 || element_type == GI_TYPE_TAG_UINT16) {
         if (!gjs_string_get_uint16_data(context, string_val,
                                         &result16, length))
             return false;
         *arr_p = result16;
         return true;
-
-    default:
-        /* can't convert a string to this type */
-        gjs_throw(context, "Cannot convert string to array of '%s'",
-                  g_type_tag_to_string (element_type));
-        return false;
     }
+
+    /* can't convert a string to this type */
+    gjs_throw(context, "Cannot convert string to array of '%s'",
+              g_type_tag_to_string (element_type));
+    return false;
 }
 
 static bool
@@ -822,28 +798,18 @@ static bool
 is_gvalue(GIBaseInfo *info,
           GIInfoType  info_type)
 {
-    bool result = false;
-
-    switch(info_type) {
-    case GI_INFO_TYPE_VALUE:
-        result = true;
-        break;
-    case GI_INFO_TYPE_STRUCT:
-    case GI_INFO_TYPE_OBJECT:
-    case GI_INFO_TYPE_INTERFACE:
-    case GI_INFO_TYPE_BOXED:
-        {
-            GType gtype;
-            gtype = g_registered_type_info_get_g_type((GIRegisteredTypeInfo *) info);
+    if (info_type == GI_INFO_TYPE_VALUE)
+        return true;
 
-            result = g_type_is_a(gtype, G_TYPE_VALUE);
-        }
-        break;
-    default:
-        break;
+    if (info_type == GI_INFO_TYPE_STRUCT ||
+        info_type == GI_INFO_TYPE_OBJECT ||
+        info_type == GI_INFO_TYPE_INTERFACE ||
+        info_type == GI_INFO_TYPE_BOXED) {
+        GType gtype = g_registered_type_info_get_g_type((GIRegisteredTypeInfo *) info);
+        return g_type_is_a(gtype, G_TYPE_VALUE);
     }
 
-    return result;
+    return false;
 }
 
 static bool
@@ -1028,9 +994,9 @@ get_argument_display_name(const char     *arg_name,
         return g_strdup("Hash element");
     case GJS_ARGUMENT_ARRAY_ELEMENT:
         return g_strdup("Array element");
+    default:
+        g_assert_not_reached ();
     }
-
-    g_assert_not_reached ();
 }
 
 static const char *
@@ -1362,37 +1328,31 @@ gjs_value_to_g_argument(JSContext      *context,
                 expect_object = true;
             }
 
-            switch(interface_type) {
-            case GI_INFO_TYPE_STRUCT:
-                if (g_struct_info_is_foreign((GIStructInfo*)interface_info)) {
-                    bool ret;
-                    ret = gjs_struct_foreign_convert_to_g_argument(
-                            context, value, interface_info, arg_name,
-                            arg_type, transfer, may_be_null, arg);
-                    g_base_info_unref(interface_info);
-                    return ret;
-                }
-                /* fall through */
-            case GI_INFO_TYPE_ENUM:
-            case GI_INFO_TYPE_FLAGS:
-            case GI_INFO_TYPE_OBJECT:
-            case GI_INFO_TYPE_INTERFACE:
-            case GI_INFO_TYPE_UNION:
-            case GI_INFO_TYPE_BOXED:
+            if (interface_type == GI_INFO_TYPE_STRUCT &&
+                g_struct_info_is_foreign((GIStructInfo*)interface_info)) {
+                bool ret;
+                ret = gjs_struct_foreign_convert_to_g_argument(
+                        context, value, interface_info, arg_name,
+                        arg_type, transfer, may_be_null, arg);
+                g_base_info_unref(interface_info);
+                return ret;
+            }
+
+            if (interface_type == GI_INFO_TYPE_ENUM ||
+                interface_type == GI_INFO_TYPE_FLAGS ||
+                interface_type == GI_INFO_TYPE_OBJECT ||
+                interface_type == GI_INFO_TYPE_INTERFACE ||
+                interface_type == GI_INFO_TYPE_UNION ||
+                interface_type == GI_INFO_TYPE_BOXED) {
                 /* These are subtypes of GIRegisteredTypeInfo for which the
                  * cast is safe */
                 gtype = g_registered_type_info_get_g_type
                     ((GIRegisteredTypeInfo*)interface_info);
-                break;
-            case GI_INFO_TYPE_VALUE:
+            } else if (interface_type == GI_INFO_TYPE_VALUE) {
                 /* Special case for GValues */
                 gtype = G_TYPE_VALUE;
-                break;
-
-            default:
-                /* Everything else */
+            } else {
                 gtype = G_TYPE_NONE;
-                break;
             }
 
             if (gtype != G_TYPE_NONE)
diff --git a/gi/boxed.cpp b/gi/boxed.cpp
index b74e6d2..dce99ff 100644
--- a/gi/boxed.cpp
+++ b/gi/boxed.cpp
@@ -971,29 +971,6 @@ type_can_be_allocated_directly(GITypeInfo *type_info)
         }
     } else {
         switch (g_type_info_get_tag(type_info)) {
-        case GI_TYPE_TAG_BOOLEAN:
-        case GI_TYPE_TAG_INT8:
-        case GI_TYPE_TAG_UINT8:
-        case GI_TYPE_TAG_INT16:
-        case GI_TYPE_TAG_UINT16:
-        case GI_TYPE_TAG_INT32:
-        case GI_TYPE_TAG_UINT32:
-        case GI_TYPE_TAG_INT64:
-        case GI_TYPE_TAG_UINT64:
-        case GI_TYPE_TAG_FLOAT:
-        case GI_TYPE_TAG_DOUBLE:
-        case GI_TYPE_TAG_UNICHAR:
-            break;
-        case GI_TYPE_TAG_VOID:
-        case GI_TYPE_TAG_GTYPE:
-        case GI_TYPE_TAG_ERROR:
-        case GI_TYPE_TAG_UTF8:
-        case GI_TYPE_TAG_FILENAME:
-        case GI_TYPE_TAG_ARRAY:
-        case GI_TYPE_TAG_GLIST:
-        case GI_TYPE_TAG_GSLIST:
-        case GI_TYPE_TAG_GHASH:
-            break;
         case GI_TYPE_TAG_INTERFACE:
             {
                 GIBaseInfo *interface = g_type_info_get_interface(type_info);
@@ -1007,9 +984,6 @@ type_can_be_allocated_directly(GITypeInfo *type_info)
                     /* FIXME: Need to implement */
                     is_simple = false;
                     break;
-                case GI_INFO_TYPE_ENUM:
-                case GI_INFO_TYPE_FLAGS:
-                    break;
                 case GI_INFO_TYPE_OBJECT:
                 case GI_INFO_TYPE_VFUNC:
                 case GI_INFO_TYPE_CALLBACK:
@@ -1029,11 +1003,38 @@ type_can_be_allocated_directly(GITypeInfo *type_info)
                 case GI_INFO_TYPE_INVALID_0:
                     g_assert_not_reached();
                     break;
+                case GI_INFO_TYPE_ENUM:
+                case GI_INFO_TYPE_FLAGS:
+                default:
+                    break;
                 }
 
                 g_base_info_unref(interface);
                 break;
             }
+        case GI_TYPE_TAG_BOOLEAN:
+        case GI_TYPE_TAG_INT8:
+        case GI_TYPE_TAG_UINT8:
+        case GI_TYPE_TAG_INT16:
+        case GI_TYPE_TAG_UINT16:
+        case GI_TYPE_TAG_INT32:
+        case GI_TYPE_TAG_UINT32:
+        case GI_TYPE_TAG_INT64:
+        case GI_TYPE_TAG_UINT64:
+        case GI_TYPE_TAG_FLOAT:
+        case GI_TYPE_TAG_DOUBLE:
+        case GI_TYPE_TAG_UNICHAR:
+        case GI_TYPE_TAG_VOID:
+        case GI_TYPE_TAG_GTYPE:
+        case GI_TYPE_TAG_ERROR:
+        case GI_TYPE_TAG_UTF8:
+        case GI_TYPE_TAG_FILENAME:
+        case GI_TYPE_TAG_ARRAY:
+        case GI_TYPE_TAG_GLIST:
+        case GI_TYPE_TAG_GSLIST:
+        case GI_TYPE_TAG_GHASH:
+        default:
+            break;
         }
     }
     return is_simple;
diff --git a/gi/function.cpp b/gi/function.cpp
index 01bf596..ee4aa3f 100644
--- a/gi/function.cpp
+++ b/gi/function.cpp
@@ -942,6 +942,9 @@ gjs_invoke_c_function(JSContext       *context,
                     failed = true;
                     break;
                 }
+
+            default:
+                ;
             }
 
             if (direction == GI_DIRECTION_INOUT && !arg_removed && !failed) {
diff --git a/gi/object.cpp b/gi/object.cpp
index f1fee8f..82e3884 100644
--- a/gi/object.cpp
+++ b/gi/object.cpp
@@ -359,6 +359,7 @@ object_instance_set_prop(JSContext              *context,
     case NO_SUCH_G_PROPERTY:
         goto out;
     case VALUE_WAS_SET:
+    default:
         break;
     }
 
@@ -721,6 +722,7 @@ object_instance_props_to_g_parameters(JSContext   *context,
             g_free(name);
             goto free_array_and_fail;
         case VALUE_WAS_SET:
+        default:
             break;
         }
 
diff --git a/gi/repo.cpp b/gi/repo.cpp
index 1975355..65f54f3 100644
--- a/gi/repo.cpp
+++ b/gi/repo.cpp
@@ -703,9 +703,9 @@ gjs_info_type_name(GIInfoType type)
     case GI_INFO_TYPE_INVALID_0:
         g_assert_not_reached();
         break;
+    default:
+      return "???";
     }
-
-    return "???";
 }
 
 char*
diff --git a/gjs/importer.cpp b/gjs/importer.cpp
index 9e07c65..4b5383d 100644
--- a/gjs/importer.cpp
+++ b/gjs/importer.cpp
@@ -824,6 +824,9 @@ importer_new_enumerate(JSContext  *context,
             statep.setNull();
         }
     }
+
+    default:
+        ;
     }
 
     return true;
diff --git a/gjs/jsapi-private.cpp b/gjs/jsapi-private.cpp
index d7713f6..e0314e3 100644
--- a/gjs/jsapi-private.cpp
+++ b/gjs/jsapi-private.cpp
@@ -67,6 +67,8 @@ gjs_error_reporter(JSContext     *context,
              */
         case 162:
             return;
+        default:
+            ;
         }
     } else {
         warning = "REPORTED";
diff --git a/modules/cairo-surface.cpp b/modules/cairo-surface.cpp
index af9ca15..a387b8e 100644
--- a/modules/cairo-surface.cpp
+++ b/modules/cairo-surface.cpp
@@ -199,18 +199,15 @@ gjs_cairo_surface_from_surface(JSContext       *context,
     g_return_val_if_fail(context != NULL, NULL);
     g_return_val_if_fail(surface != NULL, NULL);
 
-    switch (cairo_surface_get_type(surface)) {
-        case CAIRO_SURFACE_TYPE_IMAGE:
-            return gjs_cairo_image_surface_from_surface(context, surface);
-        case CAIRO_SURFACE_TYPE_PDF:
-            return gjs_cairo_pdf_surface_from_surface(context, surface);
-        case CAIRO_SURFACE_TYPE_PS:
-            return gjs_cairo_ps_surface_from_surface(context, surface);
-        case CAIRO_SURFACE_TYPE_SVG:
-            return gjs_cairo_svg_surface_from_surface(context, surface);
-        default:
-            break;
-    }
+    cairo_surface_type_t type = cairo_surface_get_type(surface);
+    if (type == CAIRO_SURFACE_TYPE_IMAGE)
+        return gjs_cairo_image_surface_from_surface(context, surface);
+    if (type == CAIRO_SURFACE_TYPE_PDF)
+        return gjs_cairo_pdf_surface_from_surface(context, surface);
+    if (type == CAIRO_SURFACE_TYPE_PS)
+        return gjs_cairo_ps_surface_from_surface(context, surface);
+    if (type == CAIRO_SURFACE_TYPE_SVG)
+        return gjs_cairo_svg_surface_from_surface(context, surface);
 
     JS::RootedObject object(context,
                             JS_NewObject(context, &gjs_cairo_surface_class, NULL, NULL));


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]