From fb0738b37edc21eacb5ad3c601375630ea990b15 Mon Sep 17 00:00:00 2001 From: Joshua Ashton Date: Mon, 3 Aug 2020 06:23:09 +0100 Subject: [PATCH] Add ostream overload to ServerProperties --- src/config/Property.h | 14 ++++-- src/config/ServerProperties.cpp | 88 ++++++++++++++++----------------- 2 files changed, 55 insertions(+), 47 deletions(-) diff --git a/src/config/Property.h b/src/config/Property.h index b56339c..3a46288 100644 --- a/src/config/Property.h +++ b/src/config/Property.h @@ -7,6 +7,7 @@ #include #include #include +#include using std::string; using std::string_view; @@ -50,7 +51,7 @@ namespace Feather // Property can be automatically cast to T operator T() const { return value; } - inline string ToString() { return std::to_string(value); } + inline string ToString() const { return std::to_string(value); } string_view key; private: @@ -59,14 +60,21 @@ namespace Feather }; template <> - inline string Property::ToString() + inline string Property::ToString() const { return value; } template <> - inline string Property::ToString() + inline string Property::ToString() const { return value ? "true" : "false"; } + + template + std::ostream& operator<<(std::ostream& os, const Property& prop) + { + os << prop.key << "=" << prop.ToString(); + return os; + } } diff --git a/src/config/ServerProperties.cpp b/src/config/ServerProperties.cpp index 1b78514..ff56d7b 100644 --- a/src/config/ServerProperties.cpp +++ b/src/config/ServerProperties.cpp @@ -89,50 +89,50 @@ namespace Feather // Ex: Thu Jul 23 01:43:47 PDT 2020 file << "#" << std::put_time(&localTime, "%a %b %d %H:%M:%S ") << timeZoneAbbr << std::put_time(&localTime, " %Y") << "\n"; - file << onlineMode.key << "=" << onlineMode.ToString() << "\n"; - file << preventProxyConnections.key << "=" << preventProxyConnections.ToString() << "\n"; - file << serverIp.key << "=" << serverIp.ToString() << "\n"; - file << spawnAnimals.key << "=" << spawnAnimals.ToString() << "\n"; - file << spawnNpcs.key << "=" << spawnNpcs.ToString() << "\n"; - file << pvp.key << "=" << pvp.ToString() << "\n"; - file << allowFlight.key << "=" << allowFlight.ToString() << "\n"; - file << resourcePack.key << "=" << resourcePack.ToString() << "\n"; - file << motd.key << "=" << motd.ToString() << "\n"; - file << forceGameMode.key << "=" << forceGameMode.ToString() << "\n"; - file << enforceWhitelist.key << "=" << enforceWhitelist.ToString() << "\n"; - file << levelName.key << "=" << levelName.ToString() << "\n"; - file << serverPort.key << "=" << serverPort.ToString() << "\n"; - file << maxBuildHeight.key << "=" << maxBuildHeight.ToString() << "\n"; - //file << announcePlayerAchievements.key << "=" << announcePlayerAchievements.ToString() << "\n"; - file << enableQuery.key << "=" << enableQuery.ToString() << "\n"; - file << queryPort.key << "=" << queryPort.ToString() << "\n"; - file << enableRcon.key << "=" << enableRcon.ToString() << "\n"; - file << rconPort.key << "=" << rconPort.ToString() << "\n"; - file << rconPassword.key << "=" << rconPassword.ToString() << "\n"; - //file << resourcePackHash.key << "=" << resourcePackHash.ToString() << "\n"; - file << resourcePackSha1.key << "=" << resourcePackSha1.ToString() << "\n"; - file << hardcore.key << "=" << hardcore.ToString() << "\n"; - file << allowNether.key << "=" << allowNether.ToString() << "\n"; - file << spawnMonsters.key << "=" << spawnMonsters.ToString() << "\n"; - file << snooperEnabled.key << "=" << snooperEnabled.ToString() << "\n"; - file << useNativeTransport.key << "=" << useNativeTransport.ToString() << "\n"; - file << enableCommandBlock.key << "=" << enableCommandBlock.ToString() << "\n"; - file << spawnProtection.key << "=" << spawnProtection.ToString() << "\n"; - file << opPermissionLevel.key << "=" << opPermissionLevel.ToString() << "\n"; - file << functionPermissionLevel.key << "=" << functionPermissionLevel.ToString() << "\n"; - file << maxTickTime.key << "=" << maxTickTime.ToString() << "\n"; - file << viewDistance.key << "=" << viewDistance.ToString() << "\n"; - file << maxPlayers.key << "=" << maxPlayers.ToString() << "\n"; - file << networkCompressionThreshold.key << "=" << networkCompressionThreshold.ToString() << "\n"; - file << broadcastRconToOps.key << "=" << broadcastRconToOps.ToString() << "\n"; - file << broadcastConsoleToOps.key << "=" << broadcastConsoleToOps.ToString() << "\n"; - file << maxWorldSize.key << "=" << maxWorldSize.ToString() << "\n"; - file << syncChunkWrites.key << "=" << syncChunkWrites.ToString() << "\n"; - file << enableJmxMonitoring.key << "=" << enableJmxMonitoring.ToString() << "\n"; - file << enableStatus.key << "=" << enableStatus.ToString() << "\n"; - file << entityBroadcastRangePercentage.key << "=" << entityBroadcastRangePercentage.ToString() << "\n"; - file << playerIdleTimeout.key << "=" << playerIdleTimeout.ToString() << "\n"; - file << whiteList.key << "=" << whiteList.ToString() << "\n"; + file << onlineMode << "\n"; + file << preventProxyConnections << "\n"; + file << serverIp << "\n"; + file << spawnAnimals << "\n"; + file << spawnNpcs << "\n"; + file << pvp << "\n"; + file << allowFlight << "\n"; + file << resourcePack << "\n"; + file << motd << "\n"; + file << forceGameMode << "\n"; + file << enforceWhitelist << "\n"; + file << levelName << "\n"; + file << serverPort << "\n"; + file << maxBuildHeight << "\n"; + //file << announcePlayerAchievements << "\n"; + file << enableQuery << "\n"; + file << queryPort << "\n"; + file << enableRcon << "\n"; + file << rconPort << "\n"; + file << rconPassword << "\n"; + //file << resourcePackHash << "\n"; + file << resourcePackSha1 << "\n"; + file << hardcore << "\n"; + file << allowNether << "\n"; + file << spawnMonsters << "\n"; + file << snooperEnabled << "\n"; + file << useNativeTransport << "\n"; + file << enableCommandBlock << "\n"; + file << spawnProtection << "\n"; + file << opPermissionLevel << "\n"; + file << functionPermissionLevel << "\n"; + file << maxTickTime << "\n"; + file << viewDistance << "\n"; + file << maxPlayers << "\n"; + file << networkCompressionThreshold << "\n"; + file << broadcastRconToOps << "\n"; + file << broadcastConsoleToOps << "\n"; + file << maxWorldSize << "\n"; + file << syncChunkWrites << "\n"; + file << enableJmxMonitoring << "\n"; + file << enableStatus << "\n"; + file << entityBroadcastRangePercentage << "\n"; + file << playerIdleTimeout << "\n"; + file << whiteList << "\n"; file << "\n"; file.close();