mirror of https://github.com/zeldaret/botw.git
Move SizedEnum to sead
It is useful in sead and other libraries as well.
This commit is contained in:
parent
83ad191341
commit
8f3eeb87b9
2
lib/sead
2
lib/sead
|
@ -1 +1 @@
|
||||||
Subproject commit 46ef57b925a24bfb54cbd679a5ecfb413be2d3dc
|
Subproject commit 71855f048ff11c9520e13377efff2ac1f47166ef
|
|
@ -7,6 +7,7 @@
|
||||||
#include <heap/seadDisposer.h>
|
#include <heap/seadDisposer.h>
|
||||||
#include <prim/seadBitFlag.h>
|
#include <prim/seadBitFlag.h>
|
||||||
#include <prim/seadScopedLock.h>
|
#include <prim/seadScopedLock.h>
|
||||||
|
#include <prim/seadSizedEnum.h>
|
||||||
#include <thread/seadAtomic.h>
|
#include <thread/seadAtomic.h>
|
||||||
#include <thread/seadCriticalSection.h>
|
#include <thread/seadCriticalSection.h>
|
||||||
#include "KingSystem/ActorSystem/actBaseProc.h"
|
#include "KingSystem/ActorSystem/actBaseProc.h"
|
||||||
|
@ -176,7 +177,7 @@ private:
|
||||||
static u32 sConstant4;
|
static u32 sConstant4;
|
||||||
|
|
||||||
Status mStatus = Status::Idle;
|
Status mStatus = Status::Idle;
|
||||||
util::SizedEnum<JobType, u8> mJobType = JobType::Invalid;
|
sead::SizedEnum<JobType, u8> mJobType = JobType::Invalid;
|
||||||
u8 mCurrentlyProcessingPrio = 8;
|
u8 mCurrentlyProcessingPrio = 8;
|
||||||
u8 mCounter = 0;
|
u8 mCounter = 0;
|
||||||
sead::CriticalSection mProcMapCS;
|
sead::CriticalSection mProcMapCS;
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
#include <basis/seadTypes.h>
|
#include <basis/seadTypes.h>
|
||||||
#include <math/seadVector.h>
|
#include <math/seadVector.h>
|
||||||
|
#include <prim/seadSizedEnum.h>
|
||||||
#include "KingSystem/Utils/Types.h"
|
#include "KingSystem/Utils/Types.h"
|
||||||
|
|
||||||
namespace al {
|
namespace al {
|
||||||
|
@ -162,7 +163,7 @@ struct ByamlData {
|
||||||
void set(u8, u32, bool byteswap);
|
void set(u8, u32, bool byteswap);
|
||||||
|
|
||||||
u32 value = 0;
|
u32 value = 0;
|
||||||
ksys::util::SizedEnum<ByamlType, u8> type = ByamlType::Invalid;
|
sead::SizedEnum<ByamlType, u8> type = ByamlType::Invalid;
|
||||||
};
|
};
|
||||||
|
|
||||||
bool tryGetByamlS32(s32* value, const ByamlIter& iter, const char* key);
|
bool tryGetByamlS32(s32* value, const ByamlIter& iter, const char* key);
|
||||||
|
|
|
@ -7,25 +7,3 @@
|
||||||
#else
|
#else
|
||||||
#define KSYS_CHECK_SIZE_NX150(CLASS, SIZE) static_assert(sizeof(CLASS) == SIZE)
|
#define KSYS_CHECK_SIZE_NX150(CLASS, SIZE) static_assert(sizeof(CLASS) == SIZE)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace ksys::util {
|
|
||||||
|
|
||||||
/// For storing an enum with a particular storage size when specifying the underlying type of the
|
|
||||||
/// enum is not an option.
|
|
||||||
template <typename Enum, typename Storage>
|
|
||||||
struct SizedEnum {
|
|
||||||
static_assert(std::is_enum<Enum>());
|
|
||||||
static_assert(!std::is_enum<Storage>());
|
|
||||||
|
|
||||||
constexpr SizedEnum() = default;
|
|
||||||
constexpr SizedEnum(Enum value) { *this = value; }
|
|
||||||
constexpr operator Enum() const { return static_cast<Enum>(mValue); }
|
|
||||||
constexpr SizedEnum& operator=(Enum value) {
|
|
||||||
mValue = static_cast<Storage>(value);
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
Storage mValue;
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace ksys::util
|
|
||||||
|
|
Loading…
Reference in New Issue