NCBI C++ ToolKit
id_generator.cpp
Go to the documentation of this file.

Go to the SVN repository for this file.

1 /* $Id: id_generator.cpp 28864 2013-09-05 19:16:28Z katargir $
2  * ===========================================================================
3  *
4  * PUBLIC DOMAIN NOTICE
5  * National Center for Biotechnology Information
6  *
7  * This software / database is a "United States Government Work" under the
8  * terms of the United States Copyright Act. It was written as part of
9  * the author's official duties as a United States Government employee and
10  * thus cannot be copyrighted. This software / database is freely available
11  * to the public for use. The National Library of Medicine and the U.S.
12  * Government have not placed any restriction on its use or reproduction.
13  *
14  * Although all reasonable efforts have been taken to ensure the accuracy
15  * and reliability of the software and data, the NLM and the U.S.
16  * Government do not and cannot warrant the performance or results that
17  * may be obtained by using this software or data. The NLM and the U.S.
18  * Government disclaim all warranties, express or implied, including
19  * warranties of performance, merchantability or fitness for any particular
20  * purpose.
21  *
22  * Please cite the author in any work or product based on this material.
23  *
24  * ===========================================================================
25  *
26  * Authors: Peter Meric, Andrey Yazhuk
27  *
28  * File Description:
29  * CIdGenerator - generates consecutive integer identifiers
30  */
31 
32 
33 #include <ncbi_pch.hpp>
35 
36 
38 
39 ////////////////////////////////////////////////////////////////////////////////
40 /// CIdGenerator - generates consecutive integer identifiers
41 CIdGenerator::CIdGenerator(unsigned int first_id)
42  : m_Id(first_id)
43 {
44 }
45 
46 
48 {
49 }
50 
51 
52 unsigned int CIdGenerator::NextId(void)
53 {
54  return m_Id++;
55 }
56 
57 
58 ////////////////////////////////////////////////////////////////////////////////
59 /// CUniqueLabelGenerator
61 {
62 }
63 
64 
66 {
68 }
69 
70 
71 string CUniqueLabelGenerator::MakeUniqueLabel(const string& label) const
72 {
73  string s = label;
74  int i = 0;
75 
77 
78  while(it != m_ExistingLabels.end()) {
79  // make a new unique label
80  s = label + " (";
81  s += NStr::IntToString(++i);
82  s += ")";
83 
84  it = m_ExistingLabels.find(s);
85  }
86  return s;
87 }
88 
89 
91 
Definition: set.hpp:45
iterator_bool insert(const value_type &val)
Definition: set.hpp:149
const_iterator find(const key_type &key) const
Definition: set.hpp:137
const_iterator end() const
Definition: set.hpp:136
unsigned int NextId(void)
virtual ~CIdGenerator()
CIdGenerator(unsigned int first_id=1)
CIdGenerator - generates consecutive integer identifiers.
set< string > m_ExistingLabels
string MakeUniqueLabel(const string &label) const
after considering all existing labels produces a modified unique version of the original label
CUniqueLabelGenerator()
CUniqueLabelGenerator.
void AddExistingLabel(const string &label)
adds an existing label
unsigned int m_Id
#define END_NCBI_SCOPE
End previously defined NCBI scope.
Definition: ncbistl.hpp:103
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
Definition: ncbistl.hpp:100
static string IntToString(int value, TNumToStringFlags flags=0, int base=10)
Convert int to string.
Definition: ncbistr.hpp:5084
static const char label[]
int i
Modified on Sat Jun 22 10:44:53 2024 by modify_doxy.py rev. 669887