Add ostream overload to ServerProperties

This commit is contained in:
Joshua Ashton 2020-08-03 06:23:09 +01:00
parent e8244a3359
commit fb0738b37e
2 changed files with 55 additions and 47 deletions

View File

@ -7,6 +7,7 @@
#include <string_view>
#include <unordered_map>
#include <functional>
#include <ostream>
using std::string;
using std::string_view;
@ -50,7 +51,7 @@ namespace Feather
// Property<T> 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<string>::ToString()
inline string Property<string>::ToString() const
{
return value;
}
template <>
inline string Property<bool>::ToString()
inline string Property<bool>::ToString() const
{
return value ? "true" : "false";
}
template <typename T>
std::ostream& operator<<(std::ostream& os, const Property<T>& prop)
{
os << prop.key << "=" << prop.ToString();
return os;
}
}

View File

@ -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();