]> git.tdb.fi Git - builder.git/blobdiff - source/packagemanager.h
Remove most container typedefs and refactor others
[builder.git] / source / packagemanager.h
index 9fb373ec48152b70a16a5e56b93604c08176b38c..9da4af33e3a557851c7dc7f9d23c54e235412edf 100644 (file)
@@ -15,19 +15,15 @@ packages by name.
 */
 class PackageManager
 {
-public:
-       typedef std::map<std::string, Package *> PackageMap;
-
 private:
-       typedef std::list<Msp::FS::Path> SearchPath;
-
        Builder &builder;
-       SearchPath pkg_path;
-       SearchPath pkg_dirs;
-       SearchPath binpkg_path;
-       SearchPath binpkg_files;
+       std::list<Msp::FS::Path> pkg_path;
+       std::list<Msp::FS::Path> pkg_dirs;
+       std::list<Msp::FS::Path> binpkg_path;
+       std::list<Msp::FS::Path> binpkg_files;
        bool no_externals;
-       PackageMap packages;
+       std::map<std::string, Package *> packages;
+       Package *main_pkg;
        std::set<std::string> not_found;
        bool env_set;
 
@@ -48,9 +44,13 @@ public:
        void add_package(Package *);
 
        /** Returns a package from the cache. */
-       Package *get_package(const std::string &);
+       Package *get_package(const std::string &) const;
 
-       const PackageMap &get_packages() const { return packages; }
+       /** Returns the package that was added first.  This should be considered
+       the primary build target. */
+       Package &get_main_package() const;
+
+       const std::map<std::string, Package *> &get_packages() const { return packages; }
 
        /** Locates a package and loads it if necessary. */
        Package *find_package(const std::string &);
@@ -66,6 +66,9 @@ private:
        /** Determines the file containing a binary package.  The file is expected
        to be named after the package. */
        Msp::FS::Path get_binary_package_file(const std::string &);
+
+public:
+       void save_all_caches() const;
 };
 
 #endif