+
+static
+const char *lookup_name_from_value(const struct loglevel_name_value values[],
+ size_t values_count, int loglevel)
+{
+ size_t i;
+ const char *name = NULL;
+
+ for (i = 0; i < values_count; i++) {
+ if (values[i].value == loglevel) {
+ /* Match found. */
+ name = values[i].name;
+ goto end;
+ }
+ }
+
+end:
+ return name;
+}
+
+LTTNG_HIDDEN
+const char *loglevel_value_to_name(int loglevel)
+{
+ return lookup_name_from_value(
+ loglevel_values, ARRAY_SIZE(loglevel_values), loglevel);
+}
+
+LTTNG_HIDDEN
+const char *loglevel_log4j_value_to_name(int loglevel)
+{
+ return lookup_name_from_value(loglevel_log4j_values,
+ ARRAY_SIZE(loglevel_log4j_values), loglevel);
+}
+
+LTTNG_HIDDEN
+const char *loglevel_jul_value_to_name(int loglevel)
+{
+ return lookup_name_from_value(loglevel_jul_values,
+ ARRAY_SIZE(loglevel_jul_values), loglevel);
+}
+
+LTTNG_HIDDEN
+const char *loglevel_python_value_to_name(int loglevel)
+{
+ return lookup_name_from_value(loglevel_python_values,
+ ARRAY_SIZE(loglevel_python_values), loglevel);
+}