From 49d5628e35593a5300d39596286c768d7aa435b6 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Tue, 7 Jul 2015 09:18:22 +0200 Subject: Rework module architecture Now the target type and rule maps are in scopes (builtins -- in global scope). We also now have the map of loaded modules in the root scope of each project. --- build/target-key | 38 ++++++-------------------------------- 1 file changed, 6 insertions(+), 32 deletions(-) (limited to 'build/target-key') diff --git a/build/target-key b/build/target-key index 54813b0..37fa6ab 100644 --- a/build/target-key +++ b/build/target-key @@ -5,45 +5,19 @@ #ifndef BUILD_TARGET_KEY #define BUILD_TARGET_KEY +#include #include -#include #include +#include +#include // reference_wrapper + +#include // compare_c_string #include +#include namespace build { - class scope; - class target; - class target_key; - class prerequisite_key; - - // Target type. - // - struct target_type - { - std::type_index id; - const char* name; - const target_type* base; - target* (*const factory) (dir_path, std::string, const std::string*); - const std::string& (*const extension) (const target_key&, scope&); - target* (*const search) (const prerequisite_key&); - bool see_through; // A group with the default "see through" semantics. - - bool - is_a (const std::type_index&) const; // Defined in target.cxx - - template - bool - is_a () const {return is_a (typeid (T));} - }; - - inline std::ostream& - operator<< (std::ostream& os, const target_type& tt) - { - return os << tt.name; - } - // Light-weight (by being shallow-pointing) target key. // class target_key -- cgit v1.1