]> git.tdb.fi Git - builder.git/blobdiff - source/component.h
Use default member initializers and constructor delegation
[builder.git] / source / component.h
index d33ca25ae47900d9f156f6c24ec73fcf5ad1c578..5479cc5a1aa71d86ed163f73ec8e6a5c3c4bfb3b 100644 (file)
@@ -5,6 +5,7 @@
 #include <msp/datafile/objectloader.h>
 #include <msp/fs/path.h>
 #include "buildinfo.h"
+#include "conditionalloader.h"
 #include "installmap.h"
 #include "package.h"
 
@@ -19,37 +20,32 @@ their own.
 class Component
 {
 public:
-       class Loader: public Msp::DataFile::ObjectLoader<Component>
+       class Loader: public Msp::DataFile::ObjectLoader<Component>, public ConditionalLoader
        {
        public:
                Loader(Component &);
        private:
                void build_info();
-               void if_arch(const std::string &);
-               void if_feature(const std::string &);
                void install_map();
                void overlay(const std::string &);
                void require(const std::string &);
                void source(const std::string &);
        };
 
-       typedef std::list<Msp::FS::Path> SourceList;
-       typedef std::list<std::string> OverlayList;
-
 protected:
        SourcePackage &package;
        std::string name;
-       SourceList sources;
-       OverlayList overlays;
-       bool install;
+       std::vector<Msp::FS::Path> sources;
+       std::vector<std::string> overlays;
+       bool install = false;
        BuildInfo build_info;
        Package::Requirements requires;
-       bool deflt;
+       bool deflt = true;
        InstallMap install_map;
-       std::list<std::string> problems;
+       std::vector<std::string> problems;
 
-public:
        Component(SourcePackage &, const std::string &);
+public:
        virtual ~Component() { }
 
        const SourcePackage &get_package() const { return package; }
@@ -57,20 +53,20 @@ public:
 
        /** Returns a list of sources for the component.  They may refer to
        directories or individual files. */
-       const SourceList &get_sources() const { return sources; }
+       const std::vector<Msp::FS::Path> &get_sources() const { return sources; }
 
-       const OverlayList &get_overlays() const { return overlays; }
+       const std::vector<std::string> &get_overlays() const { return overlays; }
 
 protected:
        /** Returns a list of all source files for the component. */
-       SourceList collect_source_files() const;
+       std::vector<Msp::FS::Path> collect_source_files() const;
 
 public:
        bool get_install() const { return install; }
        const InstallMap &get_install_map() const { return install_map; }
        const Package::Requirements &get_required_packages() const { return requires; }
        bool is_default() const { return deflt; }
-       const std::list<std::string> &get_problems() const { return problems; }
+       const std::vector<std::string> &get_problems() const { return problems; }
 
        /** Prepares any required packages. */
        void prepare();