File indexing completed on 2026-04-09 07:49:39
0001 #pragma once
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018 #include <cassert>
0019 #include <string>
0020 #include <sstream>
0021 #include <cstring>
0022 #include <iostream>
0023 #include <iomanip>
0024
0025 struct sidxname
0026 {
0027 int idx ;
0028 char name[32] ;
0029
0030 sidxname(int idx_, const char* n) ;
0031
0032 std::string get_name() const ;
0033 std::string desc() const ;
0034 };
0035
0036
0037 struct sidxname_ordering
0038 {
0039 bool operator()(const sidxname& lhs, const sidxname& rhs) const
0040 {
0041 return lhs.idx < rhs.idx ;
0042 }
0043 };
0044
0045
0046 inline sidxname::sidxname(int idx_, const char* n )
0047 :
0048 idx(idx_)
0049 {
0050 int max = sizeof(name) - 1 ;
0051 bool ok = int(strlen(n)) <= max ;
0052 if(!ok) std::cerr
0053 << "sidxname::sidxname"
0054 << " strlen(n) " << strlen(n)
0055 << " max " << max
0056 << " FATAL name is too long [" << n << "]"
0057 << std::endl
0058 ;
0059
0060 assert(ok) ;
0061 strcpy( name, n );
0062 }
0063
0064
0065 inline std::string sidxname::desc() const
0066 {
0067 std::stringstream ss ;
0068 ss << std::setw(3) << idx << " : [" << name << "]" ;
0069 std::string str = ss.str();
0070 return str ;
0071 }
0072
0073
0074