aboutsummaryrefslogtreecommitdiff
path: root/build/target-key
diff options
context:
space:
mode:
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