Eclipse SUMO - Simulation of Urban MObility
Loading...
Searching...
No Matches
IDSupplier.cpp
Go to the documentation of this file.
1
/****************************************************************************/
2
// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3
// Copyright (C) 2001-2024 German Aerospace Center (DLR) and others.
4
// This program and the accompanying materials are made available under the
5
// terms of the Eclipse Public License 2.0 which is available at
6
// https://www.eclipse.org/legal/epl-2.0/
7
// This Source Code may also be made available under the following Secondary
8
// Licenses when the conditions for such availability set forth in the Eclipse
9
// Public License 2.0 are satisfied: GNU General Public License, version 2
10
// or later which is available at
11
// https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13
/****************************************************************************/
20
// A class that generates enumerated and prefixed string-ids
21
/****************************************************************************/
22
#include <config.h>
23
24
#include <string>
25
#include <sstream>
26
#include <iostream>
27
#include "
StdDefs.h
"
28
#include "
IDSupplier.h
"
29
30
31
// ===========================================================================
32
// method definitions
33
// ===========================================================================
34
IDSupplier::IDSupplier
(
const
std::string& prefix,
long
long
int
begin)
35
: myCurrent(begin), myPrefix(prefix) {}
36
37
38
39
IDSupplier::IDSupplier
(
const
std::string& prefix,
const
std::vector<std::string>& knownIDs)
40
: myCurrent(0), myPrefix(prefix) {
41
for
(std::vector<std::string>::const_iterator id_it = knownIDs.begin(); id_it != knownIDs.end(); ++id_it) {
42
avoid
(*id_it);
43
}
44
}
45
46
47
IDSupplier::~IDSupplier
() {}
48
49
50
std::string
51
IDSupplier::getNext
() {
52
std::ostringstream strm;
53
strm <<
myPrefix
<<
myCurrent
++;
54
return
strm.str();
55
}
56
57
58
void
59
IDSupplier::avoid
(
const
std::string&
id
) {
60
// does it start with prefix?
61
if
(
id
.find(
myPrefix
) == 0) {
62
long
long
int
number;
63
std::istringstream buf(
id
.substr(
myPrefix
.size()));
64
buf >> number;
65
// does it continue with a number?
66
if
(!buf.fail()) {
67
myCurrent
=
MAX2
(
myCurrent
, number + 1);
68
}
69
}
70
}
71
72
73
/****************************************************************************/
IDSupplier.h
StdDefs.h
MAX2
T MAX2(T a, T b)
Definition
StdDefs.h:82
IDSupplier::myCurrent
long long int myCurrent
The current index.
Definition
IDSupplier.h:58
IDSupplier::myPrefix
std::string myPrefix
The prefix to use.
Definition
IDSupplier.h:61
IDSupplier::getNext
std::string getNext()
Returns the next id.
Definition
IDSupplier.cpp:51
IDSupplier::IDSupplier
IDSupplier(const std::string &prefix="", long long int begin=0)
Constructor.
Definition
IDSupplier.cpp:34
IDSupplier::~IDSupplier
~IDSupplier()
Destructor.
Definition
IDSupplier.cpp:47
IDSupplier::avoid
void avoid(const std::string &id)
make sure that the given id is never supplied
Definition
IDSupplier.cpp:59
src
utils
common
IDSupplier.cpp
Generated on Fri Nov 22 2024 00:15:37 for Eclipse SUMO - Simulation of Urban MObility by
1.9.8