Use std::format in esmtool

This commit is contained in:
Evil Eye 2025-08-10 12:03:34 +02:00
parent b5f87a9d50
commit a7ba54c361
2 changed files with 40 additions and 40 deletions

View File

@ -1,5 +1,7 @@
#include "labels.hpp" #include "labels.hpp"
#include <format>
#include <components/esm3/dialoguecondition.hpp> #include <components/esm3/dialoguecondition.hpp>
#include <components/esm3/loadalch.hpp> #include <components/esm3/loadalch.hpp>
#include <components/esm3/loadbody.hpp> #include <components/esm3/loadbody.hpp>
@ -16,8 +18,6 @@
#include <components/esm3/loadspel.hpp> #include <components/esm3/loadspel.hpp>
#include <components/esm3/loadweap.hpp> #include <components/esm3/loadweap.hpp>
#include <components/misc/strings/format.hpp>
std::string_view bodyPartLabel(int idx) std::string_view bodyPartLabel(int idx)
{ {
if (idx >= 0 && idx <= 26) if (idx >= 0 && idx <= 26)
@ -675,7 +675,7 @@ std::string bodyPartFlags(int flags)
int unused = (0xFFFFFFFF ^ (ESM::BodyPart::BPF_Female | ESM::BodyPart::BPF_NotPlayable)); int unused = (0xFFFFFFFF ^ (ESM::BodyPart::BPF_Female | ESM::BodyPart::BPF_NotPlayable));
if (flags & unused) if (flags & unused)
properties += "Invalid "; properties += "Invalid ";
properties += Misc::StringUtils::format("(0x%08X)", flags); properties += std::format("(0x{:08X})", flags);
return properties; return properties;
} }
@ -699,7 +699,7 @@ std::string cellFlags(int flags)
^ (ESM::Cell::HasWater | ESM::Cell::Interior | ESM::Cell::NoSleep | ESM::Cell::QuasiEx | 0x00000040)); ^ (ESM::Cell::HasWater | ESM::Cell::Interior | ESM::Cell::NoSleep | ESM::Cell::QuasiEx | 0x00000040));
if (flags & unused) if (flags & unused)
properties += "Invalid "; properties += "Invalid ";
properties += Misc::StringUtils::format("(0x%08X)", flags); properties += std::format("(0x{:08X})", flags);
return properties; return properties;
} }
@ -717,7 +717,7 @@ std::string containerFlags(int flags)
int unused = (0xFFFFFFFF ^ (ESM::Container::Unknown | ESM::Container::Organic | ESM::Container::Respawn)); int unused = (0xFFFFFFFF ^ (ESM::Container::Unknown | ESM::Container::Organic | ESM::Container::Respawn));
if (flags & unused) if (flags & unused)
properties += "Invalid "; properties += "Invalid ";
properties += Misc::StringUtils::format("(0x%08X)", flags); properties += std::format("(0x{:08X})", flags);
return properties; return properties;
} }
@ -747,7 +747,7 @@ std::string creatureFlags(int flags)
| ESM::Creature::Bipedal | ESM::Creature::Respawn | ESM::Creature::Weapon | ESM::Creature::Essential)); | ESM::Creature::Bipedal | ESM::Creature::Respawn | ESM::Creature::Weapon | ESM::Creature::Essential));
if (flags & unused) if (flags & unused)
properties += "Invalid "; properties += "Invalid ";
properties += Misc::StringUtils::format("(0x%02X)", flags); properties += std::format("(0x{:02X})", flags);
return properties; return properties;
} }
@ -760,7 +760,7 @@ std::string enchantmentFlags(int flags)
properties += "Autocalc "; properties += "Autocalc ";
if (flags & (0xFFFFFFFF ^ ESM::Enchantment::Autocalc)) if (flags & (0xFFFFFFFF ^ ESM::Enchantment::Autocalc))
properties += "Invalid "; properties += "Invalid ";
properties += Misc::StringUtils::format("(0x%08X)", flags); properties += std::format("(0x{:08X})", flags);
return properties; return properties;
} }
@ -778,7 +778,7 @@ std::string landFlags(std::uint32_t flags)
int unused = 0xFFFFFFFF ^ (ESM::Land::Flag_HeightsNormals | ESM::Land::Flag_Colors | ESM::Land::Flag_Textures); int unused = 0xFFFFFFFF ^ (ESM::Land::Flag_HeightsNormals | ESM::Land::Flag_Colors | ESM::Land::Flag_Textures);
if (flags & unused) if (flags & unused)
properties += "Invalid "; properties += "Invalid ";
properties += Misc::StringUtils::format("(0x%08X)", flags); properties += std::format("(0x{:08X})", flags);
return properties; return properties;
} }
@ -794,7 +794,7 @@ std::string itemListFlags(int flags)
int unused = (0xFFFFFFFF ^ (ESM::ItemLevList::AllLevels | ESM::ItemLevList::Each)); int unused = (0xFFFFFFFF ^ (ESM::ItemLevList::AllLevels | ESM::ItemLevList::Each));
if (flags & unused) if (flags & unused)
properties += "Invalid "; properties += "Invalid ";
properties += Misc::StringUtils::format("(0x%08X)", flags); properties += std::format("(0x{:08X})", flags);
return properties; return properties;
} }
@ -808,7 +808,7 @@ std::string creatureListFlags(int flags)
int unused = (0xFFFFFFFF ^ ESM::CreatureLevList::AllLevels); int unused = (0xFFFFFFFF ^ ESM::CreatureLevList::AllLevels);
if (flags & unused) if (flags & unused)
properties += "Invalid "; properties += "Invalid ";
properties += Misc::StringUtils::format("(0x%08X)", flags); properties += std::format("(0x{:08X})", flags);
return properties; return properties;
} }
@ -840,7 +840,7 @@ std::string lightFlags(int flags)
| ESM::Light::Pulse | ESM::Light::PulseSlow | ESM::Light::Negative | ESM::Light::OffDefault)); | ESM::Light::Pulse | ESM::Light::PulseSlow | ESM::Light::Negative | ESM::Light::OffDefault));
if (flags & unused) if (flags & unused)
properties += "Invalid "; properties += "Invalid ";
properties += Misc::StringUtils::format("(0x%08X)", flags); properties += std::format("(0x{:08X})", flags);
return properties; return properties;
} }
@ -888,7 +888,7 @@ std::string magicEffectFlags(int flags)
if (flags & 0xFFFC0000) if (flags & 0xFFFC0000)
properties += "Invalid "; properties += "Invalid ";
properties += Misc::StringUtils::format("(0x%08X)", flags); properties += std::format("(0x{:08X})", flags);
return properties; return properties;
} }
@ -913,7 +913,7 @@ std::string npcFlags(int flags)
= (0xFF ^ (ESM::NPC::Base | ESM::NPC::Autocalc | ESM::NPC::Female | ESM::NPC::Respawn | ESM::NPC::Essential)); = (0xFF ^ (ESM::NPC::Base | ESM::NPC::Autocalc | ESM::NPC::Female | ESM::NPC::Respawn | ESM::NPC::Essential));
if (flags & unused) if (flags & unused)
properties += "Invalid "; properties += "Invalid ";
properties += Misc::StringUtils::format("(0x%02X)", flags); properties += std::format("(0x{:02X})", flags);
return properties; return properties;
} }
@ -930,7 +930,7 @@ std::string raceFlags(int flags)
int unused = (0xFFFFFFFF ^ (ESM::Race::Playable | ESM::Race::Beast)); int unused = (0xFFFFFFFF ^ (ESM::Race::Playable | ESM::Race::Beast));
if (flags & unused) if (flags & unused)
properties += "Invalid "; properties += "Invalid ";
properties += Misc::StringUtils::format("(0x%08X)", flags); properties += std::format("(0x{:08X})", flags);
return properties; return properties;
} }
@ -948,7 +948,7 @@ std::string spellFlags(int flags)
int unused = (0xFFFFFFFF ^ (ESM::Spell::F_Autocalc | ESM::Spell::F_PCStart | ESM::Spell::F_Always)); int unused = (0xFFFFFFFF ^ (ESM::Spell::F_Autocalc | ESM::Spell::F_PCStart | ESM::Spell::F_Always));
if (flags & unused) if (flags & unused)
properties += "Invalid "; properties += "Invalid ";
properties += Misc::StringUtils::format("(0x%08X)", flags); properties += std::format("(0x{:08X})", flags);
return properties; return properties;
} }
@ -967,7 +967,7 @@ std::string weaponFlags(int flags)
int unused = (0xFFFFFFFF ^ (ESM::Weapon::Magical | ESM::Weapon::Silver)); int unused = (0xFFFFFFFF ^ (ESM::Weapon::Magical | ESM::Weapon::Silver));
if (flags & unused) if (flags & unused)
properties += "Invalid "; properties += "Invalid ";
properties += Misc::StringUtils::format("(0x%08X)", flags); properties += std::format("(0x{:08X})", flags);
return properties; return properties;
} }
@ -987,7 +987,7 @@ std::string recordFlags(uint32_t flags)
int unused = ~(ESM::FLAG_Deleted | ESM::FLAG_Persistent | ESM::FLAG_Ignored | ESM::FLAG_Blocked); int unused = ~(ESM::FLAG_Deleted | ESM::FLAG_Persistent | ESM::FLAG_Ignored | ESM::FLAG_Blocked);
if (flags & unused) if (flags & unused)
properties += "Invalid "; properties += "Invalid ";
properties += Misc::StringUtils::format("(0x%08X)", flags); properties += std::format("(0x{:08X})", flags);
return properties; return properties;
} }
@ -1000,6 +1000,6 @@ std::string potionFlags(int flags)
properties += "Autocalc "; properties += "Autocalc ";
if (flags & (0xFFFFFFFF ^ ESM::Enchantment::Autocalc)) if (flags & (0xFFFFFFFF ^ ESM::Enchantment::Autocalc))
properties += "Invalid "; properties += "Invalid ";
properties += Misc::StringUtils::format("(0x%08X)", flags); properties += std::format("(0x{:08X})", flags);
return properties; return properties;
} }

