Apparatus Version 1.22
ECS data-oriented workflow for Unreal Engine.
Classes | Macros | Typedefs | Enumerations | Functions
Flagmark.h File Reference
#include <More/type_traits>
#include "CoreMinimal.h"
#include "UObject/Class.h"
#include "More/EnumClassFlags.h"
#include "ApparatusStatus.h"
#include "Flagmark.generated.h"
Include dependency graph for Flagmark.h:
This graph shows which files directly or indirectly include this file:

Classes

struct  FFlagmarkIndicator
 Compile-time flagmark specification indicator. More...
 
struct  FExclusionIndicator
 Compile-time exclusion indicator. More...
 
struct  TFlagmark< InFlagmark >
 A flagmark Used within compile-time functionality. More...
 
struct  TFlagmarkGetter< T, IsFlagmark >
 Safely provide a flagmark value for the entry. More...
 
struct  TFlagmarkGetter< F, true >
 
struct  TExcludingFlagmarkGetter< T, IsExclusion >
 Safely provide an excluding flagmark value for the entry. More...
 
struct  TExcludingFlagmarkGetter< E, true >
 
struct  TFlagmarkAccumulator<>
 
struct  TFlagmarkAccumulator< Head, Tail... >
 
struct  TExcludingFlagmarkAccumulator<>
 
struct  TExcludingFlagmarkAccumulator< Head, Tail... >
 
struct  TExclude< T >
 Exclude a certain component or flagmark. More...
 

Macros

#define SKIP_MACHINE_H
 
#define FLAGMARK_H_SKIPPED_MACHINE_H
 

Typedefs

using EFlagmarkType = __underlying_type(EFlagmark)
 
Compile-Time Indicators
using FFM_None = TFlagmark< FM_None >
 No-flags compile-time indicator. More...
 
using FFM_Stale = TFlagmark< FM_Stale >
 Stale flag compile-time indicator. More...
 
using FFM_Booted = TFlagmark< FM_Booted >
 Booted flag compile-time indicator. More...
 
using FFM_Online = TFlagmark< FM_Online >
 Online flag compile-time indicator. More...
 
using FFM_Editor = TFlagmark< FM_Editor >
 Editor flag compile-time indicator. More...
 
using FFM_DeferredDespawn = TFlagmark< FM_DeferredDespawn >
 Deferred despawn flag compile-time indicator. More...
 
using FFM_AllSystemLevel = TFlagmark< FM_AllSystemLevel >
 All system-level flags compile-time indicator. More...
 
using FFM_A = TFlagmark< FM_A >
 User A-flag compile-time indicator. More...
 
using FFM_B = TFlagmark< FM_B >
 User B-flag compile-time indicator. More...
 
using FFM_C = TFlagmark< FM_C >
 User C-flag compile-time indicator. More...
 
using FFM_D = TFlagmark< FM_D >
 User D-flag compile-time indicator. More...
 
using FFM_E = TFlagmark< FM_E >
 User E-flag compile-time indicator. More...
 
using FFM_F = TFlagmark< FM_F >
 User F-flag compile-time indicator. More...
 
using FFM_G = TFlagmark< FM_G >
 User G-flag compile-time indicator. More...
 
using FFM_H = TFlagmark< FM_H >
 User H-flag compile-time indicator. More...
 
using FFM_I = TFlagmark< FM_I >
 User I-flag compile-time indicator. More...
 
using FFM_J = TFlagmark< FM_J >
 User J-flag compile-time indicator. More...
 
using FFM_K = TFlagmark< FM_K >
 User K-flag compile-time indicator. More...
 
using FFM_L = TFlagmark< FM_L >
 User L-flag compile-time indicator. More...
 
using FFM_M = TFlagmark< FM_M >
 User M-flag compile-time indicator. More...
 
using FFM_N = TFlagmark< FM_N >
 User N-flag compile-time indicator. More...
 
using FFM_O = TFlagmark< FM_O >
 User O-flag compile-time indicator. More...
 
using FFM_P = TFlagmark< FM_P >
 User P-flag compile-time indicator. More...
 
using FFM_Q = TFlagmark< FM_Q >
 User Q-flag compile-time indicator. More...
 
using FFM_R = TFlagmark< FM_R >
 User R-flag compile-time indicator. More...
 
using FFM_S = TFlagmark< FM_S >
 User S-flag compile-time indicator. More...
 
using FFM_T = TFlagmark< FM_T >
 User T-flag compile-time indicator. More...
 
using FFM_U = TFlagmark< FM_U >
 User U-flag compile-time indicator. More...
 
