1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-12 21:34:11 +02:00

Parser fixes

This commit is contained in:
Brian Fiete 2020-09-12 08:11:29 -07:00
parent 6b680d2b70
commit dc169fffda

View file

@ -951,20 +951,48 @@ static void BfSizedArrayInitIndirect(BfSizedArray<T>& sizedArray, const SizedArr
template <typename T> template <typename T>
class BfDeferredAstSizedArray : public SizedArray<T, 8> class BfDeferredAstSizedArray : public SizedArray<T, 8>
{ {
public: public:
BfSizedArray<ASTREF(T)>* mSizedArray; BfSizedArray<ASTREF(T)>* mSizedArray;
BfAstAllocator* mAlloc; BfAstAllocator* mAlloc;
public: public:
BfDeferredAstSizedArray(BfSizedArray<ASTREF(T)>& arr, BfAstAllocator* alloc) BfDeferredAstSizedArray(BfSizedArray<ASTREF(T)>& arr, BfAstAllocator* alloc)
{ {
mSizedArray = &arr; mSizedArray = &arr;
mAlloc = alloc; mAlloc = alloc;
} }
~BfDeferredAstSizedArray() ~BfDeferredAstSizedArray()
{ {
BfSizedArrayInitIndirect(*mSizedArray, *this, mAlloc);
}
};
template <typename T>
class BfDeferredAstNodeSizedArray : public SizedArray<T, 8>
{
public:
BfAstNode* mParentNode;
BfSizedArray<ASTREF(T)>* mSizedArray;
BfAstAllocator* mAlloc;
public:
BfDeferredAstNodeSizedArray(BfAstNode* parentNode, BfSizedArray<ASTREF(T)>& arr, BfAstAllocator* alloc)
{
mParentNode = parentNode;
mSizedArray = &arr;
mAlloc = alloc;
}
~BfDeferredAstNodeSizedArray()
{
BfSizedArrayInitIndirect(*mSizedArray, *this, mAlloc); BfSizedArrayInitIndirect(*mSizedArray, *this, mAlloc);
if (!mSizedArray->IsEmpty())
{
int endPos = mSizedArray->back()->mSrcEnd;
if (endPos > mParentNode->mSrcEnd)
mParentNode->mSrcEnd = endPos;
}
} }
}; };