+
+ /**
+ * Variant IDs. Note the primary ID will always be included as
+ * variants()[0], to simplify enumerating all variants
+ */
+ string_list variants() const;
+
+ /**
+ * Fully-qualified ID, including our catalog'd ID
+ */
+ std::string qualifiedId() const;
+
+ /**
+ * Fully-qualified ID, including our catalog'd ID
+ */
+ std::string qualifiedVariantId(const unsigned int variantIndex) const;
+
+ /**
+ * human-readable name - note this is probably not localised,
+ * although this is not ruled out for the future.
+ */
+ std::string name() const;
+
+ /**
+ * Human readable name of a variant
+ */
+ std::string nameForVariant(const std::string& vid) const;
+
+ std::string nameForVariant(const unsigned int vIndex) const;
+
+ /**
+ * syntactic sugar to get the localised description
+ */
+ std::string description() const;