using FFM_V = TFlagmark< FM_V >
 User V-flag compile-time indicator. More...
 
using FFM_W = TFlagmark< FM_W >
 User W-flag compile-time indicator. More...
 
using FFM_X = TFlagmark< FM_X >
 User X-flag compile-time indicator. More...
 
using FFM_Y = TFlagmark< FM_Y >
 User Y-flag compile-time indicator. More...
 
using FFM_Z = TFlagmark< FM_Z >
 User Z-flag compile-time indicator. More...
 
using FFM_AllUserLevel = TFlagmark< FM_AllUserLevel >
 All user-level flags compile-time indicator. More...
 
using FFM_All = TFlagmark< FM_All >
 All-flags-on compile-time indicator. More...
 

Enumerations

enum class  EFlagmarkBit : uint8 {
  Stale = 0x0 UMETA(Hidden) , Booted = 0x1 , Online = 0x2 , Editor = 0x3 UMETA(Hidden) ,
  DeferredDespawn = 0x4 UMETA(Hidden) , SystemLevelMax = DeferredDespawn UMETA(Hidden) , A = 0x5 , FirstUserLevel = A UMETA(Hidden) ,
  B , C , D , E ,
  F , G , H , I ,
  J , K , L , M ,
  N , O , P , Q ,
  R , S , T , U ,
  V , W , X , Y ,
  Z , Max = Z UMETA(Hidden)
}
 Flagmark bit identifiers. More...
 
enum  EFlagmark {
  FM_None = 0x0 UMETA(DisplayName = "None", Hidden) , FM_Stale = 1 << (int)EFlagmarkBit::Stale UMETA(Hidden) , FM_Booted = 1 << (int)EFlagmarkBit::Booted UMETA(DisplayName = "Booted") , FM_Online = 1 << (int)EFlagmarkBit::Online UMETA(DisplayName = "Online") ,
  FM_Editor = 1 << (int)EFlagmarkBit::Editor UMETA(Hidden) , FM_DeferredDespawn = 1 << (int)EFlagmarkBit::DeferredDespawn UMETA(Hidden) , FM_AllSystemLevel = FM_Stale | FM_Booted | FM_Online | FM_Editor | FM_DeferredDespawn UMETA(Hidden) , FM_A = 1 << (int)EFlagmarkBit::A UMETA(DisplayName = "A") ,
  FM_B = 1 << (int)EFlagmarkBit::B UMETA(DisplayName = "B") , FM_C = 1 << (int)EFlagmarkBit::C UMETA(DisplayName = "C") , FM_D = 1 << (int)EFlagmarkBit::D UMETA(DisplayName = "D") , FM_E = 1 << (int)EFlagmarkBit::E UMETA(DisplayName = "E") ,
  FM_F = 1 << (int)EFlagmarkBit::F UMETA(DisplayName = "F") , FM_G = 1 << (int)EFlagmarkBit::G UMETA(DisplayName = "G") , FM_H = 1 << (int)EFlagmarkBit::H UMETA(DisplayName = "H") , FM_I = 1 << (int)EFlagmarkBit::I UMETA(DisplayName = "I") ,
  FM_J = 1 << (int)EFlagmarkBit::J UMETA(DisplayName = "J") , FM_K = 1 << (int)EFlagmarkBit::K UMETA(DisplayName = "K") , FM_L = 1 << (int)EFlagmarkBit::L UMETA(DisplayName = "L") , FM_M = 1 << (int)EFlagmarkBit::M UMETA(DisplayName = "M") ,
  FM_N = 1 << (int)EFlagmarkBit::N UMETA(DisplayName = "N") , FM_O = 1 << (int)EFlagmarkBit::O UMETA(DisplayName = "O") , FM_P = 1 << (int)EFlagmarkBit::P UMETA(DisplayName = "P") , FM_Q = 1 << (int)EFlagmarkBit::Q UMETA(DisplayName = "Q") ,
  FM_R = 1 << (int)EFlagmarkBit::R UMETA(DisplayName = "R") , FM_S = 1 << (int)EFlagmarkBit::S UMETA(DisplayName = "S") , FM_T = 1 << (int)EFlagmarkBit::T UMETA(DisplayName = "T") , FM_U = 1 << (int)EFlagmarkBit::U UMETA(DisplayName = "U") ,
  FM_V = 1 << (int)EFlagmarkBit::V UMETA(DisplayName = "V") , FM_W = 1 << (int)EFlagmarkBit::W UMETA(DisplayName = "W") , FM_X = 1 << (int)EFlagmarkBit::X UMETA(DisplayName = "X") , FM_Y = 1 << (int)EFlagmarkBit::Y UMETA(DisplayName = "Y") ,
  FM_Z = 1 << (int)EFlagmarkBit::Z UMETA(DisplayName = "Z") , FM_AllUserLevel , FM_All = FM_AllSystemLevel | FM_AllUserLevel UMETA(Hidden)
}
 The universal flagmark functionality. More...
 

