| 34 |
{ |
{ |
| 35 |
public: |
public: |
| 36 |
virtual ~IdGenerator(void) {}; |
virtual ~IdGenerator(void) {}; |
| 37 |
static std::string const getId(void); |
std::string const getId(void); |
| 38 |
static void addUsedId(std::string const &id); |
void addUsedId(std::string const &id); |
| 39 |
private: |
private: |
| 40 |
static std::vector < std::string > _existing_ids; |
std::vector < std::string > _existing_ids; |
| 41 |
static int _last_used_id; |
int _last_used_id; |
| 42 |
}; |
}; |
|
std::vector < std::string > GEDCOMParser::IdGenerator::_existing_ids; |
|
|
int GEDCOMParser::IdGenerator::_last_used_id = 0; |
|
|
std::string const GEDCOMParser::IdGenerator::getId(void) |
|
|
{ |
|
|
std::string res; |
|
|
std::string tmp_str_id; |
|
|
do |
|
|
{ |
|
|
_last_used_id++; |
|
|
tmp_str_id = toString<int>(_last_used_id); |
|
|
} |
|
|
while (std::find(_existing_ids.begin(), _existing_ids.end(), tmp_str_id) != _existing_ids.end()); |
|
|
res = "@" + tmp_str_id + "@"; |
|
|
std::cout << "IdGenerator::getId() => " << res << std::endl; |
|
|
return res; |
|
|
} |
|
|
|
|
|
void GEDCOMParser::IdGenerator::addUsedId(std::string const &id) |
|
|
{ |
|
|
std::cout << "IdGenerator::addUsedId(" << id << ")" << std::endl; |
|
|
_existing_ids.push_back(id); |
|
|
return; |
|
|
} |
|
| 43 |
}; |
}; |
| 44 |
|
|
| 45 |
|
|