summaryrefslogtreecommitdiff
path: root/Source/Core/DiscIO/VolumeCreator.cpp
diff options
context:
space:
mode:
authorMarkus Wick <degasus@users.noreply.github.com>2015-12-07 19:12:15 +0100
committerMarkus Wick <degasus@users.noreply.github.com>2015-12-07 19:12:15 +0100
commit9719804cd2f61adf2ab7f0dfc15efda36c5df529 (patch)
tree7c368eff997e8db51cc6af795bf30ccf34f8ae7e /Source/Core/DiscIO/VolumeCreator.cpp
parent31a40447d8e9d8e4d29aa58d02df20e957d8d24b (diff)
parentedbbf493f807ed94b9b32cfb7463f9b7f8f27852 (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.cpp68
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);
}
}