File indexing completed on 2026-04-09 07:49:39
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020 #include <sstream>
0021 #include <cstring>
0022 #include <cassert>
0023
0024 #include "SId.hh"
0025
0026 SId::SId(const char* identifiers_ )
0027 :
0028 identifiers(strdup(identifiers_)),
0029 len(strlen(identifiers)),
0030 idx(-1),
0031 cycle(0)
0032 {
0033 }
0034
0035 void SId::reset()
0036 {
0037 idx = -1 ;
0038 cycle = 0 ;
0039 }
0040
0041 const char* SId::get(bool reset_)
0042 {
0043 if(reset_) reset();
0044
0045 if( idx + 1 == len )
0046 {
0047 cycle += 1 ;
0048 idx = -1 ;
0049 }
0050
0051 idx += 1 ;
0052 assert( idx < len ) ;
0053
0054 std::stringstream ss ;
0055 ss << identifiers[idx] ;
0056 if( cycle > 0 ) ss << cycle ;
0057
0058 std::string s = ss.str() ;
0059
0060 return strdup(s.c_str()) ;
0061 }
0062
0063