File indexing completed on 2026-04-09 07:49:30
0001
0002
0003 #include <iostream>
0004 #include <iomanip>
0005 #include <bitset>
0006 #include <string>
0007 #include <sstream>
0008 #include <cstdint>
0009
0010 #include "sbitmask.h"
0011
0012 template<typename T>
0013 std::string desc(int i, T mask)
0014 {
0015 std::stringstream ss ;
0016 ss << " i " << std::setw(3) << i ;
0017
0018 if( sizeof(T) == 4 )
0019 {
0020 ss << " mask " << std::setw(10) << mask
0021 << " (0x) " << std::hex << std::setw(10) << mask << std::dec
0022 << " (0b) " << std::bitset<32>(mask).to_string()
0023 ;
0024 }
0025 else if( sizeof(T) == 8 )
0026 {
0027 ss << " mask " << std::setw(25) << mask
0028 << " (0x) " << std::hex << std::setw(16) << mask << std::dec
0029 << " (0b) " << std::bitset<64>(mask).to_string()
0030 ;
0031 }
0032 std::string s = ss.str();
0033 return s ;
0034 }
0035
0036 template<typename T>
0037 std::string desc(bool dbg=false)
0038 {
0039 int n = sizeof(T)*CHAR_BIT ;
0040 std::stringstream ss ;
0041 ss << "desc_" << n << std::endl ;
0042 for(int i=0 ; i <= n ; i++)
0043 {
0044 T mask = sbitmask<T>(i) ;
0045 T mask0 = sbitmask_0<T>(i) ;
0046 T mask1 = sbitmask_1<T>(i) ;
0047 T mask2 = sbitmask_2<T>(i) ;
0048
0049 if(dbg)
0050 {
0051 ss << "mk " << desc<T>(i, mask ) << std::endl ;
0052 ss << "m0 " << desc<T>(i, mask0 ) << std::endl ;
0053 ss << "m1 " << desc<T>(i, mask1 ) << std::endl ;
0054 ss << "m2 " << desc<T>(i, mask2 ) << std::endl ;
0055 ss << std::endl ;
0056 }
0057 else
0058 {
0059 ss << "mk " << desc<T>(i, mask ) << std::endl ;
0060 }
0061 }
0062 std::string s = ss.str();
0063 return s ;
0064 }
0065
0066 int main(int argc, char** argv)
0067 {
0068 bool dbg=false ;
0069 std::cout << desc<uint32_t>(dbg);
0070 std::cout << desc<uint64_t>(dbg);
0071 return 0 ;
0072 }