diff options
| author | 2019-11-26 15:48:19 -0500 | |
|---|---|---|
| committer | 2019-11-26 21:55:38 -0500 | |
| commit | b2165c6b353be5e8117d1f9bc677bb198fa9d8cd (patch) | |
| tree | 1b08113cf73a864c7c3e74cd4a3e1cca53879ce2 /src/core/memory.cpp | |
| parent | core/memory: Migrate over GetPointer() (diff) | |
| download | yuzu-b2165c6b353be5e8117d1f9bc677bb198fa9d8cd.tar.gz yuzu-b2165c6b353be5e8117d1f9bc677bb198fa9d8cd.tar.xz yuzu-b2165c6b353be5e8117d1f9bc677bb198fa9d8cd.zip | |
core/memory: Migrate over ReadCString() to the Memory class
This only had one usage spot, so this is fairly straightforward to
convert over.
Diffstat (limited to 'src/core/memory.cpp')
| -rw-r--r-- | src/core/memory.cpp | 33 |
1 files changed, 19 insertions, 14 deletions
diff --git a/src/core/memory.cpp b/src/core/memory.cpp index 93cd67e39..fb824d710 100644 --- a/src/core/memory.cpp +++ b/src/core/memory.cpp | |||
| @@ -210,6 +210,21 @@ struct Memory::Impl { | |||
| 210 | return nullptr; | 210 | return nullptr; |
| 211 | } | 211 | } |
| 212 | 212 | ||
| 213 | std::string ReadCString(VAddr vaddr, std::size_t max_length) { | ||
| 214 | std::string string; | ||
| 215 | string.reserve(max_length); | ||
| 216 | for (std::size_t i = 0; i < max_length; ++i) { | ||
| 217 | const char c = Read8(vaddr); | ||
| 218 | if (c == '\0') { | ||
| 219 | break; | ||
| 220 | } | ||
| 221 | string.push_back(c); | ||
| 222 | ++vaddr; | ||
| 223 | } | ||
| 224 | string.shrink_to_fit(); | ||
| 225 | return string; | ||
| 226 | } | ||
| 227 | |||
| 213 | /** | 228 | /** |
| 214 | * Maps a region of pages as a specific type. | 229 | * Maps a region of pages as a specific type. |
| 215 | * | 230 | * |
| @@ -299,6 +314,10 @@ const u8* Memory::GetPointer(VAddr vaddr) const { | |||
| 299 | return impl->GetPointer(vaddr); | 314 | return impl->GetPointer(vaddr); |
| 300 | } | 315 | } |
| 301 | 316 | ||
| 317 | std::string Memory::ReadCString(VAddr vaddr, std::size_t max_length) { | ||
| 318 | return impl->ReadCString(vaddr, max_length); | ||
| 319 | } | ||
| 320 | |||
| 302 | void SetCurrentPageTable(Kernel::Process& process) { | 321 | void SetCurrentPageTable(Kernel::Process& process) { |
| 303 | current_page_table = &process.VMManager().page_table; | 322 | current_page_table = &process.VMManager().page_table; |
| 304 | 323 | ||
| @@ -315,20 +334,6 @@ bool IsKernelVirtualAddress(const VAddr vaddr) { | |||
| 315 | return KERNEL_REGION_VADDR <= vaddr && vaddr < KERNEL_REGION_END; | 334 | return KERNEL_REGION_VADDR <= vaddr && vaddr < KERNEL_REGION_END; |
| 316 | } | 335 | } |
| 317 | 336 | ||
| 318 | std::string ReadCString(VAddr vaddr, std::size_t max_length) { | ||
| 319 | std::string string; | ||
| 320 | string.reserve(max_length); | ||
| 321 | for (std::size_t i = 0; i < max_length; ++i) { | ||
| 322 | char c = Read8(vaddr); | ||
| 323 | if (c == '\0') | ||
| 324 | break; | ||
| 325 | string.push_back(c); | ||
| 326 | ++vaddr; | ||
| 327 | } | ||
| 328 | string.shrink_to_fit(); | ||
| 329 | return string; | ||
| 330 | } | ||
| 331 | |||
| 332 | void RasterizerMarkRegionCached(VAddr vaddr, u64 size, bool cached) { | 337 | void RasterizerMarkRegionCached(VAddr vaddr, u64 size, bool cached) { |
| 333 | if (vaddr == 0) { | 338 | if (vaddr == 0) { |
| 334 | return; | 339 | return; |