summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Miodrag Milanović <mmicko@gmail.com>2016-07-23 19:04:30 +0200
committer GitHub <noreply@github.com>2016-07-23 19:04:30 +0200
commit6a37a47889cbedc545a26684e469e1c04759f743 (patch)
tree6f2dcad09fb22a003faf7805dbe97ed89c7c4015
parent38e8953add973cd47a0942d0dc45d062b1990c17 (diff)
parent4aa0ab1724e8fe19775d6be982ec312604a2a6b3 (diff)
Merge pull request #1136 from npwoods/move_hash_into_util
Moved src/emu/hash.[cpp|h] into src/lib/util, and namespaced into util::
-rw-r--r--scripts/src/emu.lua2
-rw-r--r--scripts/src/lib.lua2
-rw-r--r--src/devices/bus/a7800/a78_slot.cpp4
-rw-r--r--src/devices/bus/a7800/a78_slot.h2
-rw-r--r--src/devices/bus/nes/nes_slot.cpp2
-rw-r--r--src/devices/bus/nes/nes_slot.h2
-rw-r--r--src/devices/bus/ti99x/gromport.cpp8
-rw-r--r--src/emu/diimage.cpp22
-rw-r--r--src/emu/diimage.h10
-rw-r--r--src/emu/fileio.cpp2
-rw-r--r--src/emu/fileio.h4
-rw-r--r--src/emu/romload.cpp26
-rw-r--r--src/emu/romload.h4
-rw-r--r--src/emu/softlist.cpp6
-rw-r--r--src/emu/validity.cpp2
-rw-r--r--src/frontend/mame/audit.cpp26
-rw-r--r--src/frontend/mame/audit.h14
-rw-r--r--src/frontend/mame/clifront.cpp34
-rw-r--r--src/frontend/mame/info.cpp12
-rw-r--r--src/frontend/mame/info.h2
-rw-r--r--src/frontend/mame/ui/selgame.cpp12
-rw-r--r--src/lib/util/chd.cpp100
-rw-r--r--src/lib/util/chd.h36
-rw-r--r--src/lib/util/hash.cpp (renamed from src/emu/hash.cpp)7
-rw-r--r--src/lib/util/hash.h (renamed from src/emu/hash.h)4
-rw-r--r--src/lib/util/hashing.cpp3
-rw-r--r--src/lib/util/hashing.h3
27 files changed, 181 insertions, 170 deletions
diff --git a/scripts/src/emu.lua b/scripts/src/emu.lua
index a446a6ccaae..1f96f3b4e22 100644
--- a/scripts/src/emu.lua
+++ b/scripts/src/emu.lua
@@ -118,8 +118,6 @@ files {
MAME_DIR .. "src/emu/emupal.h",
MAME_DIR .. "src/emu/fileio.cpp",
MAME_DIR .. "src/emu/fileio.h",
- MAME_DIR .. "src/emu/hash.cpp",
- MAME_DIR .. "src/emu/hash.h",
MAME_DIR .. "src/emu/image.cpp",
MAME_DIR .. "src/emu/image.h",
MAME_DIR .. "src/emu/input.cpp",
diff --git a/scripts/src/lib.lua b/scripts/src/lib.lua
index 00bc51897d8..7353c87c1d9 100644
--- a/scripts/src/lib.lua
+++ b/scripts/src/lib.lua
@@ -56,6 +56,8 @@ project "utils"
MAME_DIR .. "src/lib/util/flac.h",
MAME_DIR .. "src/lib/util/harddisk.cpp",
MAME_DIR .. "src/lib/util/harddisk.h",
+ MAME_DIR .. "src/lib/util/hash.cpp",
+ MAME_DIR .. "src/lib/util/hash.h",
MAME_DIR .. "src/lib/util/hashing.cpp",
MAME_DIR .. "src/lib/util/hashing.h",
MAME_DIR .. "src/lib/util/huffman.cpp",
diff --git a/src/devices/bus/a7800/a78_slot.cpp b/src/devices/bus/a7800/a78_slot.cpp
index 0d71161fc70..c5170169ce4 100644
--- a/src/devices/bus/a7800/a78_slot.cpp
+++ b/src/devices/bus/a7800/a78_slot.cpp
@@ -22,7 +22,7 @@
even if not all carts use all of them (in particular no cart type
seems to use access to the ranges $0500 to $0fff and $2800 to $2fff)
-
+
***********************************************************************************************************/
@@ -473,7 +473,7 @@ bool a78_cart_slot_device::call_load()
}
-void a78_partialhash(hash_collection &dest, const unsigned char *data,
+void a78_partialhash(util::hash_collection &dest, const unsigned char *data,
unsigned long length, const char *functions)
{
if (length <= 128)
diff --git a/src/devices/bus/a7800/a78_slot.h b/src/devices/bus/a7800/a78_slot.h
index 2dde4a73943..88a758b8ce2 100644
--- a/src/devices/bus/a7800/a78_slot.h
+++ b/src/devices/bus/a7800/a78_slot.h
@@ -75,7 +75,7 @@ protected:
};
-void a78_partialhash(hash_collection &dest, const unsigned char *data, unsigned long length, const char *functions);
+void a78_partialhash(util::hash_collection &dest, const unsigned char *data, unsigned long length, const char *functions);
// ======================> a78_cart_slot_device
diff --git a/src/devices/bus/nes/nes_slot.cpp b/src/devices/bus/nes/nes_slot.cpp
index b163c9d43a2..17fe28a1acb 100644
--- a/src/devices/bus/nes/nes_slot.cpp
+++ b/src/devices/bus/nes/nes_slot.cpp
@@ -1034,7 +1034,7 @@ WRITE8_MEMBER(nes_cart_slot_device::write_ex)
// device_image_partialhash_func
//-------------------------------------------------
-void nes_partialhash(hash_collection &dest, const unsigned char *data,
+void nes_partialhash(util::hash_collection &dest, const unsigned char *data,
unsigned long length, const char *functions)
{
if (length <= 16)
diff --git a/src/devices/bus/nes/nes_slot.h b/src/devices/bus/nes/nes_slot.h
index 26a25d3a8ee..0171499f9d6 100644
--- a/src/devices/bus/nes/nes_slot.h
+++ b/src/devices/bus/nes/nes_slot.h
@@ -326,7 +326,7 @@ protected:
std::vector<UINT16> m_prg_bank_map;
};
-void nes_partialhash(hash_collection &dest, const unsigned char *data, unsigned long length, const char *functions);
+void nes_partialhash(util::hash_collection &dest, const unsigned char *data, unsigned long length, const char *functions);
// ======================> nes_cart_slot_device
diff --git a/src/devices/bus/ti99x/gromport.cpp b/src/devices/bus/ti99x/gromport.cpp
index 159572234ea..6cea8083119 100644
--- a/src/devices/bus/ti99x/gromport.cpp
+++ b/src/devices/bus/ti99x/gromport.cpp
@@ -2599,11 +2599,11 @@ std::unique_ptr<rpk_socket> rpk_reader::load_rom_resource(util::archive_file &zi
sha1 = xml_get_attribute_string(rom_resource_node, "sha1", nullptr);
if (sha1 != nullptr)
{
- hash_collection actual_hashes;
- actual_hashes.compute((const UINT8 *)contents, length, hash_collection::HASH_TYPES_CRC_SHA1);
+ util::hash_collection actual_hashes;
+ actual_hashes.compute((const UINT8 *)contents, length, util::hash_collection::HASH_TYPES_CRC_SHA1);
- hash_collection expected_hashes;
- expected_hashes.add_from_string(hash_collection::HASH_SHA1, sha1, strlen(sha1));
+ util::hash_collection expected_hashes;
+ expected_hashes.add_from_string(util::hash_collection::HASH_SHA1, sha1, strlen(sha1));
if (actual_hashes != expected_hashes) throw rpk_exception(RPK_INVALID_FILE_REF, "SHA1 check failed");
}
diff --git a/src/emu/diimage.cpp b/src/emu/diimage.cpp
index 519ac7e1a2d..8b4f11ee3db 100644
--- a/src/emu/diimage.cpp
+++ b/src/emu/diimage.cpp
@@ -168,7 +168,7 @@ iodevice_t device_image_interface::device_typeid(const char *name)
using this device's partial hash if appropriate
-------------------------------------------------*/
-void device_image_interface::device_compute_hash(hash_collection &hashes, const void *data, size_t length, const char *types) const
+void device_image_interface::device_compute_hash(util::hash_collection &hashes, const void *data, size_t length, const char *types) const
{
/* retrieve the partial hash func */
device_image_partialhash_func partialhash = get_partial_hash();
@@ -464,8 +464,8 @@ bool device_image_interface::load_software_region(const char *tag, optional_shar
// to be loaded
// ****************************************************************************
-void device_image_interface::run_hash(void (*partialhash)(hash_collection &, const unsigned char *, unsigned long, const char *),
- hash_collection &hashes, const char *types)
+void device_image_interface::run_hash(void (*partialhash)(util::hash_collection &, const unsigned char *, unsigned long, const char *),
+ util::hash_collection &hashes, const char *types)
{
UINT32 size;
dynamic_buffer buf;
@@ -511,7 +511,7 @@ void device_image_interface::image_checkhash()
// retrieve the partial hash func
partialhash = get_partial_hash();
- run_hash(partialhash, m_hash, hash_collection::HASH_TYPES_ALL);
+ run_hash(partialhash, m_hash, util::hash_collection::HASH_TYPES_ALL);
}
return;
}
@@ -778,7 +778,7 @@ void device_image_interface::determine_open_plan(int is_create, UINT32 *open_pla
// correct checksums for a given software item
//-------------------------------------------------
-static void dump_wrong_and_correct_checksums(const hash_collection &hashes, const hash_collection &acthashes)
+static void dump_wrong_and_correct_checksums(const util::hash_collection &hashes, const util::hash_collection &acthashes)
{
osd_printf_error(" EXPECTED: %s\n", hashes.macro_string().c_str());
osd_printf_error(" FOUND: %s\n", acthashes.macro_string().c_str());
@@ -790,7 +790,7 @@ static void dump_wrong_and_correct_checksums(const hash_collection &hashes, cons
// and hash signatures of a file
//-------------------------------------------------
-static int verify_length_and_hash(emu_file *file, const char *name, UINT32 explength, const hash_collection &hashes)
+static int verify_length_and_hash(emu_file *file, const char *name, UINT32 explength, const util::hash_collection &hashes)
{
int retVal = 0;
if (file==nullptr) return 0;
@@ -804,8 +804,8 @@ static int verify_length_and_hash(emu_file *file, const char *name, UINT32 exple
}
// If there is no good dump known, write it
- hash_collection &acthashes = file->hashes(hashes.hash_types().c_str());
- if (hashes.flag(hash_collection::FLAG_NO_DUMP))
+ util::hash_collection &acthashes = file->hashes(hashes.hash_types().c_str());
+ if (hashes.flag(util::hash_collection::FLAG_NO_DUMP))
{
osd_printf_error("%s NO GOOD DUMP KNOWN\n", name);
}
@@ -818,7 +818,7 @@ static int verify_length_and_hash(emu_file *file, const char *name, UINT32 exple
retVal++;
}
// If it matches, but it is actually a bad dump, write it
- else if (hashes.flag(hash_collection::FLAG_BAD_DUMP))
+ else if (hashes.flag(util::hash_collection::FLAG_BAD_DUMP))
{
osd_printf_error("%s NEEDS REDUMP\n",name);
}
@@ -848,7 +848,7 @@ bool device_image_interface::load_software(software_list_device &swlist, const c
osd_file::error filerr = osd_file::error::NOT_FOUND;
UINT32 crc = 0;
- bool has_crc = hash_collection(ROM_GETHASHDATA(romp)).crc(crc);
+ bool has_crc = util::hash_collection(ROM_GETHASHDATA(romp)).crc(crc);
const software_info *swinfo = swlist.find(swname);
if (swinfo == nullptr)
@@ -911,7 +911,7 @@ bool device_image_interface::load_software(software_list_device &swlist, const c
if ((m_mame_file == nullptr) && (tag5.c_str() != nullptr))
m_mame_file = common_process_file(device().machine().options(), tag5.c_str(), has_crc, crc, romp, filerr);
- warningcount += verify_length_and_hash(m_mame_file.get(),ROM_GETNAME(romp),ROM_GETLENGTH(romp),hash_collection(ROM_GETHASHDATA(romp)));
+ warningcount += verify_length_and_hash(m_mame_file.get(),ROM_GETNAME(romp),ROM_GETLENGTH(romp), util::hash_collection(ROM_GETHASHDATA(romp)));
if (filerr == osd_file::error::NONE)
filerr = util::core_file::open_proxy(*m_mame_file, m_file);
diff --git a/src/emu/diimage.h b/src/emu/diimage.h
index d9533e36b41..75db14229e6 100644
--- a/src/emu/diimage.h
+++ b/src/emu/diimage.h
@@ -104,7 +104,7 @@ class software_info;
typedef delegate<int (device_image_interface &)> device_image_load_delegate;
typedef delegate<void (device_image_interface &)> device_image_func_delegate;
// legacy
-typedef void (*device_image_partialhash_func)(hash_collection &, const unsigned char *, unsigned long, const char *);
+typedef void (*device_image_partialhash_func)(util::hash_collection &, const unsigned char *, unsigned long, const char *);
//**************************************************************************
// MACROS
@@ -147,7 +147,7 @@ public:
static const char *device_brieftypename(iodevice_t type);
static iodevice_t device_typeid(const char *name);
- virtual void device_compute_hash(hash_collection &hashes, const void *data, size_t length, const char *types) const;
+ virtual void device_compute_hash(util::hash_collection &hashes, const void *data, size_t length, const char *types) const;
virtual bool call_load() { return FALSE; }
virtual bool call_create(int format_type, util::option_resolution *format_options) { return FALSE; }
@@ -215,7 +215,7 @@ public:
bool load_software_region(const char *tag, optional_shared_ptr<UINT8> &ptr);
UINT32 crc();
- hash_collection& hash() { return m_hash; }
+ util::hash_collection& hash() { return m_hash; }
void battery_load(void *buffer, int length, int fill);
void battery_load(void *buffer, int length, void *def_buffer);
@@ -266,7 +266,7 @@ protected:
void setup_working_directory();
bool try_change_working_directory(const char *subdir);
- void run_hash(void (*partialhash)(hash_collection &, const unsigned char *, unsigned long, const char *), hash_collection &hashes, const char *types);
+ void run_hash(void (*partialhash)(util::hash_collection &, const unsigned char *, unsigned long, const char *), util::hash_collection &hashes, const char *types);
void image_checkhash();
void update_names(const device_type device_type = nullptr, const char *inst = nullptr, const char *brief = nullptr);
@@ -317,7 +317,7 @@ protected:
int m_create_format;
util::option_resolution *m_create_args;
- hash_collection m_hash;
+ util::hash_collection m_hash;
std::string m_brief_instance_name;
std::string m_instance_name;
diff --git a/src/emu/fileio.cpp b/src/emu/fileio.cpp
index 1fe26071acb..923ea427b3f 100644
--- a/src/emu/fileio.cpp
+++ b/src/emu/fileio.cpp
@@ -197,7 +197,7 @@ emu_file::operator util::core_file &()
// hash - returns the hash for a file
//-------------------------------------------------
-hash_collection &emu_file::hashes(const char *types)
+util::hash_collection &emu_file::hashes(const char *types)
{
// determine the hashes we already have
std::string already_have = m_hashes.hash_types();
diff --git a/src/emu/fileio.h b/src/emu/fileio.h
index 411e211d17b..7775854ec23 100644
--- a/src/emu/fileio.h
+++ b/src/emu/fileio.h
@@ -91,7 +91,7 @@ public:
const char *filename() const { return m_filename.c_str(); }
const char *fullpath() const { return m_fullpath.c_str(); }
UINT32 openflags() const { return m_openflags; }
- hash_collection &hashes(const char *types);
+ util::hash_collection &hashes(const char *types);
bool restrict_to_mediapath() const { return m_restrict_to_mediapath; }
bool part_of_mediapath(std::string path);
@@ -155,7 +155,7 @@ private:
path_iterator m_mediapaths; // media-path iterator
UINT32 m_crc; // file's CRC
UINT32 m_openflags; // flags we used for the open
- hash_collection m_hashes; // collection of hashes
+ util::hash_collection m_hashes; // collection of hashes
std::unique_ptr<util::archive_file> m_zipfile; // ZIP file pointer
dynamic_buffer m_zipdata; // ZIP file data
diff --git a/src/emu/romload.cpp b/src/emu/romload.cpp
index 91a8f9bd77d..7a4d420f205 100644
--- a/src/emu/romload.cpp
+++ b/src/emu/romload.cpp
@@ -380,7 +380,7 @@ void rom_load_manager::handle_missing_file(const rom_entry *romp, std::string tr
}
/* no good dumps are okay */
- else if (hash_collection(ROM_GETHASHDATA(romp)).flag(hash_collection::FLAG_NO_DUMP))
+ else if (util::hash_collection(ROM_GETHASHDATA(romp)).flag(util::hash_collection::FLAG_NO_DUMP))
{
if (!is_chd_error)
m_errorstring.append(string_format("%s NOT FOUND (NO GOOD DUMP KNOWN)%s\n", name, tried_file_names));
@@ -403,7 +403,7 @@ void rom_load_manager::handle_missing_file(const rom_entry *romp, std::string tr
correct checksums for a given ROM
-------------------------------------------------*/
-void rom_load_manager::dump_wrong_and_correct_checksums(const hash_collection &hashes, const hash_collection &acthashes)
+void rom_load_manager::dump_wrong_and_correct_checksums(const util::hash_collection &hashes, const util::hash_collection &acthashes)
{
m_errorstring.append(string_format(" EXPECTED: %s\n", hashes.macro_string().c_str()));
m_errorstring.append(string_format(" FOUND: %s\n", acthashes.macro_string().c_str()));
@@ -415,7 +415,7 @@ void rom_load_manager::dump_wrong_and_correct_checksums(const hash_collection &h
and hash signatures of a file
-------------------------------------------------*/
-void rom_load_manager::verify_length_and_hash(const char *name, UINT32 explength, const hash_collection &hashes)
+void rom_load_manager::verify_length_and_hash(const char *name, UINT32 explength, const util::hash_collection &hashes)
{
/* we've already complained if there is no file */
if (m_file == nullptr)
@@ -430,8 +430,8 @@ void rom_load_manager::verify_length_and_hash(const char *name, UINT32 explength
}
/* If there is no good dump known, write it */
- hash_collection &acthashes = m_file->hashes(hashes.hash_types().c_str());
- if (hashes.flag(hash_collection::FLAG_NO_DUMP))
+ util::hash_collection &acthashes = m_file->hashes(hashes.hash_types().c_str());
+ if (hashes.flag(util::hash_collection::FLAG_NO_DUMP))
{
m_errorstring.append(string_format("%s NO GOOD DUMP KNOWN\n", name));
m_knownbad++;
@@ -445,7 +445,7 @@ void rom_load_manager::verify_length_and_hash(const char *name, UINT32 explength
m_warnings++;
}
/* If it matches, but it is actually a bad dump, write it */
- else if (hashes.flag(hash_collection::FLAG_BAD_DUMP))
+ else if (hashes.flag(util::hash_collection::FLAG_BAD_DUMP))
{
m_errorstring.append(string_format("%s ROM NEEDS REDUMP\n", name));
m_knownbad++;
@@ -557,7 +557,7 @@ int rom_load_manager::open_rom_file(const char *regiontag, const rom_entry *romp
/* extract CRC to use for searching */
UINT32 crc = 0;
- bool has_crc = hash_collection(ROM_GETHASHDATA(romp)).crc(crc);
+ bool has_crc = util::hash_collection(ROM_GETHASHDATA(romp)).crc(crc);
/* attempt reading up the chain through the parents. It automatically also
attempts any kind of load by checksum supported by the archives. */
@@ -928,7 +928,7 @@ void rom_load_manager::process_rom_entries(const char *regiontag, const rom_entr
if (baserom)
{
LOG(("Verifying length (%X) and checksums\n", explength));
- verify_length_and_hash(ROM_GETNAME(baserom), explength, hash_collection(ROM_GETHASHDATA(baserom)));
+ verify_length_and_hash(ROM_GETNAME(baserom), explength, util::hash_collection(ROM_GETHASHDATA(baserom)));
LOG(("Verify finished\n"));
}
@@ -1064,7 +1064,7 @@ int open_disk_image(emu_options &options, const game_driver *gamedrv, const rom_
/* otherwise, look at our parents for a CHD with an identical checksum */
/* and try to open that */
- hash_collection romphashes(ROM_GETHASHDATA(romp));
+ util::hash_collection romphashes(ROM_GETHASHDATA(romp));
for (int drv = driver_list::find(*gamedrv); drv != -1; drv = driver_list::clone(drv))
{
machine_config config(driver_list::driver(drv), options);
@@ -1075,7 +1075,7 @@ int open_disk_image(emu_options &options, const game_driver *gamedrv, const rom_
/* look for a differing name but with the same hash data */
if (strcmp(ROM_GETNAME(romp), ROM_GETNAME(rom)) != 0 &&
- romphashes == hash_collection(ROM_GETHASHDATA(rom)))
+ romphashes == util::hash_collection(ROM_GETHASHDATA(rom)))
{
/* attempt to open the properly named file, scanning up through parent directories */
filerr = osd_file::error::NOT_FOUND;
@@ -1161,7 +1161,7 @@ void rom_load_manager::process_disk_entries(const char *regiontag, const rom_ent
{
auto chd = std::make_unique<open_chd>(regiontag);
- hash_collection hashes(ROM_GETHASHDATA(romp));
+ util::hash_collection hashes(ROM_GETHASHDATA(romp));
chd_error err;
/* make the filename of the source */
@@ -1178,7 +1178,7 @@ void rom_load_manager::process_disk_entries(const char *regiontag, const rom_ent
}
/* get the header and extract the SHA1 */
- hash_collection acthashes;
+ util::hash_collection acthashes;
acthashes.add_sha1(chd->orig_chd().sha1());
/* verify the hash */
@@ -1188,7 +1188,7 @@ void rom_load_manager::process_disk_entries(const char *regiontag, const rom_ent
dump_wrong_and_correct_checksums(hashes, acthashes);
m_warnings++;
}
- else if (hashes.flag(hash_collection::FLAG_BAD_DUMP))
+ else if (hashes.flag(util::hash_collection::FLAG_BAD_DUMP))
{
m_errorstring.append(string_format("%s CHD NEEDS REDUMP\n", filename));
m_knownbad++;
diff --git a/src/emu/romload.h b/src/emu/romload.h
index 860f50cbe95..f60e14fdb55 100644
--- a/src/emu/romload.h
+++ b/src/emu/romload.h
@@ -310,8 +310,8 @@ private:
void count_roms();
void fill_random(UINT8 *base, UINT32 length);
void handle_missing_file(const rom_entry *romp, std::string tried_file_names, chd_error chderr);
- void dump_wrong_and_correct_checksums(const hash_collection &hashes, const hash_collection &acthashes);
- void verify_length_and_hash(const char *name, UINT32 explength, const hash_collection &hashes);
+ void dump_wrong_and_correct_checksums(const util::hash_collection &hashes, const util::hash_collection &acthashes);
+ void verify_length_and_hash(const char *name, UINT32 explength, const util::hash_collection &hashes);
void display_loading_rom_message(const char *name, bool from_list);
void display_rom_load_results(bool from_list);
void region_post_process(const char *rgntag, bool invert);
diff --git a/src/emu/softlist.cpp b/src/emu/softlist.cpp
index 4bd0a939711..35639f57d2e 100644
--- a/src/emu/softlist.cpp
+++ b/src/emu/softlist.cpp
@@ -738,7 +738,7 @@ void software_list_device::internal_validity_check(validity_checker &valid)
if (data->_hashdata != nullptr)
{
// make sure the hash is valid
- hash_collection hashes;
+ util::hash_collection hashes;
if (!hashes.from_internal_string(data->_hashdata))
osd_printf_error("%s: %s has rom '%s' with an invalid hash string '%s'\n", filename(), swinfo.shortname().c_str(), data->_name, data->_hashdata);
}
@@ -1272,7 +1272,7 @@ void softlist_parser::parse_data_start(const char *tagname, const char **attribu
else
{
if (!crc.empty() && !sha1.empty())
- hashdata = string_format("%c%s%c%s%s", hash_collection::HASH_CRC, crc, hash_collection::HASH_SHA1, sha1, (baddump ? BAD_DUMP : ""));
+ hashdata = string_format("%c%s%c%s%s", util::hash_collection::HASH_CRC, crc, util::hash_collection::HASH_SHA1, sha1, (baddump ? BAD_DUMP : ""));
else
parse_error("Incomplete rom hash definition");
}
@@ -1319,7 +1319,7 @@ void softlist_parser::parse_data_start(const char *tagname, const char **attribu
const bool baddump = (status == "baddump");
const bool nodump = (status == "nodump" );
const bool writeable = (writeablestr == "yes");
- std::string hashdata = string_format("%c%s%s", hash_collection::HASH_SHA1, sha1, (nodump ? NO_DUMP : (baddump ? BAD_DUMP : "")));
+ std::string hashdata = string_format("%c%s%s", util::hash_collection::HASH_SHA1, sha1, (nodump ? NO_DUMP : (baddump ? BAD_DUMP : "")));
add_rom_entry(name.c_str(), hashdata.c_str(), 0, 0, ROMENTRYTYPE_ROM | (writeable ? DISK_READWRITE : DISK_READONLY));
}
diff --git a/src/emu/validity.cpp b/src/emu/validity.cpp
index b6a90b396fb..f4c80a8f205 100644
--- a/src/emu/validity.cpp
+++ b/src/emu/validity.cpp
@@ -1477,7 +1477,7 @@ void validity_checker::validate_roms()
total_files++;
// make sure the hash is valid
- hash_collection hashes;
+ util::hash_collection hashes;
if (!hashes.from_internal_string(ROM_GETHASHDATA(romp)))
osd_printf_error("ROM '%s' has an invalid hash string '%s'\n", last_name, ROM_GETHASHDATA(romp));
}
diff --git a/src/frontend/mame/audit.cpp b/src/frontend/mame/audit.cpp
index c5fe77a254a..9dfc99940f2 100644
--- a/src/frontend/mame/audit.cpp
+++ b/src/frontend/mame/audit.cpp
@@ -72,11 +72,11 @@ m_searchpath = combinedpath.c_str();
for (const rom_entry *rom = rom_first_file(region); rom; rom = rom_next_file(rom))
{
char const *const name(ROM_GETNAME(rom));
- hash_collection const hashes(ROM_GETHASHDATA(rom));
+ util::hash_collection const hashes(ROM_GETHASHDATA(rom));
device_t *const shared_device(find_shared_device(device, name, hashes, ROM_GETLENGTH(rom)));
// count the number of files with hashes
- if (!hashes.flag(hash_collection::FLAG_NO_DUMP) && !ROM_ISOPTIONAL(rom))
+ if (!hashes.flag(util::hash_collection::FLAG_NO_DUMP) && !ROM_ISOPTIONAL(rom))
{
required++;
if (shared_device)
@@ -349,10 +349,10 @@ void media_auditor::audit_regions(const rom_entry *region, const char *locationt
// now iterate over rom definitions
for (const rom_entry *rom = rom_first_file(region); rom; rom = rom_next_file(rom))
{
- hash_collection const hashes(ROM_GETHASHDATA(rom));
+ util::hash_collection const hashes(ROM_GETHASHDATA(rom));
// count the number of files with hashes
- if (!hashes.flag(hash_collection::FLAG_NO_DUMP) && !ROM_ISOPTIONAL(rom))
+ if (!hashes.flag(util::hash_collection::FLAG_NO_DUMP) && !ROM_ISOPTIONAL(rom))
required++;
audit_record const *record = nullptr;
@@ -426,10 +426,10 @@ media_auditor::audit_record &media_auditor::audit_one_disk(const rom_entry *rom,
// if we succeeded, get the hashes
if (err == CHDERR_NONE)
{
- hash_collection hashes;
+ util::hash_collection hashes;
// if there's a SHA1 hash, add them to the output hash
- if (source.sha1() != sha1_t::null)
+ if (source.sha1() != util::sha1_t::null)
hashes.add_sha1(source.sha1());
// update the actual values
@@ -452,7 +452,7 @@ void media_auditor::compute_status(audit_record &record, const rom_entry *rom, b
// if not found, provide more details
if (!found)
{
- if (record.expected_hashes().flag(hash_collection::FLAG_NO_DUMP))
+ if (record.expected_hashes().flag(util::hash_collection::FLAG_NO_DUMP))
record.set_status(audit_status::NOT_FOUND, audit_substatus::NOT_FOUND_NODUMP);
else if (ROM_ISOPTIONAL(rom))
record.set_status(audit_status::NOT_FOUND, audit_substatus::NOT_FOUND_OPTIONAL);
@@ -463,11 +463,11 @@ void media_auditor::compute_status(audit_record &record, const rom_entry *rom, b
{
if (record.expected_length() != record.actual_length())
record.set_status(audit_status::FOUND_INVALID, audit_substatus::FOUND_WRONG_LENGTH);
- else if (record.expected_hashes().flag(hash_collection::FLAG_NO_DUMP))
+ else if (record.expected_hashes().flag(util::hash_collection::FLAG_NO_DUMP))
record.set_status(audit_status::GOOD, audit_substatus::FOUND_NODUMP);
else if (record.expected_hashes() != record.actual_hashes())
record.set_status(audit_status::FOUND_INVALID, audit_substatus::FOUND_BAD_CHECKSUM);
- else if (record.expected_hashes().flag(hash_collection::FLAG_BAD_DUMP))
+ else if (record.expected_hashes().flag(util::hash_collection::FLAG_BAD_DUMP))
record.set_status(audit_status::GOOD, audit_substatus::GOOD_NEEDS_REDUMP);
else
record.set_status(audit_status::GOOD, audit_substatus::GOOD);
@@ -480,9 +480,9 @@ void media_auditor::compute_status(audit_record &record, const rom_entry *rom, b
// shares a media entry with the same hashes
//-------------------------------------------------
-device_t *media_auditor::find_shared_device(device_t &device, const char *name, const hash_collection &romhashes, UINT64 romlength)
+device_t *media_auditor::find_shared_device(device_t &device, const char *name, const util::hash_collection &romhashes, UINT64 romlength)
{
- bool const dumped = !romhashes.flag(hash_collection::FLAG_NO_DUMP);
+ bool const dumped = !romhashes.flag(util::hash_collection::FLAG_NO_DUMP);
// special case for non-root devices
device_t *highest_device = nullptr;
@@ -494,7 +494,7 @@ device_t *media_auditor::find_shared_device(device_t &device, const char *name,
{
if (ROM_GETLENGTH(rom) == romlength)
{
- hash_collection hashes(ROM_GETHASHDATA(rom));
+ util::hash_collection hashes(ROM_GETHASHDATA(rom));
if ((dumped && hashes == romhashes) || (!dumped && ROM_GETNAME(rom) == name))
highest_device = &device;
}
@@ -514,7 +514,7 @@ device_t *media_auditor::find_shared_device(device_t &device, const char *name,
{
if (ROM_GETLENGTH(rom) == romlength)
{
- hash_collection hashes(ROM_GETHASHDATA(rom));
+ util::hash_collection hashes(ROM_GETHASHDATA(rom));
if ((dumped && hashes == romhashes) || (!dumped && ROM_GETNAME(rom) == name))
highest_device = &scandevice;
}
diff --git a/src/frontend/mame/audit.h b/src/frontend/mame/audit.h
index a9e3933083c..1999fb229fa 100644
--- a/src/frontend/mame/audit.h
+++ b/src/frontend/mame/audit.h
@@ -107,8 +107,8 @@ public:
const char *name() const { return m_name; }
UINT64 expected_length() const { return m_explength; }
UINT64 actual_length() const { return m_length; }
- const hash_collection &expected_hashes() const { return m_exphashes; }
- const hash_collection &actual_hashes() const { return m_hashes; }
+ const util::hash_collection &expected_hashes() const { return m_exphashes; }
+ const util::hash_collection &actual_hashes() const { return m_hashes; }
device_t *shared_device() const { return m_shared_device; }
// setters
@@ -118,13 +118,13 @@ public:
m_substatus = substatus;
}
- void set_actual(const hash_collection &hashes, UINT64 length = 0)
+ void set_actual(const util::hash_collection &hashes, UINT64 length = 0)
{
m_hashes = hashes;
m_length = length;
}
- void set_actual(hash_collection &&hashes, UINT64 length = 0)
+ void set_actual(util::hash_collection &&hashes, UINT64 length = 0)
{
m_hashes = std::move(hashes);
m_length = length;
@@ -143,8 +143,8 @@ public:
const char * m_name; // name of item
UINT64 m_explength; // expected length of item
UINT64 m_length; // actual length of item
- hash_collection m_exphashes; // expected hash data
- hash_collection m_hashes; // actual hash information
+ util::hash_collection m_exphashes; // expected hash data
+ util::hash_collection m_hashes; // actual hash information
device_t * m_shared_device; // device that shares the rom
};
using record_list = std::list<audit_record>;
@@ -168,7 +168,7 @@ private:
audit_record &audit_one_rom(const rom_entry *rom);
audit_record &audit_one_disk(const rom_entry *rom, const char *locationtag);
void compute_status(audit_record &record, const rom_entry *rom, bool found);
- device_t *find_shared_device(device_t &device, const char *name, const hash_collection &romhashes, UINT64 romlength);
+ device_t *find_shared_device(device_t &device, const char *name, const util::hash_collection &romhashes, UINT64 romlength);
// internal state
record_list m_record_list;
diff --git a/src/frontend/mame/clifront.cpp b/src/frontend/mame/clifront.cpp
index 5f73c8ddea0..0dfaa4c97dd 100644
--- a/src/frontend/mame/clifront.cpp
+++ b/src/frontend/mame/clifront.cpp
@@ -129,7 +129,7 @@ public:
void identify(const char *name);
void identify_file(const char *name);
void identify_data(const char *name, const UINT8 *data, int length);
- int find_by_hash(const hash_collection &hashes, int length);
+ int find_by_hash(const util::hash_collection &hashes, int length);
private:
// internal state
@@ -260,8 +260,8 @@ void media_identifier::identify_file(const char *name)
}
// otherwise, get the hash collection for this CHD
- hash_collection hashes;
- if (chd.sha1() != sha1_t::null)
+ util::hash_collection hashes;
+ if (chd.sha1() != util::sha1_t::null)
hashes.add_sha1(chd.sha1());
// determine whether this file exists
@@ -309,8 +309,8 @@ void media_identifier::identify_data(const char *name, const UINT8 *data, int le
}
// compute the hash of the data
- hash_collection hashes;
- hashes.compute(data, length, hash_collection::HASH_TYPES_CRC_SHA1);
+ util::hash_collection hashes;
+ hashes.compute(data, length, util::hash_collection::HASH_TYPES_CRC_SHA1);
// output the name
m_total++;
@@ -334,7 +334,7 @@ void media_identifier::identify_data(const char *name, const UINT8 *data, int le
// of drivers by hash
//-------------------------------------------------
-int media_identifier::find_by_hash(const hash_collection &hashes, int length)
+int media_identifier::find_by_hash(const util::hash_collection &hashes, int length)
{
int found = 0;
std::unordered_set<std::string> listnames;
@@ -352,10 +352,10 @@ int media_identifier::find_by_hash(const hash_collection &hashes, int length)
for (const rom_entry *region = rom_first_region(device); region != nullptr; region = rom_next_region(region))
for (const rom_entry *rom = rom_first_file(region); rom != nullptr; rom = rom_next_file(rom))
{
- hash_collection romhashes(ROM_GETHASHDATA(rom));
- if (!romhashes.flag(hash_collection::FLAG_NO_DUMP) && hashes == romhashes)
+ util::hash_collection romhashes(ROM_GETHASHDATA(rom));
+ if (!romhashes.flag(util::hash_collection::FLAG_NO_DUMP) && hashes == romhashes)
{
- bool baddump = romhashes.flag(hash_collection::FLAG_BAD_DUMP);
+ bool baddump = romhashes.flag(util::hash_collection::FLAG_BAD_DUMP);
// output information about the match
if (found)
@@ -377,10 +377,10 @@ int media_identifier::find_by_hash(const hash_collection &hashes, int length)
for (const rom_entry *region = part.romdata(); region != nullptr; region = rom_next_region(region))
for (const rom_entry *rom = rom_first_file(region); rom != nullptr; rom = rom_next_file(rom))
{
- hash_collection romhashes(ROM_GETHASHDATA(rom));
+ util::hash_collection romhashes(ROM_GETHASHDATA(rom));
if (hashes == romhashes)
{
- bool baddump = romhashes.flag(hash_collection::FLAG_BAD_DUMP);
+ bool baddump = romhashes.flag(util::hash_collection::FLAG_BAD_DUMP);
// output information about the match
if (found)
@@ -821,7 +821,7 @@ void cli_frontend::listcrc(const char *gamename)
{
// if we have a CRC, display it
UINT32 crc;
- if (hash_collection(ROM_GETHASHDATA(rom)).crc(crc))
+ if (util::hash_collection(ROM_GETHASHDATA(rom)).crc(crc))
osd_printf_info("%08x %-16s \t %-8s \t %s\n", crc, ROM_GETNAME(rom), device.shortname(), device.name());
}
}
@@ -872,10 +872,10 @@ void cli_frontend::listroms(const char *gamename)
osd_printf_info(" ");
// output the hash data
- hash_collection hashes(ROM_GETHASHDATA(rom));
- if (!hashes.flag(hash_collection::FLAG_NO_DUMP))
+ util::hash_collection hashes(ROM_GETHASHDATA(rom));
+ if (!hashes.flag(util::hash_collection::FLAG_NO_DUMP))
{
- if (hashes.flag(hash_collection::FLAG_BAD_DUMP))
+ if (hashes.flag(util::hash_collection::FLAG_BAD_DUMP))
osd_printf_info(" BAD");
osd_printf_info(" %s", hashes.macro_string().c_str());
}
@@ -1436,8 +1436,8 @@ void cli_frontend::output_single_softlist(FILE *out, software_list_device &swlis
fprintf( out, "\t\t\t\t\t<disk name=\"%s\"", xml_normalize_string(ROM_GETNAME(rom)) );
/* dump checksum information only if there is a known dump */
- hash_collection hashes(ROM_GETHASHDATA(rom));
- if ( !hashes.flag(hash_collection::FLAG_NO_DUMP) )
+ util::hash_collection hashes(ROM_GETHASHDATA(rom));
+ if ( !hashes.flag(util::hash_collection::FLAG_NO_DUMP) )
fprintf( out, " %s", hashes.attribute_string().c_str() );
else
fprintf( out, " status=\"nodump\"" );
diff --git a/src/frontend/mame/info.cpp b/src/frontend/mame/info.cpp
index db9f003f09d..ef7b4bcf61f 100644
--- a/src/frontend/mame/info.cpp
+++ b/src/frontend/mame/info.cpp
@@ -567,8 +567,8 @@ void info_xml_creator::output_rom(device_t &device)
continue;
// if we have a valid ROM and we are a clone, see if we can find the parent ROM
- hash_collection hashes(ROM_GETHASHDATA(rom));
- if (!hashes.flag(hash_collection::FLAG_NO_DUMP))
+ util::hash_collection hashes(ROM_GETHASHDATA(rom));
+ if (!hashes.flag(util::hash_collection::FLAG_NO_DUMP))
merge_name = get_merge_name(hashes);
if (&device != &m_drivlist.config().root_device())
merge_name = nullptr;
@@ -604,7 +604,7 @@ void info_xml_creator::output_rom(device_t &device)
util::stream_format(output, " size=\"%d\"", rom_file_size(rom));
// dump checksum information only if there is a known dump
- if (!hashes.flag(hash_collection::FLAG_NO_DUMP))
+ if (!hashes.flag(util::hash_collection::FLAG_NO_DUMP))
{
// iterate over hash function types and print m_output their values
output << " " << hashes.attribute_string();
@@ -1603,7 +1603,7 @@ void info_xml_creator::output_ramoptions()
// parent set
//-------------------------------------------------
-const char *info_xml_creator::get_merge_name(const hash_collection &romhashes)
+const char *info_xml_creator::get_merge_name(const util::hash_collection &romhashes)
{
// walk the parent chain
const char *merge_name = nullptr;
@@ -1614,8 +1614,8 @@ const char *info_xml_creator::get_merge_name(const hash_collection &romhashes)
for (const rom_entry *pregion = rom_first_region(*device); pregion != nullptr; pregion = rom_next_region(pregion))
for (const rom_entry *prom = rom_first_file(pregion); prom != nullptr; prom = rom_next_file(prom))
{
- hash_collection phashes(ROM_GETHASHDATA(prom));
- if (!phashes.flag(hash_collection::FLAG_NO_DUMP) && romhashes == phashes)
+ util::hash_collection phashes(ROM_GETHASHDATA(prom));
+ if (!phashes.flag(util::hash_collection::FLAG_NO_DUMP) && romhashes == phashes)
{
// stop when we find a match
merge_name = ROM_GETNAME(prom);
diff --git a/src/frontend/mame/info.h b/src/frontend/mame/info.h
index 4ba53f885ac..29f931b5c4a 100644
--- a/src/frontend/mame/info.h
+++ b/src/frontend/mame/info.h
@@ -54,7 +54,7 @@ private:
void output_one_device(device_t &device, const char *devtag);
void output_devices();
- const char *get_merge_name(const hash_collection &romhashes);
+ const char *get_merge_name(const util::hash_collection &romhashes);
// internal state
FILE * m_output;
diff --git a/src/frontend/mame/ui/selgame.cpp b/src/frontend/mame/ui/selgame.cpp
index 6bb2cf9d1f9..4af579d0c62 100644
--- a/src/frontend/mame/ui/selgame.cpp
+++ b/src/frontend/mame/ui/selgame.cpp
@@ -687,8 +687,8 @@ void menu_select_game::build_available_list()
for (; !ROMENTRY_ISEND(rom) && noroms == true; ++rom)
if (ROMENTRY_ISFILE(rom))
{
- hash_collection hashes(ROM_GETHASHDATA(rom));
- if (!hashes.flag(hash_collection::FLAG_NO_DUMP) && !ROM_ISOPTIONAL(rom))
+ util::hash_collection hashes(ROM_GETHASHDATA(rom));
+ if (!hashes.flag(util::hash_collection::FLAG_NO_DUMP) && !ROM_ISOPTIONAL(rom))
noroms = false;
}
@@ -711,8 +711,8 @@ void menu_select_game::build_available_list()
{
if (ROMENTRY_ISFILE(rom))
{
- hash_collection hashes(ROM_GETHASHDATA(rom));
- if (hashes.flag(hash_collection::FLAG_NO_DUMP) || ROM_ISOPTIONAL(rom))
+ util::hash_collection hashes(ROM_GETHASHDATA(rom));
+ if (hashes.flag(util::hash_collection::FLAG_NO_DUMP) || ROM_ISOPTIONAL(rom))
continue;
UINT64 lenght = ROM_GETLENGTH(rom);
@@ -721,8 +721,8 @@ void menu_select_game::build_available_list()
{
if (ROMENTRY_ISFILE(parentrom) && ROM_GETLENGTH(parentrom) == lenght)
{
- hash_collection parenthashes(ROM_GETHASHDATA(parentrom));
- if (parenthashes.flag(hash_collection::FLAG_NO_DUMP) || ROM_ISOPTIONAL(parentrom))
+ util::hash_collection parenthashes(ROM_GETHASHDATA(parentrom));
+ if (parenthashes.flag(util::hash_collection::FLAG_NO_DUMP) || ROM_ISOPTIONAL(parentrom))
continue;
if (hashes == parenthashes)
diff --git a/src/lib/util/chd.cpp b/src/lib/util/chd.cpp
index 55bc313102a..fd6f1c5ad1a 100644
--- a/src/lib/util/chd.cpp
+++ b/src/lib/util/chd.cpp
@@ -115,7 +115,7 @@ struct chd_file::metadata_entry
struct chd_file::metadata_hash
{
UINT8 tag[4]; // tag of the metadata in big-endian
- sha1_t sha1; // hash data
+ util::sha1_t sha1; // hash data
};
@@ -159,9 +159,9 @@ inline void chd_file::be_write(UINT8 *base, UINT64 value, int numbytes)
// stream in bigendian order
//-------------------------------------------------
-inline sha1_t chd_file::be_read_sha1(const UINT8 *base)
+inline util::sha1_t chd_file::be_read_sha1(const UINT8 *base)
{
- sha1_t result;
+ util::sha1_t result;
memcpy(&result.m_raw[0], base, sizeof(result.m_raw));
return result;
}
@@ -172,7 +172,7 @@ inline sha1_t chd_file::be_read_sha1(const UINT8 *base)
// stream in bigendian order
//-------------------------------------------------
-inline void chd_file::be_write_sha1(UINT8 *base, sha1_t value)
+inline void chd_file::be_write_sha1(UINT8 *base, util::sha1_t value)
{
memcpy(base, &value.m_raw[0], sizeof(value.m_raw));
}
@@ -311,7 +311,7 @@ chd_file::~chd_file()
}
/**
- * @fn sha1_t chd_file::sha1()
+ * @fn util::sha1_t chd_file::sha1()
*
* @brief -------------------------------------------------
* sha1 - return our SHA1 value
@@ -320,24 +320,24 @@ chd_file::~chd_file()
* @return A sha1_t.
*/
-sha1_t chd_file::sha1()
+util::sha1_t chd_file::sha1()
{
try
{
// read the big-endian version
- UINT8 rawbuf[sizeof(sha1_t)];
+ UINT8 rawbuf[sizeof(util::sha1_t)];
file_read(m_sha1_offset, rawbuf, sizeof(rawbuf));
return be_read_sha1(rawbuf);
}
catch (chd_error &)
{
// on failure, return nullptr
- return sha1_t::null;
+ return util::sha1_t::null;
}
}
/**
- * @fn sha1_t chd_file::raw_sha1()
+ * @fn util::sha1_t chd_file::raw_sha1()
*
* @brief -------------------------------------------------
* raw_sha1 - return our raw SHA1 value
@@ -349,7 +349,7 @@ sha1_t chd_file::sha1()
* @return A sha1_t.
*/
-sha1_t chd_file::raw_sha1()
+util::sha1_t chd_file::raw_sha1()
{
try
{
@@ -358,19 +358,19 @@ sha1_t chd_file::raw_sha1()
throw CHDERR_UNSUPPORTED_VERSION;
// read the big-endian version
- UINT8 rawbuf[sizeof(sha1_t)];
+ UINT8 rawbuf[sizeof(util::sha1_t)];
file_read(m_rawsha1_offset, rawbuf, sizeof(rawbuf));
return be_read_sha1(rawbuf);
}
catch (chd_error &)
{
// on failure, return nullptr
- return sha1_t::null;
+ return util::sha1_t::null;
}
}
/**
- * @fn sha1_t chd_file::parent_sha1()
+ * @fn util::sha1_t chd_file::parent_sha1()
*
* @brief -------------------------------------------------
* parent_sha1 - return our parent's SHA1 value
@@ -382,7 +382,7 @@ sha1_t chd_file::raw_sha1()
* @return A sha1_t.
*/
-sha1_t chd_file::parent_sha1()
+util::sha1_t chd_file::parent_sha1()
{
try
{
@@ -391,14 +391,14 @@ sha1_t chd_file::parent_sha1()
throw CHDERR_UNSUPPORTED_VERSION;
// read the big-endian version
- UINT8 rawbuf[sizeof(sha1_t)];
+ UINT8 rawbuf[sizeof(util::sha1_t)];
file_read(m_parentsha1_offset, rawbuf, sizeof(rawbuf));
return be_read_sha1(rawbuf);
}
catch (chd_error &)
{
// on failure, return nullptr
- return sha1_t::null;
+ return util::sha1_t::null;
}
}
@@ -523,10 +523,10 @@ chd_error chd_file::hunk_info(UINT32 hunknum, chd_codec_type &compressor, UINT32
* @param rawdata The rawdata.
*/
-void chd_file::set_raw_sha1(sha1_t rawdata)
+void chd_file::set_raw_sha1(util::sha1_t rawdata)
{
// create a big-endian version
- UINT8 rawbuf[sizeof(sha1_t)];
+ UINT8 rawbuf[sizeof(util::sha1_t)];
be_write_sha1(rawbuf, rawdata);
// write to the header
@@ -551,14 +551,14 @@ void chd_file::set_raw_sha1(sha1_t rawdata)
* @param parent The parent.
*/
-void chd_file::set_parent_sha1(sha1_t parent)
+void chd_file::set_parent_sha1(util::sha1_t parent)
{
// if no file, fail
if (m_file == nullptr)
throw CHDERR_INVALID_FILE;
// create a big-endian version
- UINT8 rawbuf[sizeof(sha1_t)];
+ UINT8 rawbuf[sizeof(util::sha1_t)];
be_write_sha1(rawbuf, parent);
// write to the header
@@ -902,13 +902,13 @@ chd_error chd_file::read_hunk(UINT32 hunknum, void *buffer)
blocklen = be_read(&rawmap[12], 2) + (rawmap[14] << 16);
file_read(blockoffs, &m_compressed[0], blocklen);
m_decompressor[0]->decompress(&m_compressed[0], blocklen, dest, m_hunkbytes);
- if (!(rawmap[15] & V34_MAP_ENTRY_FLAG_NO_CRC) && dest != nullptr && crc32_creator::simple(dest, m_hunkbytes) != blockcrc)
+ if (!(rawmap[15] & V34_MAP_ENTRY_FLAG_NO_CRC) && dest != nullptr && util::crc32_creator::simple(dest, m_hunkbytes) != blockcrc)
throw CHDERR_DECOMPRESSION_ERROR;
return CHDERR_NONE;
case V34_MAP_ENTRY_TYPE_UNCOMPRESSED:
file_read(blockoffs, dest, m_hunkbytes);
- if (!(rawmap[15] & V34_MAP_ENTRY_FLAG_NO_CRC) && crc32_creator::simple(dest, m_hunkbytes) != blockcrc)
+ if (!(rawmap[15] & V34_MAP_ENTRY_FLAG_NO_CRC) && util::crc32_creator::simple(dest, m_hunkbytes) != blockcrc)
throw CHDERR_DECOMPRESSION_ERROR;
return CHDERR_NONE;
@@ -916,7 +916,7 @@ chd_error chd_file::read_hunk(UINT32 hunknum, void *buffer)
be_write(dest, blockoffs, 8);
for (UINT32 bytes = 8; bytes < m_hunkbytes; bytes++)
dest[bytes] = dest[bytes - 8];
- if (!(rawmap[15] & V34_MAP_ENTRY_FLAG_NO_CRC) && crc32_creator::simple(dest, m_hunkbytes) != blockcrc)
+ if (!(rawmap[15] & V34_MAP_ENTRY_FLAG_NO_CRC) && util::crc32_creator::simple(dest, m_hunkbytes) != blockcrc)
throw CHDERR_DECOMPRESSION_ERROR;
return CHDERR_NONE;
@@ -961,15 +961,15 @@ chd_error chd_file::read_hunk(UINT32 hunknum, void *buffer)
case COMPRESSION_TYPE_3:
file_read(blockoffs, &m_compressed[0], blocklen);
m_decompressor[rawmap[0]]->decompress(&m_compressed[0], blocklen, dest, m_hunkbytes);
- if (!m_decompressor[rawmap[0]]->lossy() && dest != nullptr && crc16_creator::simple(dest, m_hunkbytes) != blockcrc)
+ if (!m_decompressor[rawmap[0]]->lossy() && dest != nullptr && util::crc16_creator::simple(dest, m_hunkbytes) != blockcrc)
throw CHDERR_DECOMPRESSION_ERROR;
- if (m_decompressor[rawmap[0]]->lossy() && crc16_creator::simple(&m_compressed[0], blocklen) != blockcrc)
+ if (m_decompressor[rawmap[0]]->lossy() && util::crc16_creator::simple(&m_compressed[0], blocklen) != blockcrc)
throw CHDERR_DECOMPRESSION_ERROR;
return CHDERR_NONE;
case COMPRESSION_NONE:
file_read(blockoffs, dest, m_hunkbytes);
- if (crc16_creator::simple(dest, m_hunkbytes) != blockcrc)
+ if (util::crc16_creator::simple(dest, m_hunkbytes) != blockcrc)
throw CHDERR_DECOMPRESSION_ERROR;
return CHDERR_NONE;
@@ -1558,7 +1558,7 @@ chd_error chd_file::clone_all_metadata(chd_file &source)
}
/**
- * @fn sha1_t chd_file::compute_overall_sha1(sha1_t rawsha1)
+ * @fn util::sha1_t chd_file::compute_overall_sha1(sha1_t rawsha1)
*
* @brief -------------------------------------------------
* compute_overall_sha1 - iterate through the metadata and compute the overall hash of
@@ -1570,7 +1570,7 @@ chd_error chd_file::clone_all_metadata(chd_file &source)
* @return The calculated overall sha 1.
*/
-sha1_t chd_file::compute_overall_sha1(sha1_t rawsha1)
+util::sha1_t chd_file::compute_overall_sha1(util::sha1_t rawsha1)
{
// only works for v4 and above
if (m_version < 4)
@@ -1593,7 +1593,7 @@ sha1_t chd_file::compute_overall_sha1(sha1_t rawsha1)
// create an entry for this metadata and add it
metadata_hash hashentry;
be_write(hashentry.tag, metaentry.metatag, 4);
- hashentry.sha1 = sha1_creator::simple(&filedata[0], metaentry.length);
+ hashentry.sha1 = util::sha1_creator::simple(&filedata[0], metaentry.length);
hasharray.push_back(hashentry);
}
@@ -1602,7 +1602,7 @@ sha1_t chd_file::compute_overall_sha1(sha1_t rawsha1)
qsort(&hasharray[0], hasharray.size(), sizeof(hasharray[0]), metadata_hash_compare);
// read the raw data hash from our header and start a new SHA1 with that data
- sha1_creator overall_sha1;
+ util::sha1_creator overall_sha1;
overall_sha1.append(&rawsha1, sizeof(rawsha1));
if (!hasharray.empty())
overall_sha1.append(&hasharray[0], hasharray.size() * sizeof(hasharray[0]));
@@ -1750,7 +1750,7 @@ UINT32 chd_file::guess_unitbytes()
* @param [in,out] parentsha1 The first parentsha.
*/
-void chd_file::parse_v3_header(UINT8 *rawheader, sha1_t &parentsha1)
+void chd_file::parse_v3_header(UINT8 *rawheader, util::sha1_t &parentsha1)
{
// verify header length
if (be_read(&rawheader[8], 4) != V3_HEADER_SIZE)
@@ -1813,7 +1813,7 @@ void chd_file::parse_v3_header(UINT8 *rawheader, sha1_t &parentsha1)
* @param [in,out] parentsha1 The first parentsha.
*/
-void chd_file::parse_v4_header(UINT8 *rawheader, sha1_t &parentsha1)
+void chd_file::parse_v4_header(UINT8 *rawheader, util::sha1_t &parentsha1)
{
// verify header length
if (be_read(&rawheader[8], 4) != V4_HEADER_SIZE)
@@ -1873,7 +1873,7 @@ void chd_file::parse_v4_header(UINT8 *rawheader, sha1_t &parentsha1)
* @param [in,out] parentsha1 The first parentsha.
*/
-void chd_file::parse_v5_header(UINT8 *rawheader, sha1_t &parentsha1)
+void chd_file::parse_v5_header(UINT8 *rawheader, util::sha1_t &parentsha1)
{
// verify header length
if (be_read(&rawheader[8], 4) != V5_HEADER_SIZE)
@@ -1928,7 +1928,7 @@ chd_error chd_file::compress_v5_map()
try
{
// first get a CRC-16 of the original rawmap
- crc16_t mapcrc = crc16_creator::simple(&m_rawmap[0], m_hunkcount * 12);
+ util::crc16_t mapcrc = util::crc16_creator::simple(&m_rawmap[0], m_hunkcount * 12);
// create a buffer to hold the RLE data
dynamic_buffer compression_rle(m_hunkcount);
@@ -2244,7 +2244,7 @@ void chd_file::decompress_v5_map()
}
// verify the final CRC
- if (crc16_creator::simple(&m_rawmap[0], m_hunkcount * 12) != mapcrc)
+ if (util::crc16_creator::simple(&m_rawmap[0], m_hunkcount * 12) != mapcrc)
throw CHDERR_DECOMPRESSION_ERROR;
}
@@ -2310,15 +2310,15 @@ chd_error chd_file::create_common()
be_write(&rawheader[48], m_metaoffset, 8);
be_write(&rawheader[56], m_hunkbytes, 4);
be_write(&rawheader[60], m_unitbytes, 4);
- be_write_sha1(&rawheader[64], sha1_t::null);
- be_write_sha1(&rawheader[84], sha1_t::null);
- be_write_sha1(&rawheader[104], (m_parent != nullptr) ? m_parent->sha1() : sha1_t::null);
+ be_write_sha1(&rawheader[64], util::sha1_t::null);
+ be_write_sha1(&rawheader[84], util::sha1_t::null);
+ be_write_sha1(&rawheader[104], (m_parent != nullptr) ? m_parent->sha1() : util::sha1_t::null);
// write the resulting header
file_write(0, rawheader, sizeof(rawheader));
// parse it back out to set up fields appropriately
- sha1_t parentsha1;
+ util::sha1_t parentsha1;
parse_v5_header(rawheader, parentsha1);
// writes are obviously permitted; reads only if uncompressed
@@ -2403,7 +2403,7 @@ chd_error chd_file::open_common(bool writeable)
throw CHDERR_UNSUPPORTED_VERSION;
// read the header if we support it
- sha1_t parentsha1 = sha1_t::null;
+ util::sha1_t parentsha1 = util::sha1_t::null;
switch (m_version)
{
case 3: parse_v3_header(rawheader, parentsha1); break;
@@ -2416,7 +2416,7 @@ chd_error chd_file::open_common(bool writeable)
throw CHDERR_FILE_NOT_WRITEABLE;
// make sure we have a parent if we need one (and don't if we don't)
- if (parentsha1 != sha1_t::null)
+ if (parentsha1 != util::sha1_t::null)
{
if (m_parent == nullptr)
m_parent_missing = true;
@@ -2535,7 +2535,7 @@ void chd_file::verify_proper_compression_append(UINT32 hunknum)
* @param crc16 The CRC 16.
*/
-void chd_file::hunk_write_compressed(UINT32 hunknum, INT8 compression, const UINT8 *compressed, UINT32 complength, crc16_t crc16)
+void chd_file::hunk_write_compressed(UINT32 hunknum, INT8 compression, const UINT8 *compressed, UINT32 complength, util::crc16_t crc16)
{
// verify that we are appending properly to a compressed file
verify_proper_compression_append(hunknum);
@@ -2711,10 +2711,10 @@ void chd_file::metadata_update_hash()
return;
// compute the new overall hash
- sha1_t fullsha1 = compute_overall_sha1(raw_sha1());
+ util::sha1_t fullsha1 = compute_overall_sha1(raw_sha1());
// create a big-endian version
- UINT8 rawbuf[sizeof(sha1_t)];
+ UINT8 rawbuf[sizeof(util::sha1_t)];
be_write_sha1(&rawbuf[0], fullsha1);
// write to the header
@@ -3033,8 +3033,8 @@ void chd_file_compressor::async_walk_parent(work_item &item)
units = 1;
for (UINT32 unit = 0; unit < units; unit++)
{
- item.m_hash[unit].m_crc16 = crc16_creator::simple(item.m_data + unit * unit_bytes(), hunk_bytes());
- item.m_hash[unit].m_sha1 = sha1_creator::simple(item.m_data + unit * unit_bytes(), hunk_bytes());
+ item.m_hash[unit].m_crc16 = util::crc16_creator::simple(item.m_data + unit * unit_bytes(), hunk_bytes());
+ item.m_hash[unit].m_sha1 = util::sha1_creator::simple(item.m_data + unit * unit_bytes(), hunk_bytes());
}
item.m_status = WS_COMPLETE;
}
@@ -3075,8 +3075,8 @@ void chd_file_compressor::async_compress_hunk(work_item &item, int threadid)
item.m_codecs = m_codecs[threadid];
// compute CRC-16 and SHA-1 hashes
- item.m_hash[0].m_crc16 = crc16_creator::simple(item.m_data, hunk_bytes());
- item.m_hash[0].m_sha1 = sha1_creator::simple(item.m_data, hunk_bytes());
+ item.m_hash[0].m_crc16 = util::crc16_creator::simple(item.m_data, hunk_bytes());
+ item.m_hash[0].m_sha1 = util::sha1_creator::simple(item.m_data, hunk_bytes());
// find the best compression scheme, unless we already have a self or parent match
// (note we may miss a self match from blocks not yet added, but this just results in extra work)
@@ -3254,7 +3254,7 @@ void chd_file_compressor::hashmap::reset()
* @return An UINT64.
*/
-UINT64 chd_file_compressor::hashmap::find(crc16_t crc16, sha1_t sha1)
+UINT64 chd_file_compressor::hashmap::find(util::crc16_t crc16, util::sha1_t sha1)
{
// look up the entry in the map
for (entry_t *entry = m_map[crc16]; entry != nullptr; entry = entry->m_next)
@@ -3275,7 +3275,7 @@ UINT64 chd_file_compressor::hashmap::find(crc16_t crc16, sha1_t sha1)
* @param sha1 The first sha.
*/
-void chd_file_compressor::hashmap::add(UINT64 itemnum, crc16_t crc16, sha1_t sha1)
+void chd_file_compressor::hashmap::add(UINT64 itemnum, util::crc16_t crc16, util::sha1_t sha1)
{
// add to the appropriate map
if (m_block_list->m_nextalloc == ARRAY_LENGTH(m_block_list->m_array))
diff --git a/src/lib/util/chd.h b/src/lib/util/chd.h
index a3b0e0c7304..b0eb4143374 100644
--- a/src/lib/util/chd.h
+++ b/src/lib/util/chd.h
@@ -317,14 +317,14 @@ public:
bool compressed() const { return (m_compression[0] != CHD_CODEC_NONE); }
chd_codec_type compression(int index) const { return m_compression[index]; }
chd_file *parent() const { return m_parent; }
- sha1_t sha1();
- sha1_t raw_sha1();
- sha1_t parent_sha1();
+ util::sha1_t sha1();
+ util::sha1_t raw_sha1();
+ util::sha1_t parent_sha1();
chd_error hunk_info(UINT32 hunknum, chd_codec_type &compressor, UINT32 &compbytes);
// setters
- void set_raw_sha1(sha1_t rawdata);
- void set_parent_sha1(sha1_t parent);
+ void set_raw_sha1(util::sha1_t rawdata);
+ void set_parent_sha1(util::sha1_t parent);
// file create
chd_error create(const char *filename, UINT64 logicalbytes, UINT32 hunkbytes, UINT32 unitbytes, chd_codec_type compression[4]);
@@ -359,7 +359,7 @@ public:
chd_error clone_all_metadata(chd_file &source);
// hashing helper
- sha1_t compute_overall_sha1(sha1_t rawsha1);
+ util::sha1_t compute_overall_sha1(util::sha1_t rawsha1);
// codec interfaces
chd_error codec_configure(chd_codec_type codec, int param, void *config);
@@ -374,8 +374,8 @@ private:
// inline helpers
UINT64 be_read(const UINT8 *base, int numbytes);
void be_write(UINT8 *base, UINT64 value, int numbytes);
- sha1_t be_read_sha1(const UINT8 *base);
- void be_write_sha1(UINT8 *base, sha1_t value);
+ util::sha1_t be_read_sha1(const UINT8 *base);
+ void be_write_sha1(UINT8 *base, util::sha1_t value);
void file_read(UINT64 offset, void *dest, UINT32 length);
void file_write(UINT64 offset, const void *source, UINT32 length);
UINT64 file_append(const void *source, UINT32 length, UINT32 alignment = 0);
@@ -383,16 +383,16 @@ private:
// internal helpers
UINT32 guess_unitbytes();
- void parse_v3_header(UINT8 *rawheader, sha1_t &parentsha1);
- void parse_v4_header(UINT8 *rawheader, sha1_t &parentsha1);
- void parse_v5_header(UINT8 *rawheader, sha1_t &parentsha1);
+ void parse_v3_header(UINT8 *rawheader, util::sha1_t &parentsha1);
+ void parse_v4_header(UINT8 *rawheader, util::sha1_t &parentsha1);
+ void parse_v5_header(UINT8 *rawheader, util::sha1_t &parentsha1);
chd_error compress_v5_map();
void decompress_v5_map();
chd_error create_common();
chd_error open_common(bool writeable);
void create_open_common();
void verify_proper_compression_append(UINT32 hunknum);
- void hunk_write_compressed(UINT32 hunknum, INT8 compression, const UINT8 *compressed, UINT32 complength, crc16_t crc16);
+ void hunk_write_compressed(UINT32 hunknum, INT8 compression, const UINT8 *compressed, UINT32 complength, util::crc16_t crc16);
void hunk_copy_from_self(UINT32 hunknum, UINT32 otherhunk);
void hunk_copy_from_parent(UINT32 hunknum, UINT64 parentunit);
bool metadata_find(chd_metadata_tag metatag, INT32 metaindex, metadata_entry &metaentry, bool resume = false);
@@ -469,8 +469,8 @@ private:
// operations
void reset();
- UINT64 find(crc16_t crc16, sha1_t sha1);
- void add(UINT64 itemnum, crc16_t crc16, sha1_t sha1);
+ UINT64 find(util::crc16_t crc16, util::sha1_t sha1);
+ void add(UINT64 itemnum, util::crc16_t crc16, util::sha1_t sha1);
// constants
static const UINT64 NOT_FOUND = ~UINT64(0);
@@ -480,7 +480,7 @@ private:
{
entry_t * m_next; // next entry in list
UINT64 m_itemnum; // item number
- sha1_t m_sha1; // SHA-1 of the block
+ util::sha1_t m_sha1; // SHA-1 of the block
};
// block of entries
@@ -511,8 +511,8 @@ private:
// a CRC-16/SHA-1 pair
struct hash_pair
{
- crc16_t m_crc16; // calculated CRC-16
- sha1_t m_sha1; // calculated SHA-1
+ util::crc16_t m_crc16; // calculated CRC-16
+ util::sha1_t m_sha1; // calculated SHA-1
};
// a single work item
@@ -556,7 +556,7 @@ private:
bool m_walking_parent; // are we building the parent map?
UINT64 m_total_in; // total bytes in
UINT64 m_total_out; // total bytes out
- sha1_creator m_compsha1; // running SHA-1 on raw data
+ util::sha1_creator m_compsha1; // running SHA-1 on raw data
// hash lookup maps
hashmap m_parent_map; // hash map for parent
diff --git a/src/emu/hash.cpp b/src/lib/util/hash.cpp
index 2eaa4c03c2a..6d7ac9319e3 100644
--- a/src/emu/hash.cpp
+++ b/src/lib/util/hash.cpp
@@ -2,7 +2,7 @@
// copyright-holders:Aaron Giles
/***************************************************************************
- hash.c
+ hash.cpp
Function to handle hash functions (checksums)
@@ -10,11 +10,12 @@
***************************************************************************/
-#include "emu.h"
+#include "hash.h"
#include "hashing.h"
#include <ctype.h>
+namespace util {
//**************************************************************************
// GLOBAL VARIABLES
//**************************************************************************
@@ -418,3 +419,5 @@ void hash_collection::copyfrom(const hash_collection &src)
// don't copy creators
m_creator = nullptr;
}
+
+} // namespace util
diff --git a/src/emu/hash.h b/src/lib/util/hash.h
index a421aa5523f..ec628a949f2 100644
--- a/src/emu/hash.h
+++ b/src/lib/util/hash.h
@@ -29,7 +29,7 @@
#define BAD_DUMP "^"
-
+namespace util {
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -117,4 +117,6 @@ private:
};
+} // namespace util
+
#endif /* __HASH_H__ */
diff --git a/src/lib/util/hashing.cpp b/src/lib/util/hashing.cpp
index 240e64af9ad..dd6b9847f15 100644
--- a/src/lib/util/hashing.cpp
+++ b/src/lib/util/hashing.cpp
@@ -14,6 +14,7 @@
#include <sstream>
+namespace util {
//**************************************************************************
// CONSTANTS
//**************************************************************************
@@ -291,3 +292,5 @@ void crc16_creator::append(const void *data, UINT32 length)
crc = (crc << 8) ^ s_table[(crc >> 8) ^ *src++];
m_accum.m_raw = crc;
}
+
+} // namespace util
diff --git a/src/lib/util/hashing.h b/src/lib/util/hashing.h
index 51a7da7c694..8b58d3afc8b 100644
--- a/src/lib/util/hashing.h
+++ b/src/lib/util/hashing.h
@@ -20,6 +20,7 @@
#include "sha1.h"
+namespace util {
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -217,4 +218,6 @@ protected:
};
+} // namespace util
+
#endif // __HASHING_H__