diff options
Diffstat (limited to 'Build/source/texk/dvisvgm/dvisvgm-src/src/HashFunction.cpp')
-rw-r--r-- | Build/source/texk/dvisvgm/dvisvgm-src/src/HashFunction.cpp | 102 |
1 files changed, 0 insertions, 102 deletions
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/HashFunction.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/HashFunction.cpp deleted file mode 100644 index bada148b6c7..00000000000 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/HashFunction.cpp +++ /dev/null @@ -1,102 +0,0 @@ -/************************************************************************* -** HashFunction.cpp ** -** ** -** This file is part of dvisvgm -- a fast DVI to SVG converter ** -** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> ** -** ** -** This program is free software; you can redistribute it and/or ** -** modify it under the terms of the GNU General Public License as ** -** published by the Free Software Foundation; either version 3 of ** -** the License, or (at your option) any later version. ** -** ** -** This program is distributed in the hope that it will be useful, but ** -** WITHOUT ANY WARRANTY; without even the implied warranty of ** -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** -** GNU General Public License for more details. ** -** ** -** You should have received a copy of the GNU General Public License ** -** along with this program; if not, see <http://www.gnu.org/licenses/>. ** -*************************************************************************/ - -#include <algorithm> -#include <iomanip> -#include <sstream> -#include "HashFunction.hpp" -#include "utility.hpp" -#include "MD5HashFunction.hpp" -#include "XXHashFunction.hpp" - -using namespace std; - - -/** Returns a vector containing the names of the currently supported hash algorithms. */ -vector<string> HashFunction::supportedAlgorithms () { - return vector<string> { - "md5", "xxh32", "xxh64", -#ifdef ENABLE_XXH128 - "xxh128" -#endif - }; -} - - -/** Returns true if 'algo' is the name of a supported hash algorithm. */ -bool HashFunction::isSupportedAlgorithm (const std::string &algo) { - auto algos = supportedAlgorithms(); - return find(algos.begin(), algos.end(), algo) != algos.end(); -} - - -/** Creates a hash function for a given algorithm name/identifier. - * The following names are currently supported: md5, xxh32, xxh64. */ -unique_ptr<HashFunction> HashFunction::create (const string &name) { - string lowerName = util::tolower(name); - if (lowerName == "md5") - return util::make_unique<MD5HashFunction>(); - if (lowerName == "xxh32") - return util::make_unique<XXH32HashFunction>(); - if (lowerName == "xxh64") - return util::make_unique<XXH64HashFunction>(); -#ifdef ENABLE_XXH128 - if (lowerName == "xxh128") - return util::make_unique<XXH128HashFunction>(); -#endif - return nullptr; -} - - -std::unique_ptr<HashFunction> HashFunction::create (const string &name, const char *data, size_t length) { - auto hashfunc = create(name); - if (hashfunc) - hashfunc->update(data, length); - return hashfunc; -} - - -std::unique_ptr<HashFunction> HashFunction::create (const string &name, const string &data) { - return create(name, data.data(), data.length()); -} - - -std::unique_ptr<HashFunction> HashFunction::create (const string &name, const vector<uint8_t> &data) { - return create(name, reinterpret_cast<const char*>(data.data()), data.size()); -} - - -void HashFunction::update (istream &is) { - char buf[4096]; - while (is) { - is.read(buf, 4096); - update(buf, is.gcount()); - } -} - - -/** Returns the current digest as hexadecimal value. */ -string HashFunction::digestString () const { - ostringstream oss; - oss << hex << setfill('0'); - for (int byte : digestBytes()) - oss << setw(2) << byte; - return oss.str(); -} |