aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/src/triplet.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'toolsrc/src/triplet.cpp')
-rw-r--r--toolsrc/src/triplet.cpp43
1 files changed, 30 insertions, 13 deletions
diff --git a/toolsrc/src/triplet.cpp b/toolsrc/src/triplet.cpp
index e3a935958..a6816b445 100644
--- a/toolsrc/src/triplet.cpp
+++ b/toolsrc/src/triplet.cpp
@@ -1,17 +1,18 @@
#include "triplet.h"
#include "vcpkg_Checks.h"
+#include <algorithm>
namespace vcpkg
{
- const triplet triplet::X86_WINDOWS = {"x86-windows"};
- const triplet triplet::X64_WINDOWS = {"x64-windows"};
- const triplet triplet::X86_UWP = {"x86-uwp"};
- const triplet triplet::X64_UWP = {"x64-uwp"};
- const triplet triplet::ARM_UWP = {"arm-uwp"};
+ const triplet triplet::X86_WINDOWS = from_canonical_name("x86-windows");
+ const triplet triplet::X64_WINDOWS = from_canonical_name("x64-windows");
+ const triplet triplet::X86_UWP = from_canonical_name("x86-uwp");
+ const triplet triplet::X64_UWP = from_canonical_name("x64-uwp");
+ const triplet triplet::ARM_UWP = from_canonical_name("arm-uwp");
std::string to_string(const triplet& t)
{
- return t.value;
+ return t.canonical_name();
}
std::string to_printf_arg(const triplet& t)
@@ -21,7 +22,7 @@ namespace vcpkg
bool operator==(const triplet& left, const triplet& right)
{
- return left.value == right.value;
+ return left.canonical_name() == right.canonical_name();
}
bool operator!=(const triplet& left, const triplet& right)
@@ -34,17 +35,33 @@ namespace vcpkg
return os << to_string(t);
}
+ triplet triplet::from_canonical_name(const std::string& triplet_as_string)
+ {
+ std::string s(triplet_as_string);
+ std::transform(s.begin(), s.end(), s.begin(), ::tolower);
+
+ auto it = std::find(s.cbegin(), s.cend(), '-');
+ Checks::check_exit(it != s.cend(), "Invalid triplet: %s", triplet_as_string);
+
+ triplet t;
+ t.m_canonical_name = s;
+ return t;
+ }
+
+ const std::string& triplet::canonical_name() const
+ {
+ return this->m_canonical_name;
+ }
+
std::string triplet::architecture() const
{
- auto it = std::find(this->value.cbegin(), this->value.cend(), '-');
- Checks::check_exit(it != this->value.end(), "Invalid triplet: %s", this->value);
- return std::string(this->value.cbegin(), it);
+ auto it = std::find(this->m_canonical_name.cbegin(), this->m_canonical_name.cend(), '-');
+ return std::string(this->m_canonical_name.cbegin(), it);
}
std::string triplet::system() const
{
- auto it = std::find(this->value.cbegin(), this->value.cend(), '-');
- Checks::check_exit(it != this->value.end(), "Invalid triplet: %s", this->value);
- return std::string(it + 1, this->value.cend());
+ auto it = std::find(this->m_canonical_name.cbegin(), this->m_canonical_name.cend(), '-');
+ return std::string(it + 1, this->m_canonical_name.cend());
}
}