diff options
Diffstat (limited to 'umbrello/umbrello/uniqueid.cpp')
-rw-r--r-- | umbrello/umbrello/uniqueid.cpp | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/umbrello/umbrello/uniqueid.cpp b/umbrello/umbrello/uniqueid.cpp new file mode 100644 index 00000000..ce4dc117 --- /dev/null +++ b/umbrello/umbrello/uniqueid.cpp @@ -0,0 +1,57 @@ +/*************************************************************************** + * * + * 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 2 of the License, or * + * (at your option) any later version. * + * * + * copyright (C) 2006 * + * Umbrello UML Modeller Authors <uml-devel@uml.sf.net> * + ***************************************************************************/ + +// own header +#include "uniqueid.h" + +// system includes +#include <kapplication.h> + +namespace UniqueID { + +/** + * Each model object gets assigned a unique ID. + */ +Uml::IDType m_uniqueID; + +Uml::IDType gen() { + static char buf[20]; + int length = 12; + int i = 0; + // Source: KDE4 kdelibs/kdecore/krandom.cpp KRandom::randomString() + while (length--) { + int r = kapp->random() % 62; + r += 48; + if (r > 57) + r += 7; + if (r > 90) + r += 6; + buf[i++] = char(r); + } + buf[i] = '\0'; + m_uniqueID = std::string(buf); + return m_uniqueID; +} + +void init() { + m_uniqueID = Uml::id_Reserved; +} + +Uml::IDType get() { + return m_uniqueID; +} + +void set(Uml::IDType id) { + m_uniqueID = id; +} + +} // end namespace UniqueID + |