mirror of
https://github.com/Alex-Rachel/TEngine.git
synced 2025-08-14 16:51:28 +00:00
接入obfuz->2.0
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
#pragma once
|
||||
|
||||
#include "MetadataUtil.h"
|
||||
|
||||
namespace hybridclr
|
||||
{
|
||||
namespace metadata
|
||||
{
|
||||
struct ByteSpan
|
||||
{
|
||||
const byte* data;
|
||||
uint32_t length;
|
||||
ByteSpan() : data(nullptr), length(0) {}
|
||||
ByteSpan(const byte* data, uint32_t length) : data(data), length(length) {}
|
||||
};
|
||||
|
||||
class MetadataReader
|
||||
{
|
||||
private:
|
||||
const byte* _data;
|
||||
public:
|
||||
MetadataReader(const byte* data) : _data(data) {}
|
||||
int16_t ReadInt16()
|
||||
{
|
||||
int16_t value = GetI2LittleEndian(_data);
|
||||
_data += 2;
|
||||
return value;
|
||||
}
|
||||
|
||||
bool ReadBool()
|
||||
{
|
||||
return *(_data++) != 0;
|
||||
}
|
||||
|
||||
uint8_t ReadUInt8()
|
||||
{
|
||||
return *(_data++);
|
||||
}
|
||||
|
||||
uint16_t ReadUInt16()
|
||||
{
|
||||
uint16_t value = GetU2LittleEndian(_data);
|
||||
_data += 2;
|
||||
return value;
|
||||
}
|
||||
|
||||
int32_t ReadInt32()
|
||||
{
|
||||
int32_t value = GetI4LittleEndian(_data);
|
||||
_data += 4;
|
||||
return value;
|
||||
}
|
||||
|
||||
uint32_t ReadUInt32()
|
||||
{
|
||||
uint32_t value = GetU4LittleEndian(_data);
|
||||
_data += 4;
|
||||
return value;
|
||||
}
|
||||
|
||||
int64_t ReadInt64()
|
||||
{
|
||||
int64_t value = GetI8LittleEndian(_data);
|
||||
_data += 8;
|
||||
return value;
|
||||
}
|
||||
|
||||
uint64_t ReadUInt64()
|
||||
{
|
||||
uint64_t value = GetU8LittleEndian(_data);
|
||||
_data += 8;
|
||||
return value;
|
||||
}
|
||||
|
||||
const byte* ReadFixedBytes(int32_t byteCount)
|
||||
{
|
||||
const byte* value = _data;
|
||||
_data += byteCount;
|
||||
return value;
|
||||
}
|
||||
|
||||
ByteSpan ReadBytes()
|
||||
{
|
||||
uint32_t byteCount = ReadUInt32();
|
||||
const byte* buffer = _data;
|
||||
_data += byteCount;
|
||||
return ByteSpan(buffer, byteCount);
|
||||
}
|
||||
|
||||
const byte* CurrentDataPtr() const
|
||||
{
|
||||
return _data;
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user