Functions

APPARATUSRUNTIME_API UEnum * GetFlagmarkBitClass ()
 Get the boot flagmark bit class. More...
 
FString ToString (const EFlagmarkBit FlagmarkBit)
 Convert a flagmark bit enum variable to a string. More...
 
bool IsSystemLevel (const EFlagmarkBit Flag)
 Check if the flag is a system one and not allowed to be set by the user. More...
 
bool IsUserLevel (const EFlagmarkBit Flag)
 Check if the flag is a user one and is allowed to be set by the user. More...
 
EFlagmark FlagToEnum (const EFlagmarkBit Flag)
 
EFlagmarkoperator-= (EFlagmark &Lhs, const EFlagmark Rhs)
 
constexpr EFlagmark operator- (EFlagmark Lhs, const EFlagmark Rhs)
 
EFlagmarkoperator|= (EFlagmark &Lhs, const EFlagmarkBit Rhs)
 
EFlagmarkoperator&= (EFlagmark &Lhs, const EFlagmarkBit Rhs)
 
EFlagmarkoperator^= (EFlagmark &Lhs, const EFlagmarkBit Rhs)
 
constexpr EFlagmark operator| (EFlagmark Lhs, const EFlagmarkBit Rhs)
 
constexpr EFlagmark operator& (EFlagmark Lhs, const EFlagmarkBit Rhs)
 
constexpr EFlagmark operator^ (EFlagmark Lhs, const EFlagmarkBit Rhs)
 
EFlagmarkoperator+= (EFlagmark &Lhs, const EFlagmarkBit Rhs)
 
EFlagmarkoperator-= (EFlagmark &Lhs, const EFlagmarkBit Rhs)
 
constexpr EFlagmark operator- (EFlagmark Lhs, const EFlagmarkBit Rhs)
 
constexpr EFlagmark operator+ (EFlagmark Lhs, const EFlagmarkBit Rhs)
 
constexpr EFlagmark operator| (const EFlagmarkBit Lhs, const EFlagmarkBit Rhs)
 
constexpr EFlagmark operator& (const EFlagmarkBit Lhs, const EFlagmarkBit Rhs)
 
template<typename T >
constexpr bool IsFlagmarkType ()
 Check if the type is actually a flagmark. More...
 
APPARATUSRUNTIME_API UEnum * GetFlagmarkClass ()
 Get the boot filter class. More...
 
FString ToString (const EFlagmark Flagmark)
 Convert a flagmark enum variable to a string. More...
 
uint32 GetTypeHash (const EFlagmark Flagmark)
 Hash the boot filter. More...
 
FArchive & operator<< (FArchive &Archive, EFlagmark &Flagmark)
 Serialize a boot filter to an archive. More...
 
bool Matches (const EFlagmark Flagmark, const EFlagmark Filter)
 Check if the flagmark matches a flagmark. More...
 
bool Matches (const EFlagmark Flagmark, const EFlagmark Filter, const EFlagmark ExcludingFilter)
 Check if the flagmark matches an including and excluding flagmark. More...
 

Macro Definition Documentation

◆ FLAGMARK_H_SKIPPED_MACHINE_H

#define FLAGMARK_H_SKIPPED_MACHINE_H

◆ SKIP_MACHINE_H

#define SKIP_MACHINE_H

Typedef Documentation

◆ EFlagmarkType

using EFlagmarkType = __underlying_type( EFlagmark )

◆ FFM_A

using FFM_A = TFlagmark<FM_A>

User A-flag compile-time indicator.

◆ FFM_All

All-flags-on compile-time indicator.

◆ FFM_AllSystemLevel

All system-level flags compile-time indicator.

◆ FFM_AllUserLevel

All user-level flags compile-time indicator.

◆ FFM_B

using FFM_B = TFlagmark<FM_B>

User B-flag compile-time indicator.

◆ FFM_Booted

Booted flag compile-time indicator.

◆ FFM_C

using FFM_C = TFlagmark<FM_C>

User C-flag compile-time indicator.

◆ FFM_D

using FFM_D = TFlagmark<FM_D>

User D-flag compile-time indicator.

◆ FFM_DeferredDespawn

Deferred despawn flag compile-time indicator.

◆ FFM_E

using FFM_E = TFlagmark<FM_E>

User E-flag compile-time indicator.

