/* * Hash.h * * Copyright (C) 2009 Matthias Schiffer * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU Lesser 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License along * with this program. If not, see . */ #ifndef MAD_COMMON_HASH_H_ #define MAD_COMMON_HASH_H_ #include "export.h" #include #include #include #include #include namespace Mad { namespace Common { class MAD_COMMON_EXPORT Hash { private: Hash(); class MAD_COMMON_EXPORT Hashes { private: std::map map; std::vector list; void addHash(const std::string &name, unsigned id) { map.insert(std::make_pair(name, id)); list.push_back(name); } public: const std::vector& getList() const { return list; } const std::map& getMap() const { return map; } Hashes(); }; static const Hashes hashes; public: static const std::vector& getHashList() { return hashes.getList(); } static bool isHashSupported(const std::string &method) { return (hashes.getMap().find(method) != hashes.getMap().end()); } static std::vector hash(const std::vector &in, unsigned int method) throw (Core::Exception); static std::vector hash(const std::vector &in, const std::string &method) throw (Core::Exception) { std::map::const_iterator methodIt = hashes.getMap().find(method); if(methodIt == hashes.getMap().end()) throw(Core::Exception(Core::Exception::NOT_IMPLEMENTED)); return hash(in, methodIt->second); } static std::vector hash(const std::string &in, unsigned int method) throw (Core::Exception) { return hash(std::vector(in.begin(), in.end()), method); } static std::vector hash(const std::string &in, const std::string &method) throw (Core::Exception) { return hash(std::vector(in.begin(), in.end()), method); } }; } } #endif /* MAD_COMMON_HASH_H_ */