]> git.mxchange.org Git - simgear.git/blobdiff - simgear/package/Package.hxx
Package: support for variants
[simgear.git] / simgear / package / Package.hxx
index 43934ddf14af4784e67b2967843a790818fabe64..2c2ce556c350ddf45688852e20b72a4de4a75a16 100644 (file)
@@ -59,13 +59,29 @@ public:
     bool isInstalled() const;
     
     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
+     */
+    std::string qualifiedId() 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;
+
     /**
      * syntactic sugar to get the localised description
      */
@@ -84,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; }
     
@@ -111,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;
 };