]> git.mxchange.org Git - simgear.git/commitdiff
New accessors for variant support.
authorJames Turner <zakalawe@mac.com>
Mon, 4 Jan 2016 02:57:19 +0000 (20:57 -0600)
committerJames Turner <zakalawe@mac.com>
Mon, 4 Jan 2016 02:57:19 +0000 (20:57 -0600)
simgear/package/Package.cxx
simgear/package/Package.hxx

index bd25fb3c60726f2af504028a9b0d2c7a4ee6fc11..b32e2fc3137a132997d95136005046b1e2043cc0 100644 (file)
@@ -167,6 +167,11 @@ std::string Package::qualifiedId() const
     return m_catalog->id() + "." + id();
 }
 
+std::string Package::qualifiedVariantId(const unsigned int variantIndex) const
+{
+    return m_catalog->id() + "." + variants()[variantIndex];
+}
+
 std::string Package::md5() const
 {
     return m_props->getStringValue("md5");
@@ -333,6 +338,20 @@ std::string Package::nameForVariant(const std::string& vid) const
     throw sg_exception("Unknow variant +" + vid + " in package " + id());
 }
 
+std::string Package::nameForVariant(const unsigned int vIndex) const
+{
+    if (vIndex == 0)
+        return name();
+
+    // offset by minus one to allow for index 0 being the primary
+    SGPropertyNode_ptr var = m_props->getChild("variant", vIndex - 1);
+    if (var)
+        return var->getStringValue("name");
+
+    throw sg_exception("Unknow variant in package " + id());
+}
+
+
 } // of namespace pkg
 
 } // of namespace simgear
index 606185fdddcafb6ffe0a451e5ff4af71f8022824..840a22cd66d2458f47fa1c4630e1e5eec2a4403e 100644 (file)
@@ -75,6 +75,11 @@ public:
      * 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,
@@ -87,6 +92,8 @@ public:
      */
     std::string nameForVariant(const std::string& vid) const;
 
+    std::string nameForVariant(const unsigned int vIndex) const;
+
     /**
      * syntactic sugar to get the localised description
      */