char *PadStrTo(char*Dest, char Pad, int PadLen) { char *NewStr=NULL; int val, len; if (PadLen==0) return(Dest); len=StrLen(Dest); if (PadLen > 0) { val=PadLen-len; if (val > 0) return(PadStr(Dest,Pad,val)); } else //must be negative, meaning PrePad rather than PostPad { val = (0 - PadLen) - len; if (val > 0) return(PadStr(Dest,Pad,0-val)); } return(Dest); }
char *CopyPadStr(char*Dest, const char *Src, char Pad, int PadLen) { Dest=CopyStr(Dest,Src); Dest=PadStr(Dest,Pad,PadLen); return(Dest); }
bool BitFlipper::Test(unsigned int num_bits_, unsigned int input_, const std::string *text_/*=NULL*/){ if(num_bits_ > 32){ return false; } // Too many bits for unsigned int bool *active_bits = new bool[num_bits_]; unsigned int *bit_values = new unsigned int[num_bits_]; unsigned int *running_total = new unsigned int[num_bits_]; unsigned int total = 0; unsigned int count = 1; for(unsigned int i = 0; i < num_bits_; i++){ bit_values[i] = count; if(input_ & (1 << i)){ active_bits[i] = true; total += count; running_total[i] = total; } else{ active_bits[i] = false; running_total[i] = 0; } count *= 2; } std::cout << " Input: 0x" << std::hex << input_ << " (" << std::dec << input_ << ")\n"; if(text_ != NULL){ std::cout << " Bit On? Value Total Bit Function\n"; } else{ std::cout << " Bit On? Value Total\n"; } std::string bit_function; for(unsigned int i = 0; i < num_bits_; i++){ if(text_ != NULL){ bit_function = csr_txt[i]; } else{ bit_function = ""; } if(active_bits[i]){ if(Display::hasColorTerm){ if(i < 10){ std::cout << TermColors::DkGreen << " 0" << i << " 1 " << PadStr(bit_values[i], 12); std::cout << PadStr(running_total[i], 12) << bit_function << TermColors::Reset << std::endl; } else{ std::cout << TermColors::DkGreen << " " << i << " 1 " << PadStr(bit_values[i], 12); std::cout << PadStr(running_total[i], 12) << bit_function << TermColors::Reset << std::endl; } } else{ if(i < 10){ std::cout << " " << i << " 1 " << PadStr(bit_values[i], 12) << PadStr(running_total[i], 12) << bit_function << std::endl; } else{ std::cout << " " << i << " 1 " << PadStr(bit_values[i], 12) << PadStr(running_total[i], 12) << bit_function << std::endl; } } } else{ if(i < 10){ std::cout << " 0" << i << " 0 " << PadStr(bit_values[i], 12); std::cout << PadStr(running_total[i], 12) << bit_function << std::endl; } else{ std::cout << " " << i << " 0 " << PadStr(bit_values[i], 12); std::cout << PadStr(running_total[i], 12) << bit_function << std::endl; } } } delete[] active_bits; delete[] bit_values; delete[] running_total; return true; }