[gnome-software] gs-content-rating: Factor rating system names out into an array
- From: Richard Hughes <rhughes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software] gs-content-rating: Factor rating system names out into an array
- Date: Mon, 18 Nov 2019 14:10:44 +0000 (UTC)
commit 4db48ef429501d86a45e87eaf8dd97e59dea0d58
Author: Philip Withnall <withnall endlessm com>
Date: Tue Nov 12 11:47:37 2019 +0000
gs-content-rating: Factor rating system names out into an array
This slightly speeds up lookup for them, but also allows the names to be
reused elsewhere, and a compiler error emitted if a new rating system is
added to the enum but not the array.
This makes no functional changes.
Signed-off-by: Philip Withnall <withnall endlessm com>
src/gs-content-rating.c | 56 ++++++++++++++++++++++---------------------------
1 file changed, 25 insertions(+), 31 deletions(-)
---
diff --git a/src/gs-content-rating.c b/src/gs-content-rating.c
index b27a2337..ac1be580 100644
--- a/src/gs-content-rating.c
+++ b/src/gs-content-rating.c
@@ -12,40 +12,34 @@
#include <string.h>
#include "gs-content-rating.h"
+static const gchar *rating_system_names[] = {
+ [GS_CONTENT_RATING_SYSTEM_UNKNOWN] = NULL,
+ [GS_CONTENT_RATING_SYSTEM_INCAA] = "INCAA",
+ [GS_CONTENT_RATING_SYSTEM_ACB] = "ACB",
+ [GS_CONTENT_RATING_SYSTEM_DJCTQ] = "DJCTQ",
+ [GS_CONTENT_RATING_SYSTEM_GSRR] = "GSRR",
+ [GS_CONTENT_RATING_SYSTEM_PEGI] = "PEGI",
+ [GS_CONTENT_RATING_SYSTEM_KAVI] = "KAVI",
+ [GS_CONTENT_RATING_SYSTEM_USK] = "USK",
+ [GS_CONTENT_RATING_SYSTEM_ESRA] = "ESRA",
+ [GS_CONTENT_RATING_SYSTEM_CERO] = "CERO",
+ [GS_CONTENT_RATING_SYSTEM_OFLCNZ] = "OFLCNZ",
+ [GS_CONTENT_RATING_SYSTEM_RUSSIA] = "RUSSIA",
+ [GS_CONTENT_RATING_SYSTEM_MDA] = "MDA",
+ [GS_CONTENT_RATING_SYSTEM_GRAC] = "GRAC",
+ [GS_CONTENT_RATING_SYSTEM_ESRB] = "ESRB",
+ [GS_CONTENT_RATING_SYSTEM_IARC] = "IARC",
+};
+G_STATIC_ASSERT (G_N_ELEMENTS (rating_system_names) == GS_CONTENT_RATING_SYSTEM_LAST);
+
const gchar *
gs_content_rating_system_to_str (GsContentRatingSystem system)
{
- if (system == GS_CONTENT_RATING_SYSTEM_INCAA)
- return "INCAA";
- if (system == GS_CONTENT_RATING_SYSTEM_ACB)
- return "ACB";
- if (system == GS_CONTENT_RATING_SYSTEM_DJCTQ)
- return "DJCTQ";
- if (system == GS_CONTENT_RATING_SYSTEM_GSRR)
- return "GSRR";
- if (system == GS_CONTENT_RATING_SYSTEM_PEGI)
- return "PEGI";
- if (system == GS_CONTENT_RATING_SYSTEM_KAVI)
- return "KAVI";
- if (system == GS_CONTENT_RATING_SYSTEM_USK)
- return "USK";
- if (system == GS_CONTENT_RATING_SYSTEM_ESRA)
- return "ESRA";
- if (system == GS_CONTENT_RATING_SYSTEM_CERO)
- return "CERO";
- if (system == GS_CONTENT_RATING_SYSTEM_OFLCNZ)
- return "OFLCNZ";
- if (system == GS_CONTENT_RATING_SYSTEM_RUSSIA)
- return "RUSSIA";
- if (system == GS_CONTENT_RATING_SYSTEM_MDA)
- return "MDA";
- if (system == GS_CONTENT_RATING_SYSTEM_GRAC)
- return "GRAC";
- if (system == GS_CONTENT_RATING_SYSTEM_ESRB)
- return "ESRB";
- if (system == GS_CONTENT_RATING_SYSTEM_IARC)
- return "IARC";
- return NULL;
+ if ((gint) system < GS_CONTENT_RATING_SYSTEM_UNKNOWN ||
+ (gint) system >= GS_CONTENT_RATING_SYSTEM_LAST)
+ return NULL;
+
+ return rating_system_names[system];
}
const gchar *
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]