Generated unique IDs. More...
#include <mitkUIDGenerator.h>
Public Member Functions | |
UIDGenerator (const char *prefix="UID_", unsigned int lengthOfRandomPart=8) | |
std::string | GetUID () |
Generated unique IDs.
Creates (somehow most of the time) unique IDs from a given prefix, the current date/time and a random part.
The prefix is given to the constructor, together with the desired length of the random part (minimum 5 digits).
You will get another quite unique ID each time you call GetUID.
Definition at line 37 of file mitkUIDGenerator.h.
mitk::UIDGenerator::UIDGenerator | ( | const char * | prefix = "UID_" , |
unsigned int | lengthOfRandomPart = 8 |
||
) |
Definition at line 27 of file mitkUIDGenerator.cpp.
References MITK_ERROR.
:m_Prefix(prefix), m_LengthOfRandomPart(lengthOfRandomPart) { if (lengthOfRandomPart < 5) { MITK_ERROR << lengthOfRandomPart << " are not really unique, right?" << std::endl; throw std::invalid_argument("To few digits requested"); } srand((unsigned int) time( (time_t *)0 )); }
std::string mitk::UIDGenerator::GetUID | ( | ) |
Definition at line 40 of file mitkUIDGenerator.cpp.
References int(), QuadProgPP::pow(), and QuadProgPP::t().
Referenced by mitk::SceneIO::SaveScene().
{ std::ostringstream s; s << m_Prefix; time_t tt = time(0); tm* t = gmtime(&tt); if (t) { s << t->tm_year + 1900; if (t->tm_mon < 9) s << "0"; // add a 0 for months 1 to 9 s << t->tm_mon + 1; if (t->tm_mday < 10) s << "0"; // add a 0 for days 1 to 9 s << t->tm_mday; if (t->tm_hour < 10) s << "0"; // add a 0 for hours 1 to 9 s << t->tm_hour; if (t->tm_min < 10) s << "0"; // add a 0 for minutes 1 to 9 s << t->tm_min; if (t->tm_sec < 10) s << "0"; // add a 0 for seconds 1 to 9 s << t->tm_sec; std::ostringstream rs; rs << (long int)( pow(10.0, double(m_LengthOfRandomPart)) / double(RAND_MAX) * double(rand()) ); for (size_t i = rs.str().length(); i < m_LengthOfRandomPart; ++i) { s << "X"; } s << rs.str(); } return s.str(); }