mirror of
https://github.com/cemu-project/vcpkg.git
synced 2025-02-24 11:37:12 +01:00
Rework LinkageType enum
This commit is contained in:
parent
09b9340515
commit
003693c5ac
@ -12,8 +12,8 @@ namespace vcpkg::PostBuildLint
|
|||||||
{
|
{
|
||||||
static BuildInfo create(std::unordered_map<std::string, std::string> pgh);
|
static BuildInfo create(std::unordered_map<std::string, std::string> pgh);
|
||||||
|
|
||||||
LinkageType::Type crt_linkage;
|
LinkageType crt_linkage;
|
||||||
LinkageType::Type library_linkage;
|
LinkageType library_linkage;
|
||||||
|
|
||||||
std::map<BuildPolicies, OptBool> policies;
|
std::map<BuildPolicies, OptBool> policies;
|
||||||
};
|
};
|
||||||
|
@ -18,30 +18,30 @@ namespace vcpkg::PostBuildLint::BuildType
|
|||||||
{
|
{
|
||||||
Type() = delete;
|
Type() = delete;
|
||||||
|
|
||||||
constexpr explicit Type(const BackingEnum backing_enum, const ConfigurationType::Type config, const LinkageType::Type linkage) :
|
constexpr explicit Type(const BackingEnum backing_enum, const ConfigurationType::Type config, const LinkageType linkage) :
|
||||||
backing_enum(backing_enum), m_config(config), m_linkage(linkage) { }
|
backing_enum(backing_enum), m_config(config), m_linkage(linkage) { }
|
||||||
|
|
||||||
constexpr operator BackingEnum() const { return backing_enum; }
|
constexpr operator BackingEnum() const { return backing_enum; }
|
||||||
|
|
||||||
const ConfigurationType::Type& config() const;
|
const ConfigurationType::Type& config() const;
|
||||||
const LinkageType::Type& linkage() const;
|
const LinkageType& linkage() const;
|
||||||
const std::regex& crt_regex() const;
|
const std::regex& crt_regex() const;
|
||||||
const std::string& to_string() const;
|
const std::string& to_string() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
BackingEnum backing_enum;
|
BackingEnum backing_enum;
|
||||||
ConfigurationType::Type m_config;
|
ConfigurationType::Type m_config;
|
||||||
LinkageType::Type m_linkage;
|
LinkageType m_linkage;
|
||||||
};
|
};
|
||||||
|
|
||||||
static const std::string ENUM_NAME = "vcpkg::PostBuildLint::BuildType";
|
static const std::string ENUM_NAME = "vcpkg::PostBuildLint::BuildType";
|
||||||
|
|
||||||
static constexpr Type DEBUG_STATIC = Type(BackingEnum::DEBUG_STATIC, ConfigurationType::DEBUG, LinkageType::STATIC);
|
static constexpr Type DEBUG_STATIC = Type(BackingEnum::DEBUG_STATIC, ConfigurationType::DEBUG, LinkageTypeC::STATIC);
|
||||||
static constexpr Type DEBUG_DYNAMIC = Type(BackingEnum::DEBUG_DYNAMIC, ConfigurationType::DEBUG, LinkageType::DYNAMIC);
|
static constexpr Type DEBUG_DYNAMIC = Type(BackingEnum::DEBUG_DYNAMIC, ConfigurationType::DEBUG, LinkageTypeC::DYNAMIC);
|
||||||
static constexpr Type RELEASE_STATIC = Type(BackingEnum::RELEASE_STATIC, ConfigurationType::RELEASE, LinkageType::STATIC);
|
static constexpr Type RELEASE_STATIC = Type(BackingEnum::RELEASE_STATIC, ConfigurationType::RELEASE, LinkageTypeC::STATIC);
|
||||||
static constexpr Type RELEASE_DYNAMIC = Type(BackingEnum::RELEASE_DYNAMIC, ConfigurationType::RELEASE, LinkageType::DYNAMIC);
|
static constexpr Type RELEASE_DYNAMIC = Type(BackingEnum::RELEASE_DYNAMIC, ConfigurationType::RELEASE, LinkageTypeC::DYNAMIC);
|
||||||
|
|
||||||
static constexpr std::array<Type, 4> values = { DEBUG_STATIC, DEBUG_DYNAMIC, RELEASE_STATIC, RELEASE_DYNAMIC };
|
static constexpr std::array<Type, 4> values = { DEBUG_STATIC, DEBUG_DYNAMIC, RELEASE_STATIC, RELEASE_DYNAMIC };
|
||||||
|
|
||||||
Type value_of(const ConfigurationType::Type& config, const LinkageType::Type& linkage);
|
Type value_of(const ConfigurationType::Type& config, const LinkageType& linkage);
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
namespace vcpkg::PostBuildLint::LinkageType
|
namespace vcpkg::PostBuildLint
|
||||||
|
{
|
||||||
|
struct LinkageType final
|
||||||
{
|
{
|
||||||
enum class BackingEnum
|
enum class BackingEnum
|
||||||
{
|
{
|
||||||
@ -10,10 +12,10 @@ namespace vcpkg::PostBuildLint::LinkageType
|
|||||||
STATIC
|
STATIC
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Type
|
static LinkageType value_of(const std::string& as_string);
|
||||||
{
|
|
||||||
constexpr Type() : backing_enum(BackingEnum::NULLVALUE) {}
|
constexpr LinkageType() : backing_enum(BackingEnum::NULLVALUE) {}
|
||||||
constexpr explicit Type(BackingEnum backing_enum) : backing_enum(backing_enum) { }
|
constexpr explicit LinkageType(BackingEnum backing_enum) : backing_enum(backing_enum) { }
|
||||||
constexpr operator BackingEnum() const { return backing_enum; }
|
constexpr operator BackingEnum() const { return backing_enum; }
|
||||||
|
|
||||||
const std::string& to_string() const;
|
const std::string& to_string() const;
|
||||||
@ -22,13 +24,14 @@ namespace vcpkg::PostBuildLint::LinkageType
|
|||||||
BackingEnum backing_enum;
|
BackingEnum backing_enum;
|
||||||
};
|
};
|
||||||
|
|
||||||
static const std::string ENUM_NAME = "vcpkg::PostBuildLint::LinkageType";
|
namespace LinkageTypeC
|
||||||
|
{
|
||||||
|
static constexpr const char* ENUM_NAME = "vcpkg::PostBuildLint::LinkageType";
|
||||||
|
|
||||||
static constexpr Type NULLVALUE(BackingEnum::NULLVALUE);
|
static constexpr LinkageType NULLVALUE(LinkageType::BackingEnum::NULLVALUE);
|
||||||
static constexpr Type DYNAMIC(BackingEnum::DYNAMIC);
|
static constexpr LinkageType DYNAMIC(LinkageType::BackingEnum::DYNAMIC);
|
||||||
static constexpr Type STATIC(BackingEnum::STATIC);
|
static constexpr LinkageType STATIC(LinkageType::BackingEnum::STATIC);
|
||||||
|
|
||||||
static constexpr std::array<Type, 2> values = { DYNAMIC, STATIC };
|
static constexpr std::array<LinkageType, 2> VALUES = { DYNAMIC, STATIC };
|
||||||
|
}
|
||||||
Type value_of(const std::string& as_string);
|
|
||||||
}
|
}
|
||||||
|
@ -19,11 +19,11 @@ namespace vcpkg::PostBuildLint
|
|||||||
BuildInfo build_info;
|
BuildInfo build_info;
|
||||||
const std::string crt_linkage_as_string = details::remove_required_field(&pgh, BuildInfoRequiredField::CRT_LINKAGE);
|
const std::string crt_linkage_as_string = details::remove_required_field(&pgh, BuildInfoRequiredField::CRT_LINKAGE);
|
||||||
build_info.crt_linkage = LinkageType::value_of(crt_linkage_as_string);
|
build_info.crt_linkage = LinkageType::value_of(crt_linkage_as_string);
|
||||||
Checks::check_exit(VCPKG_LINE_INFO, build_info.crt_linkage != LinkageType::NULLVALUE, "Invalid crt linkage type: [%s]", crt_linkage_as_string);
|
Checks::check_exit(VCPKG_LINE_INFO, build_info.crt_linkage != LinkageTypeC::NULLVALUE, "Invalid crt linkage type: [%s]", crt_linkage_as_string);
|
||||||
|
|
||||||
const std::string library_linkage_as_string = details::remove_required_field(&pgh, BuildInfoRequiredField::LIBRARY_LINKAGE);
|
const std::string library_linkage_as_string = details::remove_required_field(&pgh, BuildInfoRequiredField::LIBRARY_LINKAGE);
|
||||||
build_info.library_linkage = LinkageType::value_of(library_linkage_as_string);
|
build_info.library_linkage = LinkageType::value_of(library_linkage_as_string);
|
||||||
Checks::check_exit(VCPKG_LINE_INFO, build_info.library_linkage != LinkageType::NULLVALUE, "Invalid library linkage type: [%s]", library_linkage_as_string);
|
Checks::check_exit(VCPKG_LINE_INFO, build_info.library_linkage != LinkageTypeC::NULLVALUE, "Invalid library linkage type: [%s]", library_linkage_as_string);
|
||||||
|
|
||||||
// The remaining entries are policies
|
// The remaining entries are policies
|
||||||
for (const std::unordered_map<std::string, std::string>::value_type& p : pgh)
|
for (const std::unordered_map<std::string, std::string>::value_type& p : pgh)
|
||||||
|
@ -4,24 +4,24 @@
|
|||||||
|
|
||||||
namespace vcpkg::PostBuildLint::BuildType
|
namespace vcpkg::PostBuildLint::BuildType
|
||||||
{
|
{
|
||||||
Type value_of(const ConfigurationType::Type& config, const LinkageType::Type& linkage)
|
Type value_of(const ConfigurationType::Type& config, const LinkageType& linkage)
|
||||||
{
|
{
|
||||||
if (config == ConfigurationType::DEBUG && linkage == LinkageType::STATIC)
|
if (config == ConfigurationType::DEBUG && linkage == LinkageTypeC::STATIC)
|
||||||
{
|
{
|
||||||
return DEBUG_STATIC;
|
return DEBUG_STATIC;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config == ConfigurationType::DEBUG && linkage == LinkageType::DYNAMIC)
|
if (config == ConfigurationType::DEBUG && linkage == LinkageTypeC::DYNAMIC)
|
||||||
{
|
{
|
||||||
return DEBUG_DYNAMIC;
|
return DEBUG_DYNAMIC;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config == ConfigurationType::RELEASE && linkage == LinkageType::STATIC)
|
if (config == ConfigurationType::RELEASE && linkage == LinkageTypeC::STATIC)
|
||||||
{
|
{
|
||||||
return RELEASE_STATIC;
|
return RELEASE_STATIC;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config == ConfigurationType::RELEASE && linkage == LinkageType::DYNAMIC)
|
if (config == ConfigurationType::RELEASE && linkage == LinkageTypeC::DYNAMIC)
|
||||||
{
|
{
|
||||||
return RELEASE_DYNAMIC;
|
return RELEASE_DYNAMIC;
|
||||||
}
|
}
|
||||||
@ -34,7 +34,7 @@ namespace vcpkg::PostBuildLint::BuildType
|
|||||||
return this->m_config;
|
return this->m_config;
|
||||||
}
|
}
|
||||||
|
|
||||||
const LinkageType::Type& Type::linkage() const
|
const LinkageType& Type::linkage() const
|
||||||
{
|
{
|
||||||
return this->m_linkage;
|
return this->m_linkage;
|
||||||
}
|
}
|
||||||
|
@ -3,40 +3,40 @@
|
|||||||
#include "vcpkg_Enums.h"
|
#include "vcpkg_Enums.h"
|
||||||
#include "vcpkg_Checks.h"
|
#include "vcpkg_Checks.h"
|
||||||
|
|
||||||
namespace vcpkg::PostBuildLint::LinkageType
|
namespace vcpkg::PostBuildLint
|
||||||
{
|
{
|
||||||
static const std::string NULLVALUE_STRING = Enums::nullvalue_to_string(ENUM_NAME);
|
static const std::string NULLVALUE_STRING = Enums::nullvalue_to_string(LinkageTypeC::ENUM_NAME);
|
||||||
|
|
||||||
static const std::string NAME_DYNAMIC = "dynamic";
|
static const std::string NAME_DYNAMIC = "dynamic";
|
||||||
static const std::string NAME_STATIC = "static";
|
static const std::string NAME_STATIC = "static";
|
||||||
|
|
||||||
const std::string& Type::to_string() const
|
LinkageType LinkageType::value_of(const std::string& as_string)
|
||||||
|
{
|
||||||
|
if (as_string == NAME_DYNAMIC)
|
||||||
|
{
|
||||||
|
return LinkageTypeC::DYNAMIC;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (as_string == NAME_STATIC)
|
||||||
|
{
|
||||||
|
return LinkageTypeC::STATIC;
|
||||||
|
}
|
||||||
|
|
||||||
|
return LinkageTypeC::NULLVALUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
const std::string& LinkageType::to_string() const
|
||||||
{
|
{
|
||||||
switch (this->backing_enum)
|
switch (this->backing_enum)
|
||||||
{
|
{
|
||||||
case LinkageType::DYNAMIC:
|
case LinkageTypeC::DYNAMIC:
|
||||||
return NAME_DYNAMIC;
|
return NAME_DYNAMIC;
|
||||||
case LinkageType::STATIC:
|
case LinkageTypeC::STATIC:
|
||||||
return NAME_STATIC;
|
return NAME_STATIC;
|
||||||
case LinkageType::NULLVALUE:
|
case LinkageTypeC::NULLVALUE:
|
||||||
return NULLVALUE_STRING;
|
return NULLVALUE_STRING;
|
||||||
default:
|
default:
|
||||||
Checks::unreachable(VCPKG_LINE_INFO);
|
Checks::unreachable(VCPKG_LINE_INFO);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Type value_of(const std::string& as_string)
|
|
||||||
{
|
|
||||||
if (as_string == NAME_DYNAMIC)
|
|
||||||
{
|
|
||||||
return LinkageType::DYNAMIC;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (as_string == NAME_STATIC)
|
|
||||||
{
|
|
||||||
return LinkageType::STATIC;
|
|
||||||
}
|
|
||||||
|
|
||||||
return LinkageType::NULLVALUE;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user