#pragma once #include "CStringView.h" #include #include namespace vcpkg::PostBuildLint { struct BuildPolicies final { enum class BackingEnum { NULLVALUE = 0, EMPTY_PACKAGE, DLLS_WITHOUT_LIBS, ONLY_RELEASE_CRT, EMPTY_INCLUDE_FOLDER }; static BuildPolicies parse(const std::string& s); constexpr BuildPolicies() : backing_enum(BackingEnum::NULLVALUE) {} constexpr explicit BuildPolicies(BackingEnum backing_enum) : backing_enum(backing_enum) {} constexpr operator BackingEnum() const { return backing_enum; } const std::string& to_string() const; const std::string& cmake_variable() const; private: BackingEnum backing_enum; }; namespace BuildPoliciesC { static constexpr CStringView ENUM_NAME = "vcpkg::PostBuildLint::BuildPolicies"; static constexpr BuildPolicies NULLVALUE(BuildPolicies::BackingEnum::NULLVALUE); static constexpr BuildPolicies EMPTY_PACKAGE(BuildPolicies::BackingEnum::EMPTY_PACKAGE); static constexpr BuildPolicies DLLS_WITHOUT_LIBS(BuildPolicies::BackingEnum::DLLS_WITHOUT_LIBS); static constexpr BuildPolicies ONLY_RELEASE_CRT(BuildPolicies::BackingEnum::ONLY_RELEASE_CRT); static constexpr BuildPolicies EMPTY_INCLUDE_FOLDER(BuildPolicies::BackingEnum::EMPTY_INCLUDE_FOLDER); static constexpr std::array VALUES = { EMPTY_PACKAGE, DLLS_WITHOUT_LIBS, ONLY_RELEASE_CRT, EMPTY_INCLUDE_FOLDER}; } }