diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2015-07-07 09:18:22 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2015-07-07 09:18:22 +0200 |
commit | 49d5628e35593a5300d39596286c768d7aa435b6 (patch) | |
tree | 43f20983a381c54aac7536e78e4f9543d8761aac /build/target-key | |
parent | 16c19b739a58845af7f807c3dee8021a1c421006 (diff) |
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.
Diffstat (limited to 'build/target-key')
-rw-r--r-- | build/target-key | 38 |
1 files changed, 6 insertions, 32 deletions
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 <map> #include <string> -#include <typeindex> #include <ostream> +#include <typeindex> +#include <functional> // reference_wrapper + +#include <butl/utility> // compare_c_string #include <build/types> +#include <build/target-type> 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 <typename T> - 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 |