/*========================================================================= Program: GDCM (Grassroots DICOM). A DICOM library Copyright (c) 2006-2011 Mathieu Malaterre All rights reserved. See Copyright.txt or http://gdcm.sourceforge.net/Copyright.html for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notice for more information. =========================================================================*/ #include "gdcmUIDGenerator.h" #include #include #include /** This is a toy program just to check how good the UID are uniq. The rule of thumb is that you should not have a long Root UID otherwise the algorithm might find twice the same UID... */ int main() { gdcm::UIDGenerator uid; //const char myroot[] = "9876543210.9876543210.9876543210.9876543210.9876543210"; // fails in ~40000 tries const char myroot[] = "9876543210.9876543210.9876543210"; uid.SetRoot( myroot ); std::set uids; uint64_t wrap = 0; uint64_t c = 0; while(true) { const char *unique = uid.Generate(); //std::cout << unique << std::endl; if( c % 10000 == 0 ) { std::cout << "wrap=" << wrap << ",c=" << c << std::endl; } ++c; if( c == 0 ) { wrap++; } if ( uids.count(unique) == 1 ) { std::cerr << "Failed with: " << unique << std::endl; return 1; } uids.insert( unique ); } }