mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-05-07 13:04:58 +00:00
48 lines
1.2 KiB
C++
48 lines
1.2 KiB
C++
#include "MatcherResult.h"
|
|
|
|
namespace
|
|
{
|
|
// The highest bit is the fabricated flag
|
|
constexpr unsigned FABRICATED_FLAG_MASK = 1u << (sizeof(unsigned) * 8u - 1u);
|
|
constexpr unsigned TOKEN_INDEX_MASK = ~FABRICATED_FLAG_MASK;
|
|
} // namespace
|
|
|
|
MatcherResultTokenIndex::MatcherResultTokenIndex(const unsigned index, const bool isFabricated)
|
|
{
|
|
m_token_index = index & TOKEN_INDEX_MASK;
|
|
if (isFabricated)
|
|
m_token_index |= FABRICATED_FLAG_MASK;
|
|
}
|
|
|
|
bool MatcherResultTokenIndex::IsFabricated() const
|
|
{
|
|
return m_token_index & FABRICATED_FLAG_MASK;
|
|
}
|
|
|
|
unsigned MatcherResultTokenIndex::GetTokenIndex() const
|
|
{
|
|
return m_token_index & TOKEN_INDEX_MASK;
|
|
}
|
|
|
|
MatcherResultCapture::MatcherResultCapture(const int captureId, const unsigned tokenIndex)
|
|
: MatcherResultCapture(captureId, tokenIndex, false)
|
|
{
|
|
}
|
|
|
|
MatcherResultCapture::MatcherResultCapture(const int captureId, const unsigned tokenIndex, const bool isFabricated)
|
|
: m_capture_id(captureId),
|
|
m_token_index(tokenIndex, isFabricated)
|
|
{
|
|
}
|
|
|
|
MatcherResultCapture::MatcherResultCapture(const int captureId, const MatcherResultTokenIndex index)
|
|
: m_capture_id(captureId),
|
|
m_token_index(index)
|
|
{
|
|
}
|
|
|
|
int MatcherResultCapture::GetCaptureId() const
|
|
{
|
|
return m_capture_id;
|
|
}
|