diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2016-01-05 11:55:15 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2016-01-05 11:55:15 +0200 |
commit | 9fb791e9fad6c63fc1dac49f4d05ae63b8a3db9b (patch) | |
tree | d60322d4382ca5f97b676c5abe2e39524f35eab4 /build/prerequisite | |
parent | f159b1dac68c8714f7ba71ca168e3b695891aad9 (diff) |
Rename build directory/namespace to build2
Diffstat (limited to 'build/prerequisite')
-rw-r--r-- | build/prerequisite | 129 |
1 files changed, 0 insertions, 129 deletions
diff --git a/build/prerequisite b/build/prerequisite deleted file mode 100644 index c435fd3..0000000 --- a/build/prerequisite +++ /dev/null @@ -1,129 +0,0 @@ -// file : build/prerequisite -*- C++ -*- -// copyright : Copyright (c) 2014-2015 Code Synthesis Ltd -// license : MIT; see accompanying LICENSE file - -#ifndef BUILD_PREREQUISITE -#define BUILD_PREREQUISITE - -#include <set> -#include <string> -#include <iosfwd> -#include <utility> // move -#include <cassert> -#include <functional> // reference_wrapper - -#include <build/types> -#include <build/target-key> -#include <build/utility> // extension_pool -#include <build/diagnostics> - -namespace build -{ - class scope; - class target; - - // Light-weight (by being shallow-pointing) prerequisite key, similar - // to (and based on) target key. - // - class prerequisite_key - { - public: - typedef build::scope scope_type; - - mutable const std::string* proj; // Can be NULL, from project_name_pool. - target_key tk; - mutable scope_type* scope; // Can be NULL if tk.dir is absolute. - }; - - inline bool - operator< (const prerequisite_key& x, const prerequisite_key& y) - { - assert (x.scope == y.scope); - - // Can compare project name pointers since they are from project_name_pool. - // - return x.proj < y.proj || (x.proj == y.proj && x.tk < y.tk); - } - - std::ostream& - operator<< (std::ostream&, const prerequisite_key&); - - class prerequisite - { - public: - typedef build::target target_type; - typedef build::target_type target_type_type; - typedef build::scope scope_type; - - prerequisite (const std::string* p, - const target_type_type& t, - dir_path d, - std::string n, - const std::string* e, - scope_type& s) - : proj (p), - type (t), - dir (std::move (d)), - name (std::move (n)), - ext (e), - scope (s), - target (nullptr) {} - - public: - const std::string* proj; // NULL if not project-qualified. - const target_type_type& type; - const dir_path dir; // Normalized absolute or relative (to scope). - const std::string name; - const std::string* ext; // NULL if unspecified. - scope_type& scope; - target_type* target; // NULL if not yet resolved. Note that this should - // always be the "primary target", not a member of - // a target group. - prerequisite_key - key () const - { - return prerequisite_key {proj, {&type, &dir, &name, &ext}, &scope}; - } - - public: - // Prerequisite (target) type. - // - template <typename T> - bool - is_a () const {return type.is_a<T> ();} - }; - - inline bool - operator< (const prerequisite& x, const prerequisite& y) - { - return x.key () < y.key (); - } - - inline std::ostream& - operator<< (std::ostream& os, const prerequisite& p) - { - return os << p.key (); - } - - // Set of prerequisites in a scope. - // - struct prerequisite_set: std::set<prerequisite> - { - std::pair<prerequisite&, bool> - insert (const std::string* proj, - const target_type&, - dir_path dir, - std::string name, - const std::string* ext, - scope&, - tracer&); - - std::pair<prerequisite&, bool> - insert (const std::string* proj, const target_key& tk, scope& s, tracer& t) - { - return insert (proj, *tk.type, *tk.dir, *tk.name, *tk.ext, s, t); - } - }; -} - -#endif // BUILD_PREREQUISITE |