+ Add Variant
and VariantList
objects.
+
diff --git a/src/Makefile b/src/Makefile
index 8a0ebdbaa..c975aeb5c 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -10,6 +10,8 @@ pgbackrest: \
common/type/list.o \
common/type/string.o \
common/type/stringList.o \
+ common/type/variant.o \
+ common/type/variantList.o \
config/config.o \
config/define.o \
config/parse.o \
@@ -23,6 +25,8 @@ pgbackrest: \
common/type/list.o \
common/type/string.o \
common/type/stringList.o \
+ common/type/variant.o \
+ common/type/variantList.o \
config/config.o \
config/define.o \
config/parse.o \
diff --git a/src/common/type/stringList.c b/src/common/type/stringList.c
index 2c4a6518d..fe4af4c3c 100644
--- a/src/common/type/stringList.c
+++ b/src/common/type/stringList.c
@@ -53,6 +53,22 @@ strLstNewSplit(const String *string, const String *delimiter)
return this;
}
+/***********************************************************************************************************************************
+New string list from a variant list -- all variants in the list must be type string
+***********************************************************************************************************************************/
+StringList *
+strLstNewVarLst(const VariantList *sourceList)
+{
+ // Create the list
+ StringList *this = strLstNew();
+
+ // Copy variants
+ for (unsigned int listIdx = 0; listIdx < varLstSize(sourceList); listIdx++)
+ strLstAdd(this, varStr(varLstGet(sourceList, listIdx)));
+
+ return this;
+}
+
/***********************************************************************************************************************************
Duplicate a string list
***********************************************************************************************************************************/
diff --git a/src/common/type/stringList.h b/src/common/type/stringList.h
index d1e267d16..b04825ec6 100644
--- a/src/common/type/stringList.h
+++ b/src/common/type/stringList.h
@@ -14,8 +14,11 @@ typedef struct StringList StringList;
/***********************************************************************************************************************************
Functions
***********************************************************************************************************************************/
+#include "common/type/variantList.h"
+
StringList *strLstNew();
StringList *strLstNewSplit(const String *string, const String *delimiter);
+StringList *strLstNewVarLst(const VariantList *sourceList);
StringList *strLstDup(const StringList *sourceList);
StringList *strLstAdd(StringList *this, String *string);
diff --git a/src/common/type/variant.c b/src/common/type/variant.c
new file mode 100644
index 000000000..7a2dfefd2
--- /dev/null
+++ b/src/common/type/variant.c
@@ -0,0 +1,507 @@
+/***********************************************************************************************************************************
+Variant Data Type
+***********************************************************************************************************************************/
+#include