name add 0x00
This commit is contained in:
parent
f51befaff0
commit
aab1d81925
@ -1,6 +1,6 @@
|
|||||||
metadatas:
|
metadatas:
|
||||||
- guid: 7dfa8412-3278-43f6-b332-ac09a132025f
|
- guid: 2b4239ff-796a-4b55-9d8f-272c80a16b17
|
||||||
name: ""
|
name: ""
|
||||||
t_hash: "api::ShaderProgram\x06 mOwner!<21>/engine/assets/shader/simple.frag"
|
t_hash: api::ShaderProgram
|
||||||
meta: ~
|
meta: ~
|
||||||
includes: ~
|
includes: ~
|
||||||
@ -1,6 +1,6 @@
|
|||||||
metadatas:
|
metadatas:
|
||||||
- guid: 47c28b8c-f2aa-4357-a12d-7212de6e3a9e
|
- guid: d05a5912-57ef-4447-b9cc-1e117c083ef3
|
||||||
name: ""
|
name: ""
|
||||||
t_hash: "api::ShaderProgram\x06 mOwner!<21>/engine/assets/shader/simple.frag"
|
t_hash: api::ShaderProgram
|
||||||
meta: ~
|
meta: ~
|
||||||
includes: ~
|
includes: ~
|
||||||
@ -13,7 +13,7 @@ namespace gen {
|
|||||||
}
|
}
|
||||||
namespace YAML {
|
namespace YAML {
|
||||||
inline Node APILoad(std::string_view text) {
|
inline Node APILoad(std::string_view text) {
|
||||||
std::stringstream stream(text.data());
|
std::stringstream stream{ std::string(text) };
|
||||||
return Load(stream);
|
return Load(stream);
|
||||||
}
|
}
|
||||||
inline std::string_view APIDump(const Node& root) {
|
inline std::string_view APIDump(const Node& root) {
|
||||||
@ -22,8 +22,9 @@ namespace YAML {
|
|||||||
const char* data = emitter.c_str();
|
const char* data = emitter.c_str();
|
||||||
size_t size = emitter.size();
|
size_t size = emitter.size();
|
||||||
// 在 FramePool 上分配内存并拷贝数据
|
// 在 FramePool 上分配内存并拷贝数据
|
||||||
char* buffer = static_cast<char*>(FramePool()->allocate(size, alignof(std::max_align_t)));
|
char* buffer = static_cast<char*>(FramePool()->allocate(size + 1, alignof(std::max_align_t)));
|
||||||
std::memcpy(buffer, data, size);
|
std::memcpy(buffer, data, size);
|
||||||
|
buffer[size] = 0x00;
|
||||||
// 返回指向缓冲区的 string_view
|
// 返回指向缓冲区的 string_view
|
||||||
return std::string_view(buffer, size);
|
return std::string_view(buffer, size);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -16,11 +16,8 @@ namespace gen {
|
|||||||
else if constexpr (std::is_enum_v<T>) {
|
else if constexpr (std::is_enum_v<T>) {
|
||||||
*(T*)(ptr) = (T)node.as<uint32_t>();
|
*(T*)(ptr) = (T)node.as<uint32_t>();
|
||||||
}
|
}
|
||||||
else if constexpr (is_string_view_v<T>) {
|
else if constexpr (is_string_view_v<T> || is_string_v<T>) {
|
||||||
*(T*)(ptr) = node.as<std::string_view>();
|
*(T*)(ptr) = node.Scalar();
|
||||||
}
|
|
||||||
else if constexpr (is_string_v<T>) {
|
|
||||||
*(T*)(ptr) = node.as<std::string>();
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
//static_assert(false, "unknown json read type");
|
//static_assert(false, "unknown json read type");
|
||||||
|
|||||||
@ -68,6 +68,11 @@ namespace pmr {
|
|||||||
void SetStringEntryHeader(StringEntryHeader _stringEntryHeader) {
|
void SetStringEntryHeader(StringEntryHeader _stringEntryHeader) {
|
||||||
stringEntryHeader = _stringEntryHeader;
|
stringEntryHeader = _stringEntryHeader;
|
||||||
}
|
}
|
||||||
|
void SetStringData(const char* str, uint16_t size) {
|
||||||
|
memcpy(data, str, size);
|
||||||
|
data[size] = 0x00;
|
||||||
|
}
|
||||||
|
uint16_t GetSize()const { return stringEntryHeader.GetSize(); }
|
||||||
const char* GetData() const { return data; };
|
const char* GetData() const { return data; };
|
||||||
};
|
};
|
||||||
struct HashInfo {
|
struct HashInfo {
|
||||||
@ -196,14 +201,14 @@ namespace pmr {
|
|||||||
{
|
{
|
||||||
if (!flag3_memory29)return "";
|
if (!flag3_memory29)return "";
|
||||||
const StringEntry* stringEntry = UNIQUER_VAL(stringEntryMemoryManager).GetStringEntry(StringEntryHandle(flag3_memory29));
|
const StringEntry* stringEntry = UNIQUER_VAL(stringEntryMemoryManager).GetStringEntry(StringEntryHandle(flag3_memory29));
|
||||||
return std::string_view(stringEntry->GetData(), stringEntry->GetStringEntryHeader().GetSize());
|
return std::string_view(stringEntry->GetData(), stringEntry->GetSize());
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string ToString() const
|
std::string ToString() const
|
||||||
{
|
{
|
||||||
if (!flag3_memory29)return "";
|
if (!flag3_memory29)return "";
|
||||||
const StringEntry* stringEntry = UNIQUER_VAL(stringEntryMemoryManager).GetStringEntry(StringEntryHandle(flag3_memory29));
|
const StringEntry* stringEntry = UNIQUER_VAL(stringEntryMemoryManager).GetStringEntry(StringEntryHandle(flag3_memory29));
|
||||||
return std::string(stringEntry->GetData(), stringEntry->GetStringEntryHeader().GetSize());
|
return std::string(stringEntry->GetData(), stringEntry->GetSize());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@ -64,7 +64,7 @@ namespace pmr {
|
|||||||
const Name::Slot& oldSlot = oldSlotArray[slotIndex];
|
const Name::Slot& oldSlot = oldSlotArray[slotIndex];
|
||||||
|
|
||||||
StringEntry* stringEntry = stringEntryMemoryManager.GetStringEntry(oldSlotArray[slotIndex].GetStringEntryHandle());
|
StringEntry* stringEntry = stringEntryMemoryManager.GetStringEntry(oldSlotArray[slotIndex].GetStringEntryHandle());
|
||||||
const HashInfo hashInfo(std::string_view(stringEntry->GetData(), stringEntry->GetStringEntryHeader().GetSize()));
|
const HashInfo hashInfo(std::string_view(stringEntry->GetData(), stringEntry->GetSize()));
|
||||||
|
|
||||||
Name::Slot& slot = FindUnusedSlot(hashInfo);
|
Name::Slot& slot = FindUnusedSlot(hashInfo);
|
||||||
|
|
||||||
@ -94,7 +94,7 @@ namespace pmr {
|
|||||||
}
|
}
|
||||||
inline Name::StringEntryHandle Name::StringEntryMemoryManager::AllocateStringEntry(StringEntryHeader stringEntryHeader, const char* data)
|
inline Name::StringEntryHandle Name::StringEntryMemoryManager::AllocateStringEntry(StringEntryHeader stringEntryHeader, const char* data)
|
||||||
{
|
{
|
||||||
const uint32_t size = meta_align_size(sizeof(StringEntryHeader) + stringEntryHeader.GetSize(), ALIGN_BYTES);
|
const uint32_t size = meta_align_size(sizeof(StringEntryHeader) + stringEntryHeader.GetSize() + 1, ALIGN_BYTES);
|
||||||
const uint32_t alignedSize = size >> 1;
|
const uint32_t alignedSize = size >> 1;
|
||||||
|
|
||||||
StringEntryHandle stringEntryHandle{};
|
StringEntryHandle stringEntryHandle{};
|
||||||
@ -112,8 +112,7 @@ namespace pmr {
|
|||||||
|
|
||||||
StringEntry* stringEntry = GetStringEntry(stringEntryHandle);
|
StringEntry* stringEntry = GetStringEntry(stringEntryHandle);
|
||||||
stringEntry->SetStringEntryHeader(stringEntryHeader);
|
stringEntry->SetStringEntryHeader(stringEntryHeader);
|
||||||
memcpy(const_cast<char*>(stringEntry->GetData()), data, stringEntryHeader.GetSize());
|
stringEntry->SetStringData(data, stringEntryHeader.GetSize());
|
||||||
|
|
||||||
return stringEntryHandle;
|
return stringEntryHandle;
|
||||||
}
|
}
|
||||||
inline void Name::StringEntryMemoryManager::CreateNewMemoryBlock()
|
inline void Name::StringEntryMemoryManager::CreateNewMemoryBlock()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user