]> git.mxchange.org Git - simgear.git/blobdiff - simgear/package/Package.hxx
Package: support for variants
[simgear.git] / simgear / package / Package.hxx
index 034d7dd0c3c7deae756438194f86744395fe0b1e..2c2ce556c350ddf45688852e20b72a4de4a75a16 100644 (file)
@@ -60,6 +60,12 @@ public:
     
     std::string id() const;
 
+    /**
+     * 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
      */
@@ -70,7 +76,12 @@ public:
      * 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;
+
     /**
      * syntactic sugar to get the localised description
      */
@@ -89,7 +100,9 @@ public:
     std::string getLocalisedProp(const std::string& aName) const;
 
     unsigned int revision() const;
-    
+  
+    size_t fileSizeBytes() const;
+  
     CatalogRef catalog() const
         { return m_catalog; }
     
@@ -116,10 +129,13 @@ private:
     Package(const SGPropertyNode* aProps, CatalogRef aCatalog);
     
     void initWithProps(const SGPropertyNode* aProps);
-    
+
+    void updateFromProps(const SGPropertyNode* aProps);
+
     std::string getLocalisedString(const SGPropertyNode* aRoot, const char* aName) const;
     
     SGPropertyNode_ptr m_props;
+    std::string m_id;
     string_set m_tags;
     CatalogRef m_catalog;
 };