COPYING: Add LGPL 2.1 license.
[collection4.git] / src / graph_ident.c
index 905e73d..36e066d 100644 (file)
@@ -203,7 +203,7 @@ void ident_destroy (graph_ident_t *ident) /* {{{ */
 } /* }}} void ident_destroy */
 
 /* ident_get_* methods {{{ */
-const char *ident_get_host (graph_ident_t *ident) /* {{{ */
+const char *ident_get_host (const graph_ident_t *ident) /* {{{ */
 {
   if (ident == NULL)
     return (NULL);
@@ -211,7 +211,7 @@ const char *ident_get_host (graph_ident_t *ident) /* {{{ */
   return (ident->host);
 } /* }}} char *ident_get_host */
 
-const char *ident_get_plugin (graph_ident_t *ident) /* {{{ */
+const char *ident_get_plugin (const graph_ident_t *ident) /* {{{ */
 {
   if (ident == NULL)
     return (NULL);
@@ -219,7 +219,7 @@ const char *ident_get_plugin (graph_ident_t *ident) /* {{{ */
   return (ident->plugin);
 } /* }}} char *ident_get_plugin */
 
-const char *ident_get_plugin_instance (graph_ident_t *ident) /* {{{ */
+const char *ident_get_plugin_instance (const graph_ident_t *ident) /* {{{ */
 {
   if (ident == NULL)
     return (NULL);
@@ -227,7 +227,7 @@ const char *ident_get_plugin_instance (graph_ident_t *ident) /* {{{ */
   return (ident->plugin_instance);
 } /* }}} char *ident_get_plugin_instance */
 
-const char *ident_get_type (graph_ident_t *ident) /* {{{ */
+const char *ident_get_type (const graph_ident_t *ident) /* {{{ */
 {
   if (ident == NULL)
     return (NULL);
@@ -235,13 +235,33 @@ const char *ident_get_type (graph_ident_t *ident) /* {{{ */
   return (ident->type);
 } /* }}} char *ident_get_type */
 
-const char *ident_get_type_instance (graph_ident_t *ident) /* {{{ */
+const char *ident_get_type_instance (const graph_ident_t *ident) /* {{{ */
 {
   if (ident == NULL)
     return (NULL);
 
   return (ident->type_instance);
 } /* }}} char *ident_get_type_instance */
+
+const char *ident_get_field (const graph_ident_t *ident, /* {{{ */
+    graph_ident_field_t field)
+{
+  if ((ident == NULL) || (field >= _GIF_LAST))
+    return (NULL);
+
+  if (field == GIF_HOST)
+    return (ident->host);
+  else if (field == GIF_PLUGIN)
+    return (ident->plugin);
+  else if (field == GIF_PLUGIN_INSTANCE)
+    return (ident->plugin_instance);
+  else if (field == GIF_TYPE)
+    return (ident->type);
+  else if (field == GIF_TYPE_INSTANCE)
+    return (ident->type_instance);
+  else
+    return (NULL); /* never reached */
+} /* }}} const char *ident_get_field */
 /* }}} ident_get_* methods */
 
 /* ident_set_* methods {{{ */
@@ -357,12 +377,8 @@ int ident_compare (const graph_ident_t *i0, /* {{{ */
 _Bool ident_matches (const graph_ident_t *selector, /* {{{ */
     const graph_ident_t *ident)
 {
-  if ((selector == NULL) && (ident == NULL))
+  if ((selector == NULL) || (ident == NULL))
     return (0);
-  else if (selector == NULL)
-    return (-1);
-  else if (ident == NULL)
-    return (1);
 
   if (!part_matches (selector->host, ident->host))
     return (0);