prevent long strings in CPU from overflowing when outputted to screen

This commit is contained in:
Iurii Tatishchev 2024-06-20 12:24:10 -07:00
parent 466c09b944
commit d00fcd2d04
Signed by: CaZzzer
GPG Key ID: E0EBF441EA424369
2 changed files with 18 additions and 6 deletions

View File

@ -6,11 +6,14 @@ using namespace std;
void display(const CPU &cpu) { void display(const CPU &cpu) {
const int minTotalWidth = max((size_t) 38, cpu.cpuId.length() + 2);
// Calculate total width, make sure architecture fits
const vector<int> widths = {18, max(minTotalWidth - 19, (int) cpu.architecture.length() + 2)};
const int totalWidth = widths[0] + widths[1];
// CPU ID // CPU ID
// width is different because bold characters are counted but invisible // width is different because bold characters are counted but invisible
string boldCenteredCpuId = centeredStr(boldStr(cpu.cpuId), 46); string boldCenteredCpuId = centeredStr(boldStr(cpu.cpuId), totalWidth + 8);
printTableHeader({39}, {boldCenteredCpuId}); printTableHeader({totalWidth + 1}, {boldCenteredCpuId});
static const vector<int> widths = {18, 20};
// Release Year // Release Year
cout << "| "; cout << "| ";

View File

@ -55,11 +55,20 @@ void DisplayManager<T>::displayTree() const {
"Architecture", "Architecture",
"Base Clock (GHz)" "Base Clock (GHz)"
}; };
static const std::vector<int> widths = {20, 14, 12, 20, 18}; std::vector<int> widths = {20, 14, 12, 20, 18};
printTableHeader(widths, headers);
// Call the BST's inorder traversal method to calculate the column widths
bst->inOrder([this, &widths](const string &cpuId) {
CPU cpu;
cpu.setCpuId(cpuId);
this->hashTable->search(cpu, cpu, key_to_index);
widths[0] = max(cpu.getCpuId().length() + 2, (size_t) widths[0]);
widths[3] = max(cpu.getArchitecture().length() + 2, (size_t) widths[3]);
});
printTableHeader(widths, headers);
// Call the BST's inorder traversal method to display the tree // Call the BST's inorder traversal method to display the tree
bst->inOrder([this](const string &cpuId) { bst->inOrder([this, &widths](const string &cpuId) {
CPU cpu; CPU cpu;
cpu.setCpuId(cpuId); cpu.setCpuId(cpuId);
this->hashTable->search(cpu, cpu, key_to_index); this->hashTable->search(cpu, cpu, key_to_index);