diff options
| author | Markus Wick <degasus@users.noreply.github.com> | 2015-12-07 19:12:15 +0100 |
|---|---|---|
| committer | Markus Wick <degasus@users.noreply.github.com> | 2015-12-07 19:12:15 +0100 |
| commit | 9719804cd2f61adf2ab7f0dfc15efda36c5df529 (patch) | |
| tree | 7c368eff997e8db51cc6af795bf30ccf34f8ae7e /Source/Core/DiscIO/VolumeCreator.cpp | |
| parent | 31a40447d8e9d8e4d29aa58d02df20e957d8d24b (diff) | |
| parent | edbbf493f807ed94b9b32cfb7463f9b7f8f27852 (diff) | |
Merge pull request #3320 from lioncash/factory
DiscIO: Make factory methods return unique_ptrs
Diffstat (limited to 'Source/Core/DiscIO/VolumeCreator.cpp')
| -rw-r--r-- | Source/Core/DiscIO/VolumeCreator.cpp | 68 |
1 files changed, 34 insertions, 34 deletions
diff --git a/Source/Core/DiscIO/VolumeCreator.cpp b/Source/Core/DiscIO/VolumeCreator.cpp index 6c918cea34..a6305941ac 100644 --- a/Source/Core/DiscIO/VolumeCreator.cpp +++ b/Source/Core/DiscIO/VolumeCreator.cpp @@ -71,12 +71,12 @@ static const unsigned char s_master_key_korean[16] = { 0x13,0xf2,0xfe,0xfb,0xba,0x4c,0x9b,0x7e }; -static IVolume* CreateVolumeFromCryptedWiiImage(std::unique_ptr<IBlobReader> reader, u32 _PartitionGroup, u32 _VolumeType, u32 _VolumeNum); +static std::unique_ptr<IVolume> CreateVolumeFromCryptedWiiImage(std::unique_ptr<IBlobReader> reader, u32 partition_group, u32 volume_type, u32 volume_number); EDiscType GetDiscType(IBlobReader& _rReader); -IVolume* CreateVolumeFromFilename(const std::string& _rFilename, u32 _PartitionGroup, u32 _VolumeNum) +std::unique_ptr<IVolume> CreateVolumeFromFilename(const std::string& filename, u32 partition_group, u32 volume_number) { - std::unique_ptr<IBlobReader> reader(CreateBlobReader(_rFilename)); + std::unique_ptr<IBlobReader> reader(CreateBlobReader(filename)); if (reader == nullptr) return nullptr; @@ -84,30 +84,30 @@ IVolume* CreateVolumeFromFilename(const std::string& _rFilename, u32 _PartitionG { case DISC_TYPE_WII: case DISC_TYPE_GC: - return new CVolumeGC(std::move(reader)); + return std::make_unique<CVolumeGC>(std::move(reader)); case DISC_TYPE_WAD: - return new CVolumeWAD(std::move(reader)); + return std::make_unique<CVolumeWAD>(std::move(reader)); case DISC_TYPE_WII_CONTAINER: - return CreateVolumeFromCryptedWiiImage(std::move(reader), _PartitionGroup, 0, _VolumeNum); + return CreateVolumeFromCryptedWiiImage(std::move(reader), partition_group, 0, volume_number); case DISC_TYPE_UNK: default: - std::string Filename, ext; - SplitPath(_rFilename, nullptr, &Filename, &ext); - Filename += ext; + std::string name, extension; + SplitPath(filename, nullptr, &name, &extension); + name += extension; NOTICE_LOG(DISCIO, "%s does not have the Magic word for a gcm, wiidisc or wad file\n" - "Set Log Verbosity to Warning and attempt to load the game again to view the values", Filename.c_str()); + "Set Log Verbosity to Warning and attempt to load the game again to view the values", name.c_str()); } return nullptr; } -IVolume* CreateVolumeFromDirectory(const std::string& _rDirectory, bool _bIsWii, const std::string& _rApploader, const std::string& _rDOL) +std::unique_ptr<IVolume> CreateVolumeFromDirectory(const std::string& directory, bool is_wii, const std::string& apploader, const std::string& dol) { - if (CVolumeDirectory::IsValidDirectory(_rDirectory)) - return new CVolumeDirectory(_rDirectory, _bIsWii, _rApploader, _rDOL); + if (CVolumeDirectory::IsValidDirectory(directory)) + return std::make_unique<CVolumeDirectory>(directory, is_wii, apploader, dol); return nullptr; } @@ -137,55 +137,55 @@ void VolumeKeyForPartition(IBlobReader& _rReader, u64 offset, u8* VolumeKey) mbedtls_aes_crypt_cbc(&AES_ctx, MBEDTLS_AES_DECRYPT, 16, IV, SubKey, VolumeKey); } -static IVolume* CreateVolumeFromCryptedWiiImage(std::unique_ptr<IBlobReader> reader, u32 _PartitionGroup, u32 _VolumeType, u32 _VolumeNum) +static std::unique_ptr<IVolume> CreateVolumeFromCryptedWiiImage(std::unique_ptr<IBlobReader> reader, u32 partition_group, u32 volume_type, u32 volume_number) { CBlobBigEndianReader big_endian_reader(*reader); - u32 numPartitions = big_endian_reader.Read32(0x40000 + (_PartitionGroup * 8)); - u64 PartitionsOffset = (u64)big_endian_reader.Read32(0x40000 + (_PartitionGroup * 8) + 4) << 2; + u32 numPartitions = big_endian_reader.Read32(0x40000 + (partition_group * 8)); + u64 PartitionsOffset = (u64)big_endian_reader.Read32(0x40000 + (partition_group * 8) + 4) << 2; // Check if we're looking for a valid partition - if ((int)_VolumeNum != -1 && _VolumeNum > numPartitions) + if ((int)volume_number != -1 && volume_number > numPartitions) return nullptr; struct SPartition { - u64 Offset; - u32 Type; + u64 offset; + u32 type; }; struct SPartitionGroup { - u32 numPartitions; - u64 PartitionsOffset; - std::vector<SPartition> PartitionsVec; + u32 num_partitions; + u64 partitions_offset; + std::vector<SPartition> partitions; }; - SPartitionGroup PartitionGroup[4]; + SPartitionGroup partition_groups[4]; // Read all partitions - for (SPartitionGroup& group : PartitionGroup) + for (SPartitionGroup& group : partition_groups) { for (u32 i = 0; i < numPartitions; i++) { - SPartition Partition; - Partition.Offset = ((u64)big_endian_reader.Read32(PartitionsOffset + (i * 8) + 0)) << 2; - Partition.Type = big_endian_reader.Read32(PartitionsOffset + (i * 8) + 4); - group.PartitionsVec.push_back(Partition); + SPartition partition; + partition.offset = ((u64)big_endian_reader.Read32(PartitionsOffset + (i * 8) + 0)) << 2; + partition.type = big_endian_reader.Read32(PartitionsOffset + (i * 8) + 4); + group.partitions.push_back(partition); } } // Return the partition type specified or number // types: 0 = game, 1 = firmware update, 2 = channel installer // some partitions on SSBB use the ASCII title id of the demo VC game they hold... - for (size_t i = 0; i < PartitionGroup[_PartitionGroup].PartitionsVec.size(); i++) + for (size_t i = 0; i < partition_groups[partition_group].partitions.size(); i++) { - const SPartition& rPartition = PartitionGroup[_PartitionGroup].PartitionsVec.at(i); + const SPartition& partition = partition_groups[partition_group].partitions.at(i); - if ((rPartition.Type == _VolumeType && (int)_VolumeNum == -1) || i == _VolumeNum) + if ((partition.type == volume_type && (int)volume_number == -1) || i == volume_number) { - u8 VolumeKey[16]; - VolumeKeyForPartition(*reader, rPartition.Offset, VolumeKey); - return new CVolumeWiiCrypted(std::move(reader), rPartition.Offset, VolumeKey); + u8 volume_key[16]; + VolumeKeyForPartition(*reader, partition.offset, volume_key); + return std::make_unique<CVolumeWiiCrypted>(std::move(reader), partition.offset, volume_key); } } |
