From 1520d49310c07b1f8500582b6ac22baedcc80dcb Mon Sep 17 00:00:00 2001 From: Ciaran Gultnieks Date: Mon, 16 May 2011 16:13:17 +0100 Subject: [PATCH] Privileges to/from string conversion functions standalone, not static members --- src/player.cpp | 49 +++++++++++++++++++++++++++++++++++++ src/player.h | 57 +++++++------------------------------------ src/servercommand.cpp | 8 +++--- 3 files changed, 62 insertions(+), 52 deletions(-) diff --git a/src/player.cpp b/src/player.cpp index 2ebf158a..e568d7de 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -23,6 +23,55 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "constants.h" #include "utility.h" +// Convert a privileges value into a human-readable string, +// with each component separated by a comma. +std::wstring privsToString(u64 privs) +{ + std::wostringstream os(std::ios_base::binary); + if(privs & PRIV_BUILD) + os< pr; + pr=str_split(str, ','); + for(std::vector::iterator i = pr.begin(); + i != pr.end(); ++i) + { + if(*i == L"build") + privs |= PRIV_BUILD; + else if(*i == L"teleport") + privs |= PRIV_TELEPORT; + else if(*i == L"settime") + privs |= PRIV_SETTIME; + else if(*i == L"privs") + privs |= PRIV_PRIVS; + else + return PRIV_INVALID; + } + return privs; +} + + Player::Player(): touching_ground(false), in_water(false), diff --git a/src/player.h b/src/player.h index 778bb54b..be93766f 100644 --- a/src/player.h +++ b/src/player.h @@ -43,6 +43,15 @@ const u64 PRIV_DEFAULT = PRIV_BUILD; const u64 PRIV_ALL = 0x7FFFFFFFFFFFFFFFULL; const u64 PRIV_INVALID = 0x8000000000000000ULL; +// Convert a privileges value into a human-readable string, +// with each component separated by a comma. +std::wstring privsToString(u64 privs); + +// Converts a comma-seperated list of privilege values into a +// privileges value. The reverse of privsToString(). Returns +// PRIV_INVALID if there is anything wrong with the input. +u64 stringToPrivs(std::wstring str); + class Map; @@ -155,54 +164,6 @@ protected: public: - // Converst a prvileges value into a human-readable string, - // with each component separated by a comma. - static std::wstring privsToString(u64 privs) - { - std::wostringstream os(std::ios_base::binary); - if(privs & PRIV_BUILD) - os< pr; - pr=str_split(str, ','); - for(std::vector::iterator i = pr.begin(); - i != pr.end(); ++i) - { - if(*i == L"build") - privs |= PRIV_BUILD; - else if(*i == L"teleport") - privs |= PRIV_TELEPORT; - else if(*i == L"settime") - privs |= PRIV_SETTIME; - else if(*i == L"privs") - privs |= PRIV_PRIVS; - else - return PRIV_INVALID; - } - return privs; - } - }; /* diff --git a/src/servercommand.cpp b/src/servercommand.cpp index fa841a1b..21483b54 100644 --- a/src/servercommand.cpp +++ b/src/servercommand.cpp @@ -93,7 +93,7 @@ void ServerCommand::cmd_privs(std::wostringstream &os, { if(ctx->parms.size() == 1) { - os<player->privs); + os<player->privs); return; } @@ -110,7 +110,7 @@ void ServerCommand::cmd_privs(std::wostringstream &os, return; } - os<privs); + os<privs); } void ServerCommand::cmd_grantrevoke(std::wostringstream &os, @@ -128,7 +128,7 @@ void ServerCommand::cmd_grantrevoke(std::wostringstream &os, return; } - u64 newprivs = Player::stringToPrivs(ctx->parms[2]); + u64 newprivs = stringToPrivs(ctx->parms[2]); if(newprivs == PRIV_INVALID) { os<privs &= ~newprivs; os<privs); + os<privs); } void ServerCommand::cmd_time(std::wostringstream &os, -- 2.30.2