X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fpackagemanager.h;h=9da4af33e3a557851c7dc7f9d23c54e235412edf;hb=3938f8030b1f62802decce19777ce70fdafaff10;hp=9fb373ec48152b70a16a5e56b93604c08176b38c;hpb=7c61a1e64153bac91431e1a72d946208dd61eb30;p=builder.git diff --git a/source/packagemanager.h b/source/packagemanager.h index 9fb373e..9da4af3 100644 --- a/source/packagemanager.h +++ b/source/packagemanager.h @@ -15,19 +15,15 @@ packages by name. */ class PackageManager { -public: - typedef std::map PackageMap; - private: - typedef std::list SearchPath; - Builder &builder; - SearchPath pkg_path; - SearchPath pkg_dirs; - SearchPath binpkg_path; - SearchPath binpkg_files; + std::list pkg_path; + std::list pkg_dirs; + std::list binpkg_path; + std::list binpkg_files; bool no_externals; - PackageMap packages; + std::map packages; + Package *main_pkg; std::set 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 &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