]> git.tdb.fi Git - builder.git/blobdiff - source/lib/filetarget.h
Use a covariant return type for get_real_target in FileTarget
[builder.git] / source / lib / filetarget.h
index da165d0d39d1ebed128c83c0d31ce4f2a184139c..4a969b81b2d138a6164d4ce3942896e28ab40fd1 100644 (file)
@@ -2,25 +2,25 @@
 #define FILETARGET_H_
 
 #include <msp/fs/path.h>
+#include "libbuilder_api.h"
 #include "target.h"
 
 /**
 An intermediate base class for targets that represent files.  Almost all target
 classes are derived from this.
 */
-class FileTarget: public Target
+class LIBBUILDER_API FileTarget: public Target
 {
 protected:
        Msp::FS::Path path;
        Msp::Time::TimeStamp mtime;
        unsigned size = 0;
        Msp::FS::Path install_location;
-       std::string install_filename;
        bool nested_build_sig = false;
        bool arch_in_build_sig = false;
 
-       FileTarget(Builder &b, const Msp::FS::Path &a): FileTarget(b, 0, a) { }
-       FileTarget(Builder &b, const SourcePackage &p, const Msp::FS::Path &a): FileTarget(b, &p, a) { }
+       FileTarget(Builder &b, const Msp::FS::Path &a);
+       FileTarget(Builder &b, const SourcePackage &p, const Msp::FS::Path &a);
 private:
        FileTarget(Builder &, const SourcePackage *, const Msp::FS::Path &);
        void stat();
@@ -33,11 +33,12 @@ public:
 
        bool is_installable() const { return !install_location.empty(); }
        const Msp::FS::Path &get_install_location() const { return install_location; }
-       const std::string &get_install_filename() const { return install_filename; }
 
        /// Changes the mtime of the target to the current time.
        void touch();
 
+       FileTarget *get_real_target() override { return this; }
+
 protected:
        void check_rebuild() override;