21class BlockDescriptor {
31 enum class CompareType :
int {
42 ::ll::TypedStorage<8, 8, ::BlockDescriptor&> mBlockDescriptor;
47 ResolveHelper& operator=(ResolveHelper
const&);
48 ResolveHelper(ResolveHelper
const&);
54 MCAPI
void resolve(
bool logInvalidBlocks);
62 ::ll::TypedStorage<8, 8, ::gsl::not_null<::BlockState const*>> mBlockState;
63 ::ll::TypedStorage<4, 4, int> mValue;
71 ::ll::TypedStorage<8, 48, ::HashedString> mName;
72 ::ll::TypedStorage<8, 40, ::SharedTypes::Legacy::BlockDescriptor::Compound> mState;
109 ::ll::TypedStorage<8, 8, ::BlockDescriptor::ResolveHelper> mResolveHelper;
110 ::ll::TypedStorage<8, 48, ::HashedString> mBlockName;
111 ::ll::TypedStorage<1, 1, bool> mIsComplexAlias;
112 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::ExpressionNode>> mTags;
113 ::ll::TypedStorage<8, 24, ::std::vector<::BlockDescriptor::State>> mRawStates;
114 ::ll::TypedStorage<8, 24, ::std::vector<::BlockDescriptor::ResolvedState>> mResolvedStates;
115 ::ll::TypedStorage<4, 4, ::BlockDescriptor::CompareType> mCompareType;
116 ::ll::TypedStorage<1, 1, bool> mContentLogOnError;
117 ::ll::TypedStorage<8, 8, ::Block const*> mBlock;
118 ::ll::TypedStorage<1, 1, bool> mValid;
119 ::ll::TypedStorage<1, 1, bool> mIsDeferred;
120 ::ll::TypedStorage<8, 24, ::SpinLockImpl> mLock;
124 static bool anyMatch(::std::vector<::BlockDescriptor>
const& blockDescriptors,
::Block const& block) {
125 return std::ranges::any_of(blockDescriptors, [&block](
auto&& des) {
return des.matches(block); });
139 MCAPI BlockDescriptor(::BlockDescriptor&& rhs);
141 MCAPI BlockDescriptor(::BlockDescriptor
const& rhs);
143 MCNAPI
BlockDescriptor(::std::string
const& name, ::std::vector<::BlockDescriptor::State>&& states);
149 MCAPI ::Block
const& getBlockOrUnknownBlock()
const;
157 MCAPI
bool matches(
::Block const& block)
const;
159 MCNAPI
bool matches(::BlockDescriptor
const& otherDescriptor)
const;
167 MCAPI ::Block
const* tryGetBlock()
const;
171 MCAPI ~BlockDescriptor();
181 MCNAPI static ::BlockDescriptor
184 MCNAPI static ::SharedTypes::Legacy::BlockDescriptor
toSharedTypes(::BlockDescriptor
const& instance);
204 MCAPI
void*
$ctor(::BlockDescriptor&& rhs);
206 MCAPI
void*
$ctor(::BlockDescriptor
const& rhs);
208 MCNAPI
void*
$ctor(::std::string
const& name, ::std::vector<::BlockDescriptor::State>&& states);