File indexing completed on 2026-04-09 07:49:36
0001 #pragma once
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053 #include <vector>
0054 #include <cassert>
0055 #include <cstring>
0056 #include <string>
0057 #include <sstream>
0058 #include <iomanip>
0059
0060
0061 struct sfactor
0062 {
0063 static constexpr const int NV = 5+8 ;
0064 int index ;
0065 int freq ;
0066 int sensors ;
0067 int subtree ;
0068 int olvid ;
0069 char sub[32] ;
0070
0071 void set_sub(const char* s);
0072 std::string get_sub() const ;
0073
0074 std::string desc() const ;
0075 static std::string Desc(const std::vector<sfactor>& factor);
0076
0077 };
0078
0079 inline void sfactor::set_sub(const char* s)
0080 {
0081 assert( strlen(s) == 32 );
0082 memcpy( &sub, s, 32 );
0083 }
0084
0085 inline std::string sfactor::get_sub() const
0086 {
0087 std::string sub_(sub, 32);
0088 return sub_ ;
0089 }
0090
0091 inline std::string sfactor::desc() const
0092 {
0093 std::stringstream ss ;
0094 ss << "sfactor"
0095 << " index " << std::setw(3) << index
0096 << " freq " << std::setw(6) << freq
0097 << " sensors " << std::setw(6) << sensors
0098 << " subtree " << std::setw(6) << subtree
0099 << " olvid " << std::setw(6) << olvid
0100 << " freq*subtree " << std::setw(7) << freq*subtree
0101 << " sub [" << std::setw(32) << get_sub() << "]"
0102 ;
0103 std::string s = ss.str();
0104 return s ;
0105 }
0106
0107 inline std::string sfactor::Desc(const std::vector<sfactor>& factor)
0108 {
0109 int num_factor = factor.size();
0110 std::stringstream ss ;
0111 ss << "sfactor::Desc num_factor " << num_factor << std::endl ;
0112 int tot_freq_subtree = 0 ;
0113 for(int i=0 ; i < num_factor ; i++)
0114 {
0115 const sfactor& sf = factor[i];
0116 tot_freq_subtree += sf.freq*sf.subtree ;
0117 ss << sf.desc() << std::endl ;
0118 }
0119 ss << " tot_freq_subtree " << std::setw(7) << tot_freq_subtree << std::endl ;
0120 std::string s = ss.str();
0121 return s ;
0122 }
0123