◆ FFM_Editor

Editor flag compile-time indicator.

◆ FFM_F

using FFM_F = TFlagmark<FM_F>

User F-flag compile-time indicator.

◆ FFM_G

using FFM_G = TFlagmark<FM_G>

User G-flag compile-time indicator.

◆ FFM_H

using FFM_H = TFlagmark<FM_H>

User H-flag compile-time indicator.

◆ FFM_I

using FFM_I = TFlagmark<FM_I>

User I-flag compile-time indicator.

◆ FFM_J

using FFM_J = TFlagmark<FM_J>

User J-flag compile-time indicator.

◆ FFM_K

using FFM_K = TFlagmark<FM_K>

User K-flag compile-time indicator.

◆ FFM_L

using FFM_L = TFlagmark<FM_L>

User L-flag compile-time indicator.

◆ FFM_M

using FFM_M = TFlagmark<FM_M>

User M-flag compile-time indicator.

◆ FFM_N

using FFM_N = TFlagmark<FM_N>

User N-flag compile-time indicator.

◆ FFM_None

No-flags compile-time indicator.

◆ FFM_O

using FFM_O = TFlagmark<FM_O>

User O-flag compile-time indicator.

◆ FFM_Online

Online flag compile-time indicator.

◆ FFM_P

using FFM_P = TFlagmark<FM_P>

User P-flag compile-time indicator.

◆ FFM_Q

using FFM_Q = TFlagmark<FM_Q>

User Q-flag compile-time indicator.

◆ FFM_R

using FFM_R = TFlagmark<FM_R>

User R-flag compile-time indicator.

◆ FFM_S

using FFM_S = TFlagmark<FM_S>

User S-flag compile-time indicator.

◆ FFM_Stale

Stale flag compile-time indicator.

◆ FFM_T

using FFM_T = TFlagmark<FM_T>

User T-flag compile-time indicator.

◆ FFM_U

using FFM_U = TFlagmark<FM_U>

User U-flag compile-time indicator.

◆ FFM_V

using FFM_V = TFlagmark<FM_V>

User V-flag compile-time indicator.

◆ FFM_W

using FFM_W = TFlagmark<FM_W>

User W-flag compile-time indicator.

◆ FFM_X

using FFM_X = TFlagmark<FM_X>

User X-flag compile-time indicator.

◆ FFM_Y

using FFM_Y = TFlagmark<FM_Y>

User Y-flag compile-time indicator.

◆ FFM_Z

using FFM_Z = TFlagmark<FM_Z>

User Z-flag compile-time indicator.

Enumeration Type Documentation

◆ EFlagmark

enum EFlagmark

The universal flagmark functionality.

The flagmarks are checked during the iterating procedure, but the checks themselves are pretty trivial.

Enumerator
FM_None 

No flags set.

FM_Stale 

(Re)moved subject.

FM_Booted 

An initialized subject.

FM_Online 

Networked subject.

FM_Editor 

Editor-spawned subject.

FM_DeferredDespawn 

Participating in a deferred removal.

FM_AllSystemLevel 

A mask with all the system flags set.

FM_A 

User flag A.

FM_B 

User flag B.

FM_C 

User flag C.

FM_D 

User flag D.

FM_E 

User flag E.

FM_F 

User flag F.

FM_G 

User flag G.

FM_H 

User flag H.

FM_I 

User flag I.

FM_J 

User flag J.

FM_K 

User flag K.

FM_L 

User flag L.

FM_M 

User flag M.

FM_N 

User flag N.

FM_O 

User flag O.

FM_P 

User flag P.

FM_Q 

User flag Q.

FM_R 

User flag R.

FM_S 

User flag S.

FM_T 

User flag T.

FM_U 

User flag U.

FM_V 

User flag V.

FM_W 

User flag W.

FM_X 

User flag X.

FM_Y 

User flag Y.

FM_Z 

User flag Z.

FM_AllUserLevel 

A mask with all the user-level flags set.

FM_All 

A mask with all the flags set.

◆ EFlagmarkBit

enum class EFlagmarkBit : uint8
strong

Flagmark bit identifiers.

Enumerator
Stale 

Subject (re)moved from the chunk.

Booted 

An initialized subject.

Online 

Networked subject.

Editor 

Editor-spawned subject.

DeferredDespawn 

Participating in a deferred entity removal.

SystemLevelMax 

The maximum system-level bit.

User flag A.

FirstUserLevel 

The first user-level flag available (A).

User flag B.

User flag C.

User flag D.

User flag E.

User flag F.

User flag G.

User flag H.

User flag I.

User flag J.

User flag K.

User flag L.

User flag M.

