aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--toolsrc/include/BuildPolicies.h4
-rw-r--r--toolsrc/src/BuildPolicies.cpp18
2 files changed, 15 insertions, 7 deletions
diff --git a/toolsrc/include/BuildPolicies.h b/toolsrc/include/BuildPolicies.h
index fbe9b0ff3..8298ffe2d 100644
--- a/toolsrc/include/BuildPolicies.h
+++ b/toolsrc/include/BuildPolicies.h
@@ -11,7 +11,6 @@ namespace vcpkg::PostBuildLint::BuildPolicies
struct type
{
- static constexpr int length() { return 2; }
constexpr explicit type(backing_enum_t backing_enum) : backing_enum(backing_enum) { }
constexpr operator backing_enum_t() const { return backing_enum; }
@@ -23,6 +22,9 @@ namespace vcpkg::PostBuildLint::BuildPolicies
backing_enum_t backing_enum;
};
+ static constexpr int value_count = 2;
+ const std::vector<type>& values();
+
static constexpr type UNKNOWN(backing_enum_t::UNKNOWN);
static constexpr type DLLS_WITHOUT_LIBS(backing_enum_t::DLLS_WITHOUT_LIBS);
diff --git a/toolsrc/src/BuildPolicies.cpp b/toolsrc/src/BuildPolicies.cpp
index 0f7c3c492..ed0f76c38 100644
--- a/toolsrc/src/BuildPolicies.cpp
+++ b/toolsrc/src/BuildPolicies.cpp
@@ -26,17 +26,23 @@ namespace vcpkg::PostBuildLint::BuildPolicies
switch (this->backing_enum)
{
- case DLLS_WITHOUT_LIBS:
- return CMAKE_VARIABLE_DLLS_WITHOUT_LIBS;
- case UNKNOWN:
- Checks::exit_with_message("No CMake command corresponds to UNKNOWN");
- default:
- Checks::unreachable();
+ case DLLS_WITHOUT_LIBS:
+ return CMAKE_VARIABLE_DLLS_WITHOUT_LIBS;
+ case UNKNOWN:
+ Checks::exit_with_message("No CMake command corresponds to UNKNOWN");
+ default:
+ Checks::unreachable();
}
}
type::type(): backing_enum(backing_enum_t::UNKNOWN) {}
+ const std::vector<type>& values()
+ {
+ static const std::vector<type>& v = {UNKNOWN, DLLS_WITHOUT_LIBS};
+ return v;
+ }
+
type parse(const std::string& s)
{
if (s == NAME_DLLS_WITHOUT_LIBS)