cmLinkItem.cxx 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  2. file Copyright.txt or https://cmake.org/licensing for details. */
  3. #include "cmLinkItem.h"
  4. #include <utility> // IWYU pragma: keep
  5. #include "cmGeneratorTarget.h"
  6. cmLinkItem::cmLinkItem() = default;
  7. cmLinkItem::cmLinkItem(std::string n, bool c, cmListFileBacktrace bt)
  8. : String(std::move(n))
  9. , Cross(c)
  10. , Backtrace(std::move(bt))
  11. {
  12. }
  13. cmLinkItem::cmLinkItem(cmGeneratorTarget const* t, bool c,
  14. cmListFileBacktrace bt)
  15. : Target(t)
  16. , Cross(c)
  17. , Backtrace(std::move(bt))
  18. {
  19. }
  20. std::string const& cmLinkItem::AsStr() const
  21. {
  22. return this->Target ? this->Target->GetName() : this->String;
  23. }
  24. bool operator<(cmLinkItem const& l, cmLinkItem const& r)
  25. {
  26. // Order among targets.
  27. if (l.Target && r.Target) {
  28. if (l.Target != r.Target) {
  29. return l.Target < r.Target;
  30. }
  31. // Order identical targets via cross-config.
  32. return l.Cross < r.Cross;
  33. }
  34. // Order targets before strings.
  35. if (l.Target) {
  36. return true;
  37. }
  38. if (r.Target) {
  39. return false;
  40. }
  41. // Order among strings.
  42. if (l.String != r.String) {
  43. return l.String < r.String;
  44. }
  45. // Order identical strings via cross-config.
  46. return l.Cross < r.Cross;
  47. }
  48. bool operator==(cmLinkItem const& l, cmLinkItem const& r)
  49. {
  50. return l.Target == r.Target && l.String == r.String && l.Cross == r.Cross;
  51. }
  52. std::ostream& operator<<(std::ostream& os, cmLinkItem const& item)
  53. {
  54. return os << item.AsStr();
  55. }
  56. cmLinkImplItem::cmLinkImplItem()
  57. : cmLinkItem()
  58. {
  59. }
  60. cmLinkImplItem::cmLinkImplItem(cmLinkItem item, bool fromGenex)
  61. : cmLinkItem(std::move(item))
  62. , FromGenex(fromGenex)
  63. {
  64. }