aboutsummaryrefslogtreecommitdiff
path: root/build/target-key
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2015-07-07 09:18:22 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2015-07-07 09:18:22 +0200
commit49d5628e35593a5300d39596286c768d7aa435b6 (patch)
tree43f20983a381c54aac7536e78e4f9543d8761aac /build/target-key
parent16c19b739a58845af7f807c3dee8021a1c421006 (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-key38
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