Files
Leviathan/Library/Internal/include/rdu/StatusFlag.h
T
2026-06-01 12:46:52 +02:00

55 lines
828 B
C++

#pragma once
template< typename T >
class CStatusFlag
{
public:
CStatusFlag()
: m_nStatusFlag( 0 )
{}
const T& GetRawData() const
{
return m_nStatusFlag;
}
void SetRawData( const T& nData )
{
m_nStatusFlag = nData;
}
size_t GetRawDataSize() const
{
return sizeof( m_nStatusFlag );
}
bool IsOn( unsigned char nStatusFlagIndex ) const
{
return (m_nStatusFlag & ( 1 << nStatusFlagIndex )) != 0;
}
void Set( unsigned char nStatusFlagIndex, bool _bTurnOn = true )
{
if( _bTurnOn )
{
m_nStatusFlag |= 1 << nStatusFlagIndex;
}
else if( IsOn( nStatusFlagIndex ) == true )
{
m_nStatusFlag ^= 1 << nStatusFlagIndex;
}
// else : 해당 플래그가 켜져 있지 않으므로 아무것도 하지 않음
}
void Clear()
{
m_nStatusFlag = 0;
}
private:
T m_nStatusFlag;
};