]> git.tdb.fi Git - builder.git/blobdiff - source/sourcepackage.h
Use default member initializers and constructor delegation
[builder.git] / source / sourcepackage.h
index ed8ad40f7275f9d5ac364a3f7971cf805b31b050..8be8ada63d654f68a963feb55cdec9f8c7544d77 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,47 +23,41 @@ 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;
 
        FileTarget *build_file;
        Msp::FS::Path source_dir;
-       const BuildType *build_type;
+       const BuildType *build_type = 0;
        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