diff options
Diffstat (limited to 'Swiften/Base/IDGenerator.cpp')
-rw-r--r-- | Swiften/Base/IDGenerator.cpp | 26 |
1 files changed, 8 insertions, 18 deletions
diff --git a/Swiften/Base/IDGenerator.cpp b/Swiften/Base/IDGenerator.cpp index 80ed34d..5556f7b 100644 --- a/Swiften/Base/IDGenerator.cpp +++ b/Swiften/Base/IDGenerator.cpp @@ -1,34 +1,24 @@ /* - * Copyright (c) 2010 Remko Tronçon + * Copyright (c) 2010-2011 Remko Tronçon * Licensed under the GNU General Public License v3. * See Documentation/Licenses/GPLv3.txt for more information. */ #include <Swiften/Base/IDGenerator.h> +#include <boost/uuid/uuid.hpp> +#include <boost/uuid/uuid_io.hpp> +#include <boost/uuid/uuid_generators.hpp> +#include <boost/lexical_cast.hpp> + namespace Swift { IDGenerator::IDGenerator() { } std::string IDGenerator::generateID() { - bool carry = true; - size_t i = 0; - while (carry && i < currentID_.size()) { - char c = currentID_[i]; - if (c >= 'z') { - currentID_[i] = 'a'; - } - else { - currentID_[i] = c+1; - carry = false; - } - ++i; - } - if (carry) { - currentID_ += 'a'; - } - return currentID_; + static boost::uuids::random_generator generator; + return boost::lexical_cast<std::string>(generator()); } } |