From 70317569c6dcd9809ed4a8c425777e653ec6ca08 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Mon, 1 May 2017 18:24:31 +0300 Subject: Add hxx extension for headers --- build2/target-key | 96 ------------------------------------------------------- 1 file changed, 96 deletions(-) delete mode 100644 build2/target-key (limited to 'build2/target-key') diff --git a/build2/target-key b/build2/target-key deleted file mode 100644 index 084885f..0000000 --- a/build2/target-key +++ /dev/null @@ -1,96 +0,0 @@ -// file : build2/target-key -*- C++ -*- -// copyright : Copyright (c) 2014-2017 Code Synthesis Ltd -// license : MIT; see accompanying LICENSE file - -#ifndef BUILD2_TARGET_KEY -#define BUILD2_TARGET_KEY - -#include - -#include // compare_c_string - -#include -#include - -#include - -namespace build2 -{ - // Light-weight (by being shallow-pointing) target key. - // - class target_key - { - public: - const target_type* const type; - const dir_path* const dir; // Can be relative if part of prerequisite_key. - const dir_path* const out; // Can be relative if part of prerequisite_key. - const string* const name; - mutable optional ext; // Absent - unspecified, empty - none. - - template - bool is_a () const {return type->is_a ();} - bool is_a (const target_type& tt) const {return type->is_a (tt);} - - // The above references have to track the original objects so we cannot - // have assignment. - // - // @@ We could use references for all members, not just ext. - // - target_key (target_key&&) = default; - target_key (const target_key&) = default; - - target_key& operator= (target_key&&) = delete; - target_key& operator= (const target_key&) = delete; - }; - - inline bool - operator== (const target_key& x, const target_key& y) - { - // Unspecified and specified extension are assumed equal. - // - return - x.type == y.type && - *x.dir == *y.dir && - *x.out == *y.out && - *x.name == *y.name && - (!x.ext || !y.ext || *x.ext == *y.ext); - } - - inline bool - operator!= (const target_key& x, const target_key& y) {return !(x == y);} - - // If the target type has a custom print function, call that. Otherwise, - // call to_stream() with the current stream verbosity as a third argument. - // Both are defined in target.cxx. - // - ostream& - operator<< (ostream&, const target_key&); - - ostream& - to_stream (ostream&, const target_key&, uint16_t ext_verb); -} - -namespace std -{ - // Note that we ignore the extension when calculating the hash because of - // its special "unspecified" logic (see operator== above). - // - template <> - struct hash - { - using argument_type = build2::target_key; - using result_type = size_t; - - size_t - operator() (const build2::target_key& k) const noexcept - { - return build2::combine_hash ( - hash () (k.type), - hash () (*k.dir), - hash () (*k.out), - hash () (*k.name)); - } - }; -} - -#endif // BUILD2_TARGET_KEY -- cgit v1.1