diff options
author | Brad King <brad.king@kitware.com> | 2018-09-06 17:10:55 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2018-09-07 12:57:51 (GMT) |
commit | fc7e4d1ed85370d03acbd62bc753cced3550752b (patch) | |
tree | 25e5d5719b2da65398e7d2f0fbc4cb490e4428ff /Source/cmLinkItem.h | |
parent | f782759ed0997eb3d71e1187a829da62668ed5d2 (diff) | |
download | CMake-fc7e4d1ed85370d03acbd62bc753cced3550752b.zip CMake-fc7e4d1ed85370d03acbd62bc753cced3550752b.tar.gz CMake-fc7e4d1ed85370d03acbd62bc753cced3550752b.tar.bz2 |
cmLinkItem: Convert to a "sum type" over a string and target pointer
Avoid exposing the item name implicitly as std::string. When the item
is a target, avoid storing a second copy of its name.
Most link item construction is paired with calls to `FindTargetToLink`
to get the possible target pointer. Rename these methods to
`ResolveLinkItem` and refactor them to construct the entire item.
Diffstat (limited to 'Source/cmLinkItem.h')
-rw-r--r-- | Source/cmLinkItem.h | 38 |
1 files changed, 13 insertions, 25 deletions
diff --git a/Source/cmLinkItem.h b/Source/cmLinkItem.h index e8c9487..74fd298 100644 --- a/Source/cmLinkItem.h +++ b/Source/cmLinkItem.h @@ -7,6 +7,7 @@ #include <algorithm> #include <map> +#include <ostream> #include <string> #include <vector> @@ -17,40 +18,27 @@ class cmGeneratorTarget; // Basic information about each link item. -class cmLinkItem : public std::string +class cmLinkItem { - typedef std::string std_string; + std::string String; public: - cmLinkItem() - : std_string() - , Target(nullptr) - { - } - cmLinkItem(const std_string& n, cmGeneratorTarget const* t) - : std_string(n) - , Target(t) - { - } + cmLinkItem(); + explicit cmLinkItem(std::string const& s); + explicit cmLinkItem(cmGeneratorTarget const* t); + std::string const& AsStr() const; cmGeneratorTarget const* Target; + friend bool operator<(cmLinkItem const& l, cmLinkItem const& r); + friend bool operator==(cmLinkItem const& l, cmLinkItem const& r); + friend std::ostream& operator<<(std::ostream& os, cmLinkItem const& item); }; class cmLinkImplItem : public cmLinkItem { public: - cmLinkImplItem() - : cmLinkItem() - , Backtrace() - , FromGenex(false) - { - } - cmLinkImplItem(std::string const& n, cmGeneratorTarget const* t, - cmListFileBacktrace const& bt, bool fromGenex) - : cmLinkItem(n, t) - , Backtrace(bt) - , FromGenex(fromGenex) - { - } + cmLinkImplItem(); + cmLinkImplItem(cmLinkItem item, cmListFileBacktrace const& bt, + bool fromGenex); cmListFileBacktrace Backtrace; bool FromGenex; }; |