aboutsummaryrefslogtreecommitdiff
path: root/core/src/Utils/Enum.hpp
diff options
context:
space:
mode:
authorrtk0c <[email protected]>2021-05-12 13:23:56 -0700
committerrtk0c <[email protected]>2021-05-12 13:34:43 -0700
commit765df313e065f8401319c68ba70cd41b0bc34c9d (patch)
tree44e0c781ed9f5ea0f98ac906e96c677d04befa27 /core/src/Utils/Enum.hpp
parent6ec8cc216282396ece535941ea6ca4a63d924e8f (diff)
Start to work on actually rendering the node graph
Diffstat (limited to 'core/src/Utils/Enum.hpp')
-rw-r--r--core/src/Utils/Enum.hpp140
1 files changed, 0 insertions, 140 deletions
diff --git a/core/src/Utils/Enum.hpp b/core/src/Utils/Enum.hpp
deleted file mode 100644
index 1fb9661..0000000
--- a/core/src/Utils/Enum.hpp
+++ /dev/null
@@ -1,140 +0,0 @@
-#pragma once
-
-#include <compare>
-
-template <class TSelf>
-struct BasicEnum
-{
- using Self = TSelf;
- using ValueType = int;
-
- int value;
-
- BasicEnum()
- : value{ 0 } {}
- BasicEnum(int value)
- : value{ value } {}
-
- /// Comparison between 2 values of enum. Useful for situations like `a == b` where both a and b are TSelf.
- friend auto operator<=>(const TSelf& a, const TSelf& b)
- {
- return a.value <=> b.value;
- }
-
- /// Comparison between a enum and a raw value. Useful for situations like `a == TSelf::Option` where a is a enum and TSelf::Option is a raw value.
- friend auto operator<=>(const TSelf& self, int value)
- {
- return self.value <=> value;
- }
-
- operator int() const
- {
- return value;
- }
-
- operator bool() const
- {
- return value;
- }
-};
-
-#define ENUM(Name) struct Name : public BasicEnum<Name>
-#define ENUM_MEMBERS() \
- enum Enum : int; \
- operator Enum() const \
- { \
- return (Enum)value; \
- } \
- using BasicEnum<Self>::BasicEnum; \
- enum Enum : int
-
-template <class TSelf>
-struct BasicFlag
-{
- using Self = TSelf;
- using ValueType = int;
-
- int value;
-
- BasicFlag()
- : value{ 0 } {}
- BasicFlag(int value)
- : value{ value } {}
-
- bool IsSet(TSelf mask) const
- {
- return (value & mask.value) == mask.value;
- }
- bool IsSetExclusive(TSelf mask) const
- {
- return value == mask.value;
- }
- void Set(TSelf mask, bool state)
- {
- if (state) {
- value = (int)(value | mask.value);
- } else {
- value = (int)(value & ~mask.value);
- }
- }
-
- /// Comparsion between 2 values of flag. Useful for situations like `a == b` where both a and b are TSelf.
- friend bool operator==(const TSelf& a, const TSelf& b)
- {
- return a.value == b.value;
- }
-
- friend auto operator<=>(const TSelf& a, const TSelf& b)
- {
- return a.value <=> b.value;
- }
-
- /// Comparsion between a flag and a raw value. Useful for situations like `a == TSelf::Option` where a is a flag and TSelf::Option is a raw value.
- friend bool operator==(const TSelf& self, int value)
- {
- return self.value == value;
- }
-
- friend auto operator<=>(const TSelf& self, int value)
- {
- return self.value <=> value;
- }
-
- friend TSelf operator&(const TSelf& a, const TSelf& b)
- {
- return TSelf(a.value & b.value);
- }
-
- friend TSelf operator|(const TSelf& a, const TSelf& b)
- {
- return TSelf(a.value | b.value);
- }
-
- friend TSelf operator^(const TSelf& a, const TSelf& b)
- {
- return TSelf(a.value ^ b.value);
- }
-
- TSelf operator~() const
- {
- return TSelf(~value);
- }
-
- TSelf& operator&=(int that)
- {
- value = value & that;
- return *this;
- }
-
- TSelf& operator|=(int that)
- {
- value = value | that;
- return *this;
- }
-
- TSelf& operator^=(int that)
- {
- value = value ^ that;
- return *this;
- }
-};