View File

@ -1,6 +1,7 @@
#include "record.hpp" #include "record.hpp"
#include "labels.hpp" #include "labels.hpp"
#include <format>
#include <iostream> #include <iostream>
#include <numeric> #include <numeric>
#include <sstream> #include <sstream>
@ -8,14 +9,13 @@
#include <components/esm3/cellstate.hpp> #include <components/esm3/cellstate.hpp>
#include <components/esm3/esmreader.hpp> #include <components/esm3/esmreader.hpp>
#include <components/misc/strings/conversion.hpp> #include <components/misc/strings/conversion.hpp>
#include <components/misc/strings/format.hpp>
namespace namespace
{ {
void printAIPackage(const ESM::AIPackage& p) void printAIPackage(const ESM::AIPackage& p)
{ {
std::cout << " AI Type: " << aiTypeLabel(p.mType) << " (" << Misc::StringUtils::format("0x%08X", p.mType) std::cout << " AI Type: " << aiTypeLabel(p.mType) << " (" << std::format("0x{:08X}", std::uint32_t(p.mType))
<< ")" << std::endl; << ")" << std::endl;
if (p.mType == ESM::AI_Wander) if (p.mType == ESM::AI_Wander)
{ {
@ -51,7 +51,7 @@ namespace
} }
else else
{ {
std::cout << " BadPackage: " << Misc::StringUtils::format("0x%08X", p.mType) << std::endl; std::cout << " BadPackage: " << std::format("0x{:08X}", std::uint32_t(p.mType)) << std::endl;
} }
if (!p.mCellName.empty()) if (!p.mCellName.empty())
@ -143,7 +143,7 @@ namespace
std::ostringstream stream; std::ostringstream stream;
std::visit([&](auto value) { stream << value; }, ss.mValue); std::visit([&](auto value) { stream << value; }, ss.mValue);
std::string result = Misc::StringUtils::format("%-12s %-32s %2s %s", typeStr, funcStr, operStr, stream.str()); std::string result = std::format("{:<12} {:<32} {:2} {}", typeStr, funcStr, operStr, stream.str());
return result; return result;
} }
@ -175,12 +175,12 @@ namespace
{ {
for (const ESM::Transport::Dest& dest : transport) for (const ESM::Transport::Dest& dest : transport)
{ {
std::cout << " Destination Position: " << Misc::StringUtils::format("%12.3f", dest.mPos.pos[0]) << "," std::cout << " Destination Position: " << std::format("{:12.3f}", dest.mPos.pos[0]) << ","
<< Misc::StringUtils::format("%12.3f", dest.mPos.pos[1]) << "," << std::format("{:12.3f}", dest.mPos.pos[1]) << "," << std::format("{:12.3f}", dest.mPos.pos[2])
<< Misc::StringUtils::format("%12.3f", dest.mPos.pos[2]) << ")" << std::endl; << ")" << std::endl;
std::cout << " Destination Rotation: " << Misc::StringUtils::format("%9.6f", dest.mPos.rot[0]) << "," std::cout << " Destination Rotation: " << std::format("{:9.6f}", dest.mPos.rot[0]) << ","
<< Misc::StringUtils::format("%9.6f", dest.mPos.rot[1]) << "," << std::format("{:9.6f}", dest.mPos.rot[1]) << "," << std::format("{:9.6f}", dest.mPos.rot[2])
<< Misc::StringUtils::format("%9.6f", dest.mPos.rot[2]) << ")" << std::endl; << ")" << std::endl;
if (!dest.mCellName.empty()) if (!dest.mCellName.empty())
std::cout << " Destination Cell: " << dest.mCellName << std::endl; std::cout << " Destination Cell: " << dest.mCellName << std::endl;
} }
@ -582,7 +582,7 @@ namespace EsmTool
std::cout << " Water Level: " << mData.mWater << std::endl; std::cout << " Water Level: " << mData.mWater << std::endl;
} }
else else
std::cout << " Map Color: " << Misc::StringUtils::format("0x%08X", mData.mMapColor) << std::endl; std::cout << " Map Color: " << std::format("0x{:08X}", mData.mMapColor) << std::endl;
std::cout << " RefId counter: " << mData.mRefNumCounter << std::endl; std::cout << " RefId counter: " << mData.mRefNumCounter << std::endl;
std::cout << " Deleted: " << mIsDeleted << std::endl; std::cout << " Deleted: " << mIsDeleted << std::endl;
} }
@ -593,7 +593,7 @@ namespace EsmTool
std::cout << " Name: " << mData.mName << std::endl; std::cout << " Name: " << mData.mName << std::endl;
std::cout << " Description: " << mData.mDescription << std::endl; std::cout << " Description: " << mData.mDescription << std::endl;
std::cout << " Playable: " << mData.mData.mIsPlayable << std::endl; std::cout << " Playable: " << mData.mData.mIsPlayable << std::endl;
std::cout << " AI Services: " << Misc::StringUtils::format("0x%08X", mData.mData.mServices) << std::endl; std::cout << " AI Services: " << std::format("0x{:08X}", mData.mData.mServices) << std::endl;
for (size_t i = 0; i < mData.mData.mAttribute.size(); ++i) for (size_t i = 0; i < mData.mData.mAttribute.size(); ++i)
std::cout << " Attribute" << (i + 1) << ": " << attributeLabel(mData.mData.mAttribute[i]) << " (" std::cout << " Attribute" << (i + 1) << ": " << attributeLabel(mData.mData.mAttribute[i]) << " ("
<< mData.mData.mAttribute[i] << ")" << std::endl; << mData.mData.mAttribute[i] << ")" << std::endl;
@ -641,8 +641,8 @@ namespace EsmTool
std::cout << " Flags: " << containerFlags(mData.mFlags) << std::endl; std::cout << " Flags: " << containerFlags(mData.mFlags) << std::endl;
std::cout << " Weight: " << mData.mWeight << std::endl; std::cout << " Weight: " << mData.mWeight << std::endl;
for (const ESM::ContItem& item : mData.mInventory.mList) for (const ESM::ContItem& item : mData.mInventory.mList)
std::cout << " Inventory: Count: " << Misc::StringUtils::format("%4d", item.mCount) std::cout << " Inventory: Count: " << std::format("{:4d}", item.mCount) << " Item: " << item.mItem
<< " Item: " << item.mItem << std::endl; << std::endl;
std::cout << " Deleted: " << mIsDeleted << std::endl; std::cout << " Deleted: " << mIsDeleted << std::endl;
} }
@ -679,8 +679,8 @@ namespace EsmTool
std::cout << " Gold: " << mData.mData.mGold << std::endl; std::cout << " Gold: " << mData.mData.mGold << std::endl;
for (const ESM::ContItem& item : mData.mInventory.mList) for (const ESM::ContItem& item : mData.mInventory.mList)
std::cout << " Inventory: Count: " << Misc::StringUtils::format("%4d", item.mCount) std::cout << " Inventory: Count: " << std::format("{:4d}", item.mCount) << " Item: " << item.mItem
<< " Item: " << item.mItem << std::endl; << std::endl;
for (const auto& spell : mData.mSpells.mList) for (const auto& spell : mData.mSpells.mList)
std::cout << " Spell: " << spell << std::endl; std::cout << " Spell: " << spell << std::endl;
@ -692,7 +692,7 @@ namespace EsmTool
std::cout << " AI Fight:" << (int)mData.mAiData.mFight << std::endl; std::cout << " AI Fight:" << (int)mData.mAiData.mFight << std::endl;
std::cout << " AI Flee:" << (int)mData.mAiData.mFlee << std::endl; std::cout << " AI Flee:" << (int)mData.mAiData.mFlee << std::endl;
std::cout << " AI Alarm:" << (int)mData.mAiData.mAlarm << std::endl; std::cout << " AI Alarm:" << (int)mData.mAiData.mAlarm << std::endl;
std::cout << " AI Services:" << Misc::StringUtils::format("0x%08X", mData.mAiData.mServices) << std::endl; std::cout << " AI Services:" << std::format("0x{:08X}", mData.mAiData.mServices) << std::endl;
for (const ESM::AIPackage& package : mData.mAiPackage.mList) for (const ESM::AIPackage& package : mData.mAiPackage.mList)
printAIPackage(package); printAIPackage(package);
@ -1067,8 +1067,8 @@ namespace EsmTool
} }
for (const ESM::ContItem& item : mData.mInventory.mList) for (const ESM::ContItem& item : mData.mInventory.mList)
std::cout << " Inventory: Count: " << Misc::StringUtils::format("%4d", item.mCount) std::cout << " Inventory: Count: " << std::format("{:4d}", item.mCount) << " Item: " << item.mItem
<< " Item: " << item.mItem << std::endl; << std::endl;
for (const auto& spell : mData.mSpells.mList) for (const auto& spell : mData.mSpells.mList)
std::cout << " Spell: " << spell << std::endl; std::cout << " Spell: " << spell << std::endl;
@ -1080,7 +1080,7 @@ namespace EsmTool
std::cout << " AI Fight:" << (int)mData.mAiData.mFight << std::endl; std::cout << " AI Fight:" << (int)mData.mAiData.mFight << std::endl;
std::cout << " AI Flee:" << (int)mData.mAiData.mFlee << std::endl; std::cout << " AI Flee:" << (int)mData.mAiData.mFlee << std::endl;
std::cout << " AI Alarm:" << (int)mData.mAiData.mAlarm << std::endl; std::cout << " AI Alarm:" << (int)mData.mAiData.mAlarm << std::endl;
std::cout << " AI Services:" << Misc::StringUtils::format("0x%08X", mData.mAiData.mServices) << std::endl; std::cout << " AI Services:" << std::format("0x{:08X}", mData.mAiData.mServices) << std::endl;
for (const ESM::AIPackage& package : mData.mAiPackage.mList) for (const ESM::AIPackage& package : mData.mAiPackage.mList)
printAIPackage(package); printAIPackage(package);
@ -1191,8 +1191,8 @@ namespace EsmTool
std::cout << " Variable: " << variable << std::endl; std::cout << " Variable: " << variable << std::endl;
std::cout << " ByteCode: "; std::cout << " ByteCode: ";
for (const unsigned char& byte : mData.mScriptData) for (unsigned char byte : mData.mScriptData)
std::cout << Misc::StringUtils::format("%02X", (int)(byte)); std::cout << std::format("{:02X}", byte);
std::cout << std::endl; std::cout << std::endl;
if (mPrintPlain) if (mPrintPlain)