]> xenbits.xensource.com Git - libvirt.git/commitdiff
virsh: Introduce virshEnumComplete()
authorMichal Privoznik <mprivozn@redhat.com>
Sat, 12 Mar 2022 04:37:50 +0000 (05:37 +0100)
committerMichal Privoznik <mprivozn@redhat.com>
Tue, 15 Mar 2022 12:36:56 +0000 (13:36 +0100)
We have plenty of completers which iterate over all values of
given enum and do nothing more than translate every member into
string (using corresponding virXXXTypeToString()).

Introduce a convenience function so that callers can pass just
VIR_XXX_LAST and virXXXTypeToString and the rest is taken care
of.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
tools/virsh-completer.c
tools/virsh-completer.h

index 3d77be31219e5cdd84ecee556a3f099272eed698..e5610d0fe8e4e9ff3904b90152b5b64933ba5801 100644 (file)
  */
 
 
+/**
+ * virshEnumComplete:
+ * @last: The number of element in enum (pass VIR_XXX_LAST)
+ * @intToStr: integer to string conversion (pass virXXXTypeToString)
+ *
+ * Convenient function to generate completions across all values
+ * of given enum. The enum, or values we want to generate, must
+ * start at 0 and be continuous until @last.
+ *
+ * Returns: string list of completions.
+ */
+char **
+virshEnumComplete(unsigned int last,
+                  const char *(*intToStr)(int))
+{
+    char **ret = NULL;
+    size_t i;
+
+    ret = g_new0(char *, last + 1);
+
+    for (i = 0; i < last; i++)
+        ret[i] = g_strdup(intToStr(i));
+
+    return ret;
+}
+
+
 /**
  * virshCommaStringListComplete:
  * @input: user input so far
index 1d7affbb23b350d63220ca628571ea86f9ec2b60..131678dfbce158169f1da7da8d6c6262a7d28a16 100644 (file)
 #include "virsh-completer-snapshot.h"
 #include "virsh-completer-volume.h"
 
+char **
+virshEnumComplete(unsigned int last,
+                  const char *(*intToStr)(int));
+
 char **
 virshCommaStringListComplete(const char *input,
                              const char **options);