User flag N.

User flag O.

User flag P.

User flag Q.

User flag R.

User flag S.

User flag T.

User flag U.

User flag V.

User flag W.

User flag X.

User flag Y.

User flag Z.

Max 

The maximum flag available.

Seems like sign-bit flag is not supported.

Function Documentation

◆ FlagToEnum()

EFlagmark FlagToEnum ( const EFlagmarkBit  Flag)
inline

◆ GetFlagmarkBitClass()

APPARATUSRUNTIME_API UEnum * GetFlagmarkBitClass ( )
inline

Get the boot flagmark bit class.

◆ GetFlagmarkClass()

APPARATUSRUNTIME_API UEnum * GetFlagmarkClass ( )
inline

Get the boot filter class.

◆ GetTypeHash()

uint32 GetTypeHash ( const EFlagmark  Flagmark)
inline

Hash the boot filter.

◆ IsFlagmarkType()

template<typename T >
constexpr bool IsFlagmarkType ( )
constexpr

Check if the type is actually a flagmark.

◆ IsSystemLevel()

bool IsSystemLevel ( const EFlagmarkBit  Flag)
inline

Check if the flag is a system one and not allowed to be set by the user.

Parameters
FlagThe flag to examine.
Returns
The state of examination.

◆ IsUserLevel()

bool IsUserLevel ( const EFlagmarkBit  Flag)
inline

Check if the flag is a user one and is allowed to be set by the user.

Parameters
FlagThe flag to examine.
Returns
The state of examination.

◆ Matches() [1/2]

bool Matches ( const EFlagmark  Flagmark,
const EFlagmark  Filter 
)
inline

Check if the flagmark matches a flagmark.

◆ Matches() [2/2]

bool Matches ( const EFlagmark  Flagmark,
const EFlagmark  Filter,
const EFlagmark  ExcludingFilter 
)
inline

Check if the flagmark matches an including and excluding flagmark.

◆ operator&() [1/2]

constexpr EFlagmark operator& ( const EFlagmarkBit  Lhs,
const EFlagmarkBit  Rhs 
)
inlineconstexpr

◆ operator&() [2/2]

constexpr EFlagmark operator& ( EFlagmark  Lhs,
const EFlagmarkBit  Rhs 
)
inlineconstexpr

◆ operator&=()

EFlagmark & operator&= ( EFlagmark Lhs,
const EFlagmarkBit  Rhs 
)
inline

◆ operator+()

constexpr EFlagmark operator+ ( EFlagmark  Lhs,
const EFlagmarkBit  Rhs 
)
inlineconstexpr

◆ operator+=()

EFlagmark & operator+= ( EFlagmark Lhs,
const EFlagmarkBit  Rhs 
)
inline

◆ operator-() [1/2]

constexpr EFlagmark operator- ( EFlagmark  Lhs,
const EFlagmark  Rhs 
)
inlineconstexpr

◆ operator-() [2/2]

constexpr EFlagmark operator- ( EFlagmark  Lhs,
const EFlagmarkBit  Rhs 
)
inlineconstexpr

◆ operator-=() [1/2]

EFlagmark & operator-= ( EFlagmark Lhs,
const EFlagmark  Rhs 
)
inline

◆ operator-=() [2/2]

EFlagmark & operator-= ( EFlagmark Lhs,
const EFlagmarkBit  Rhs 
)
inline

◆ operator<<()

FArchive & operator<< ( FArchive &  Archive,
EFlagmark Flagmark 
)
inline

Serialize a boot filter to an archive.

◆ operator^()

constexpr EFlagmark operator^ ( EFlagmark  Lhs,
const EFlagmarkBit  Rhs 
)
inlineconstexpr

◆ operator^=()

EFlagmark & operator^= ( EFlagmark Lhs,
const EFlagmarkBit  Rhs 
)
inline

◆ operator|() [1/2]

constexpr EFlagmark operator| ( const EFlagmarkBit  Lhs,
const EFlagmarkBit  Rhs 
)
inlineconstexpr

◆ operator|() [2/2]

constexpr EFlagmark operator| ( EFlagmark  Lhs,
const EFlagmarkBit  Rhs 
)
inlineconstexpr

◆ operator|=()

EFlagmark & operator|= ( EFlagmark Lhs,
const EFlagmarkBit  Rhs 
)
inline

◆ ToString() [1/2]

FString ToString ( const EFlagmark  Flagmark)
inline

Convert a flagmark enum variable to a string.

◆ ToString() [2/2]

FString ToString ( const EFlagmarkBit  FlagmarkBit)
inline

Convert a flagmark bit enum variable to a string.