aboutsummaryrefslogtreecommitdiff
path: root/libbuild2/cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2022-04-15 10:03:36 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2022-04-15 10:03:36 +0200
commit65fadc6003259719161be650d2ede16c30e0bb3b (patch)
treeb47730c4ec8988829a0255da2aca759a697b0aa5 /libbuild2/cxx
parentaa29434a2feebc8925307372c27a5f56021620fc (diff)
Get rid of target::dynamic_type() virtual function
Instead of overriding this function, derived targets must now set the dynamic_type variable to their static_type in their constructor body.
Diffstat (limited to 'libbuild2/cxx')
-rw-r--r--libbuild2/cxx/target.hxx35
1 files changed, 25 insertions, 10 deletions
diff --git a/libbuild2/cxx/target.hxx b/libbuild2/cxx/target.hxx
index cddab68..b20bf00 100644
--- a/libbuild2/cxx/target.hxx
+++ b/libbuild2/cxx/target.hxx
@@ -22,41 +22,53 @@ namespace build2
class LIBBUILD2_CXX_SYMEXPORT hxx: public cc::cc
{
public:
- using cc::cc;
+ hxx (context& c, dir_path d, dir_path o, string n)
+ : cc (c, move (d), move (o), move (n))
+ {
+ dynamic_type = &static_type;
+ }
public:
static const target_type static_type;
- virtual const target_type& dynamic_type () const {return static_type;}
};
class LIBBUILD2_CXX_SYMEXPORT ixx: public cc::cc
{
public:
- using cc::cc;
+ ixx (context& c, dir_path d, dir_path o, string n)
+ : cc (c, move (d), move (o), move (n))
+ {
+ dynamic_type = &static_type;
+ }
public:
static const target_type static_type;
- virtual const target_type& dynamic_type () const {return static_type;}
};
class LIBBUILD2_CXX_SYMEXPORT txx: public cc::cc
{
public:
- using cc::cc;
+ txx (context& c, dir_path d, dir_path o, string n)
+ : cc (c, move (d), move (o), move (n))
+ {
+ dynamic_type = &static_type;
+ }
public:
static const target_type static_type;
- virtual const target_type& dynamic_type () const {return static_type;}
};
class LIBBUILD2_CXX_SYMEXPORT cxx: public cc::cc
{
public:
- using cc::cc;
+ cxx (context& c, dir_path d, dir_path o, string n)
+ : cc (c, move (d), move (o), move (n))
+ {
+ dynamic_type = &static_type;
+ }
public:
static const target_type static_type;
- virtual const target_type& dynamic_type () const {return static_type;}
};
// The module interface unit is both like a header (e.g., we need to
@@ -67,11 +79,14 @@ namespace build2
class LIBBUILD2_CXX_SYMEXPORT mxx: public cc::cc
{
public:
- using cc::cc;
+ mxx (context& c, dir_path d, dir_path o, string n)
+ : cc (c, move (d), move (o), move (n))
+ {
+ dynamic_type = &static_type;
+ }
public:
static const target_type static_type;
- virtual const target_type& dynamic_type () const {return static_type;}
};
}
}