diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2022-04-15 10:03:36 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2022-04-15 10:03:36 +0200 |
commit | 65fadc6003259719161be650d2ede16c30e0bb3b (patch) | |
tree | b47730c4ec8988829a0255da2aca759a697b0aa5 /libbuild2/cxx/target.hxx | |
parent | aa29434a2feebc8925307372c27a5f56021620fc (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/target.hxx')
-rw-r--r-- | libbuild2/cxx/target.hxx | 35 |
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;} }; } } |