diff options
author | Brad King <brad.king@kitware.com> | 2010-08-25 14:07:25 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2010-11-18 15:51:00 (GMT) |
commit | 605f4bc0978fd3c84bc06875aef500e62b0f41c7 (patch) | |
tree | fd4441fc3b796ecd84d554fd79a45ee464bc9287 /Source/cmTargetDepend.h | |
parent | 82596fcffcdf3e536fb0def67f6d4d1d1a3e5207 (diff) | |
download | CMake-605f4bc0978fd3c84bc06875aef500e62b0f41c7.zip CMake-605f4bc0978fd3c84bc06875aef500e62b0f41c7.tar.gz CMake-605f4bc0978fd3c84bc06875aef500e62b0f41c7.tar.bz2 |
Record edge type in global dependency graph
Each inter-target dependency may be a 'link' or 'util' dependency.
Diffstat (limited to 'Source/cmTargetDepend.h')
-rw-r--r-- | Source/cmTargetDepend.h | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/Source/cmTargetDepend.h b/Source/cmTargetDepend.h new file mode 100644 index 0000000..258bacd --- /dev/null +++ b/Source/cmTargetDepend.h @@ -0,0 +1,48 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2010 Kitware, Inc., Insight Software Consortium + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#ifndef cmTargetDepend_h +#define cmTargetDepend_h + +#include "cmStandardIncludes.h" + +class cmTarget; + +/** One edge in the global target dependency graph. + It may be marked as a 'link' or 'util' edge or both. */ +class cmTargetDepend +{ + cmTarget* Target; + + // The set order depends only on the Target, so we use + // mutable members to acheive a map with set syntax. + mutable bool Link; + mutable bool Util; +public: + cmTargetDepend(cmTarget* t): Target(t), Link(false), Util(false) {} + operator cmTarget*() const { return this->Target; } + cmTarget* operator->() const { return this->Target; } + cmTarget& operator*() const { return *this->Target; } + friend bool operator < (cmTargetDepend const& l, cmTargetDepend const& r) + { return l.Target < r.Target; } + void SetType(bool strong) const + { + if(strong) { this->Util = true; } + else { this->Link = true; } + } + bool IsLink() const { return this->Link; } + bool IsUtil() const { return this->Util; } +}; + +/** Unordered set of (direct) dependencies of a target. */ +class cmTargetDependSet: public std::set<cmTargetDepend> {}; + +#endif |