Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-04-09 07:49:39

0001 /*
0002  * Copyright (c) 2019 Opticks Team. All Rights Reserved.
0003  *
0004  * This file is part of Opticks
0005  * (see https://bitbucket.org/simoncblyth/opticks).
0006  *
0007  * Licensed under the Apache License, Version 2.0 (the "License"); 
0008  * you may not use this file except in compliance with the License.  
0009  * You may obtain a copy of the License at
0010  *
0011  *   http://www.apache.org/licenses/LICENSE-2.0
0012  *
0013  * Unless required by applicable law or agreed to in writing, software 
0014  * distributed under the License is distributed on an "AS IS" BASIS, 
0015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
0016  * See the License for the specific language governing permissions and 
0017  * limitations under the License.
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