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