mirror of
https://github.com/gbdev/rgbds.git
synced 2026-06-10 02:32:34 +00:00
Use C++20 concepts to require constraints on template parameters (#1977)
This commit is contained in:
@@ -30,7 +30,7 @@ struct WarningState {
|
||||
|
||||
std::pair<WarningState, std::optional<uint32_t>> getInitialWarningState(std::string &flag);
|
||||
|
||||
template<typename LevelEnumT>
|
||||
template<Enum LevelEnumT>
|
||||
struct WarningFlag {
|
||||
char const *name;
|
||||
LevelEnumT level;
|
||||
@@ -38,14 +38,14 @@ struct WarningFlag {
|
||||
|
||||
enum WarningBehavior { DISABLED, ENABLED, ERROR };
|
||||
|
||||
template<typename WarningEnumT>
|
||||
template<Enum WarningEnumT>
|
||||
struct ParamWarning {
|
||||
WarningEnumT firstID;
|
||||
WarningEnumT lastID;
|
||||
uint8_t defaultLevel;
|
||||
};
|
||||
|
||||
template<typename WarningEnumT>
|
||||
template<Enum WarningEnumT>
|
||||
struct DiagnosticsState {
|
||||
WarningState flagStates[WarningEnumT::NB_WARNINGS];
|
||||
WarningState metaStates[WarningEnumT::NB_WARNINGS];
|
||||
@@ -53,7 +53,7 @@ struct DiagnosticsState {
|
||||
bool warningsAreErrors = false;
|
||||
};
|
||||
|
||||
template<typename LevelEnumT, typename WarningEnumT>
|
||||
template<Enum LevelEnumT, Enum WarningEnumT>
|
||||
struct Diagnostics {
|
||||
std::vector<WarningFlag<LevelEnumT>> metaWarnings;
|
||||
std::vector<WarningFlag<LevelEnumT>> warningFlags;
|
||||
@@ -71,7 +71,7 @@ struct Diagnostics {
|
||||
void processWarningFlag(char const *flag);
|
||||
};
|
||||
|
||||
template<typename LevelEnumT, typename WarningEnumT>
|
||||
template<Enum LevelEnumT, Enum WarningEnumT>
|
||||
WarningBehavior Diagnostics<LevelEnumT, WarningEnumT>::getWarningBehavior(WarningEnumT id) const {
|
||||
// Check if warnings are globally disabled
|
||||
if (!state.warningsEnabled) {
|
||||
@@ -120,7 +120,7 @@ WarningBehavior Diagnostics<LevelEnumT, WarningEnumT>::getWarningBehavior(Warnin
|
||||
return WarningBehavior::DISABLED;
|
||||
}
|
||||
|
||||
template<typename LevelEnumT, typename WarningEnumT>
|
||||
template<Enum LevelEnumT, Enum WarningEnumT>
|
||||
void Diagnostics<LevelEnumT, WarningEnumT>::processWarningFlag(char const *flag) {
|
||||
std::string rootFlag = flag;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user