#ifndef MRT_STACKSIZE_VARINT_H
#define MRT_STACKSIZE_VARINT_H
#include "StackMap/StackMapTable.h"
namespace MapleRuntime {
class StacksizeVarInt {
public:
StacksizeVarInt(U8* ptr, U32 bitPos) : value(ptr, bitPos) { ResolveVarInt(); }
explicit StacksizeVarInt(const BitsManager& bitsManager) : value(bitsManager) { ResolveVarInt(); }
~StacksizeVarInt() = default;
BitsManager GetNextTable() const { return nextTable; }
U32 GetStacksize() const { return stacksize; }
private:
void ResolveVarInt()
{
VarInt sizeBits(value);
VarPair varPair = sizeBits.GetValue();
stacksize = varPair.first;
nextTable = value.GetNext(varPair.second);
}
BitsManager value;
BitsManager nextTable;
U32 stacksize{ 0 };
};
}
#endif