]> git.tdb.fi Git - builder.git/commitdiff
Refactor FileTarget and SourceFile constructors
authorMikko Rasa <tdb@tdb.fi>
Mon, 9 Jul 2012 13:08:41 +0000 (16:08 +0300)
committerMikko Rasa <tdb@tdb.fi>
Mon, 9 Jul 2012 13:08:41 +0000 (16:08 +0300)
13 files changed:
source/binary.cpp
source/csourcefile.cpp
source/datafile.cpp
source/file.h
source/filetarget.cpp
source/filetarget.h
source/installedfile.cpp
source/objectfile.cpp
source/pkgconfigfile.cpp
source/sourcefile.cpp
source/sourcefile.h
source/staticlibrary.cpp
source/tarball.cpp

index a06bd2031bbbf33e9607bd8184c04066153ae377..7e32c8679789c184fe818a3ae2867e8987b51daa 100644 (file)
@@ -12,11 +12,11 @@ using namespace std;
 using namespace Msp;
 
 Binary::Binary(Builder &b, const FS::Path &p):
-       FileTarget(b, 0, p)
+       FileTarget(b, p)
 { }
 
 Binary::Binary(Builder &b, const Component &c, const string &p, const list<ObjectFile *> &objs):
-       FileTarget(b, &c.get_package(), c.get_package().get_out_dir()/p)
+       FileTarget(b, c.get_package(), c.get_package().get_out_dir()/p)
 {
        component = &c;
        for(list<ObjectFile *>::const_iterator i=objs.begin(); i!=objs.end(); ++i)
index 7a26bb5ff4c503b0072eb9ed5bde9e3e25d15bdb..824027890fa940c36c0bcd47de0f3bdc1adcbcfa 100644 (file)
@@ -11,11 +11,11 @@ using namespace std;
 using namespace Msp;
 
 CSourceFile::CSourceFile(Builder &b, const FS::Path &p):
-       SourceFile(b, 0, p)
+       SourceFile(b, p)
 { }
 
 CSourceFile::CSourceFile(Builder &b, const Component &c, const FS::Path &p):
-       SourceFile(b, &c, p)
+       SourceFile(b, c, p)
 {
        string ext = FS::extpart(FS::basename(path));
        if(ext==".h" || ext==".H" || ext==".hpp")
index 5566bf4a50b33a68b9f30c4f08abf1f3cb9b49a9..9a47703dd03dab819968e63109e1a0e07f0df353 100644 (file)
@@ -4,7 +4,7 @@
 #include "sourcepackage.h"
 
 DataFile::DataFile(Builder &b, const Component &c, File &s):
-       FileTarget(b, &c.get_package(), generate_target_path(c)),
+       FileTarget(b, c.get_package(), generate_target_path(c)),
        component(c),
        source(s)
 {
index 0e92b72f13ffb934818d8aaba1bf0039ffc984ea..a36259d29cf52ea9617b7337509cb0aaf8523e66 100644 (file)
@@ -9,8 +9,8 @@ Just an arbitary file.  No special meaning attached.
 class File: public FileTarget
 {
 public:
-       File(Builder &b, const Msp::FS::Path &t): FileTarget(b, 0, t) { }
-       File(Builder &b, SourcePackage &p, const Msp::FS::Path &t): FileTarget(b, &p, t) { }
+       File(Builder &b, const Msp::FS::Path &t): FileTarget(b, t) { }
+       File(Builder &b, SourcePackage &p, const Msp::FS::Path &t): FileTarget(b, p, t) { }
 
        virtual const char *get_type() const { return "File"; }
 };
index 634b297b996070e45ed9a98ee736c6e9f4826718..adbb058dc3d192483bbfa7c03f9d042f1e8dcfdb 100644 (file)
@@ -9,11 +9,23 @@
 using namespace std;
 using namespace Msp;
 
-FileTarget::FileTarget(Builder &b, const SourcePackage *p, const FS::Path &a):
-       Target(b, generate_name(p, a)),
-       path(a),
-       size(0)
+FileTarget::FileTarget(Builder &b, const FS::Path &a):
+       Target(b, generate_name(b, 0, a)),
+       path(a)
 {
+       init(0);
+}
+
+FileTarget::FileTarget(Builder &b, const SourcePackage &p, const FS::Path &a):
+       Target(b, generate_name(b, &p, a)),
+       path(a)
+{
+       init(&p);
+}
+
+void FileTarget::init(const SourcePackage *p)
+{
+       size = 0;
        package = p;
 
        builder.get_vfs().register_path(path, this);
@@ -25,23 +37,21 @@ FileTarget::FileTarget(Builder &b, const SourcePackage *p, const FS::Path &a):
        }
 }
 
-string FileTarget::generate_name(const SourcePackage *pkg, const FS::Path &pth)
+string FileTarget::generate_name(Builder &builder, const SourcePackage *pkg, const FS::Path &path)
 {
-       if(pkg)
+       if(pkg && FS::descendant_depth(path, pkg->get_source())>=0)
        {
-               if(FS::descendant_depth(pth, pkg->get_source())>=0)
-               {
-                       FS::Path relpath = FS::relative(pth, pkg->get_source());
-                       return format("<%s>%s", pkg->get_name(), relpath.str().substr(1));
-               }
-               else if(FS::descendant_depth(pth, pkg->get_builder().get_prefix())>=0)
-               {
-                       FS::Path relpath = FS::relative(pth, pkg->get_builder().get_prefix());
-                       return "<prefix>"+relpath.str().substr(1);
-               }
+               FS::Path relpath = FS::relative(path, pkg->get_source());
+               return format("<%s>%s", pkg->get_name(), relpath.str().substr(1));
+       }
+       else if(FS::descendant_depth(path, builder.get_prefix())>=0)
+       {
+               FS::Path relpath = FS::relative(path, builder.get_prefix());
+               builder.get_logger().log("debug", format("%s %s %s", path, builder.get_prefix(), relpath));
+               return "<prefix>"+relpath.str().substr(1);
        }
 
-       return pth.str();
+       return path.str();
 }
 
 void FileTarget::touch()
index 22df5206fa6ada3b71af375e3e8f8807904338fc..6d2480f7e75d9d64c795a4e075c2492664b32aab 100644 (file)
@@ -15,9 +15,11 @@ protected:
        Msp::Time::TimeStamp mtime;
        unsigned size;
 
-       FileTarget(Builder &, const SourcePackage *, const Msp::FS::Path &);
+       FileTarget(Builder &, const Msp::FS::Path &);
+       FileTarget(Builder &, const SourcePackage &, const Msp::FS::Path &);
 private:
-       static std::string generate_name(const SourcePackage *, const Msp::FS::Path &);
+       void init(const SourcePackage *);
+       static std::string generate_name(Builder &, const SourcePackage *, const Msp::FS::Path &);
 
 public:
        const Msp::FS::Path &get_path() const { return path; }
index 3ca490602055d18ef83cef933ea4605718e2c6c8..0928386c092c24f6dba4b7d1f0c7999d385c41c7 100644 (file)
@@ -7,7 +7,7 @@ using namespace std;
 using namespace Msp;
 
 InstalledFile::InstalledFile(Builder &b, const SourcePackage &p, FileTarget &s, const string &loc):
-       FileTarget(b, &p, generate_target_path(b.get_prefix(), s, loc)),
+       FileTarget(b, p, generate_target_path(b.get_prefix(), s, loc)),
        source(s)
 {
        add_depend(&source);
index 22f11faca352369bddce0804ae68da948e85d8b0..70bef6c25c8acbf58f8b201c32b0aff6b705c5d8 100644 (file)
@@ -10,7 +10,7 @@ using namespace std;
 using namespace Msp;
 
 ObjectFile::ObjectFile(Builder &b, const Component &c, SourceFile &s):
-       FileTarget(b, &c.get_package(), generate_target_path(c, FS::relative(s.get_path(), c.get_package().get_source()).str())),
+       FileTarget(b, c.get_package(), generate_target_path(c, FS::relative(s.get_path(), c.get_package().get_source()).str())),
        source(s)       
 {
        component = &c;
index 45951cc423848609a1d2181ff3df4af136bcada7..ec614964e91d1f6ba8a4f1627320fb3d6a6601cf 100644 (file)
@@ -3,7 +3,7 @@
 #include "pkgconfigfile.h"
 
 PkgConfigFile::PkgConfigFile(Builder &b, const SourcePackage &p):
-       FileTarget(b, &p, p.get_source()/(p.get_name()+".pc"))
+       FileTarget(b, p, p.get_source()/(p.get_name()+".pc"))
 {
        tool = &builder.get_toolchain().get_tool("PCG");
 
index 220facd9cf20481eb964d228d11ce12eb264a0a8..1dcfd2e6b3c7b588088a03d703aa9d3a24224154 100644 (file)
@@ -2,8 +2,12 @@
 #include "sourcefile.h"
 #include "sourcepackage.h"
 
-SourceFile::SourceFile(Builder &b, const Component *c, const Msp::FS::Path &p):
-       FileTarget(b, (c ? &c->get_package() : 0), p)
+SourceFile::SourceFile(Builder &b, const Msp::FS::Path &p):
+       FileTarget(b, p)
+{ }
+
+SourceFile::SourceFile(Builder &b, const Component &c, const Msp::FS::Path &p):
+       FileTarget(b, c.get_package(), p)
 {
-       component = c;
+       component = &c;
 }
index 30a5080b8a0be51a14b42ddf55a61de32ca35393..bdb657f83345171ffcdb608c176f525da5431c90 100644 (file)
@@ -6,7 +6,8 @@
 class SourceFile: public FileTarget
 {
 protected:
-       SourceFile(Builder &, const Component *, const Msp::FS::Path &);
+       SourceFile(Builder &, const Msp::FS::Path &);
+       SourceFile(Builder &, const Component &, const Msp::FS::Path &);
 };
 
 #endif
index db04f0a80ef2ec9094acbace22d7b2187b78293d..f63eb166e707cf9908190eeb276a29beec7b14ad 100644 (file)
@@ -8,11 +8,11 @@ using namespace std;
 using namespace Msp;
 
 StaticLibrary::StaticLibrary(Builder &b, const FS::Path &p):
-       FileTarget(b, 0, p)
+       FileTarget(b, p)
 { }
 
 StaticLibrary::StaticLibrary(Builder &b, const Component &c, const list<ObjectFile *> &objs):
-       FileTarget(b, &c.get_package(), c.get_package().get_out_dir()/generate_filename(c))
+       FileTarget(b, c.get_package(), c.get_package().get_out_dir()/generate_filename(c))
 {
        component = &c;
        for(list<ObjectFile *>::const_iterator i=objs.begin(); i!=objs.end(); ++i)
index 825c0ba79e237ea44c5010c262ac71d4f5ae78ba..fe5a10a722b87980261cdd108d33c7bc0c32520a 100644 (file)
@@ -5,7 +5,7 @@
 using namespace std;
 
 TarBall::TarBall(Builder &b, const SourcePackage &p, const string &n):
-       FileTarget(b, &p, p.get_source()/(n+".tar"))
+       FileTarget(b, p, p.get_source()/(n+".tar"))
 { }
 
 const SourcePackage *TarBall::get_package() const