]> git.tdb.fi Git - builder.git/blobdiff - source/sourcepackage.h
Convert all list containers to vectors
[builder.git] / source / sourcepackage.h
index ed8ad40f7275f9d5ac364a3f7971cf805b31b050..23e8f36320aaf5de5393bffb9ef5ab3268c7ee06 100644 (file)
@@ -6,6 +6,7 @@
 #include "buildinfo.h"
 #include "cache.h"
 #include "component.h"
+#include "conditionalloader.h"
 #include "config.h"
 #include "feature.h"
 #include "package.h"
@@ -22,36 +23,30 @@ A package that can be built by Builder.
 class SourcePackage: public Package
 {
 public:
-       class Loader: public Msp::DataFile::DerivedObjectLoader<SourcePackage, Package::Loader>
+       class Loader: public Msp::DataFile::DerivedObjectLoader<SourcePackage, Package::Loader>, public FeatureConditional
        {
        private:
                const Config::InputOptions *options;
 
        public:
-               Loader(SourcePackage &);
-               Loader(SourcePackage &, const Config::InputOptions &);
+               Loader(SourcePackage &, const Config::InputOptions *);
        private:
-               void init(const Config::InputOptions *);
-               virtual void finish();
+               void finish() override;
+
                void feature(const std::string &, const std::string &);
                template<typename C>
                void component(const std::string &);
-               template<typename C, typename A, A>
-               void component_arg(const std::string &);
+               template<typename C, typename A>
+               void component_arg(A, const std::string &);
                void build_info();
                void generate(const std::string &);
-               void if_feature(const std::string &);
                void interface_version(const std::string &);
                void source_archive();
                void tarball(const std::string &);
                void version(const std::string &);
        };
 
-       typedef std::list<Component *> ComponentList;
-
 private:
-       typedef std::list<Feature> FeatureList;
-
        std::string version;
        std::string interface_version;
        std::string description;
@@ -60,9 +55,9 @@ private:
        Msp::FS::Path source_dir;
        const BuildType *build_type;
        Toolchain local_tools;
-       FeatureList features;
+       std::vector<Feature> features;
        BuildInfo build_info;
-       ComponentList components;
+       std::vector<Component *> components;
        SourceArchiveComponent *source_archive;
        Config config;
        mutable Cache cache;
@@ -87,12 +82,12 @@ public:
        void set_build_type(const BuildType &);
        const BuildInfo &get_build_info() const { return build_info; }
 private:
-       virtual void do_prepare();
+       void do_prepare() override;
 
 public:
        Cache &get_cache() const { return cache; }
 private:
-       virtual void save_caches();
+       void save_caches() override;
 };
 
 #endif