Privileges to/from string conversion functions standalone, not static members
authorCiaran Gultnieks <ciaran@ciarang.com>
Mon, 16 May 2011 15:13:17 +0000 (16:13 +0100)
committerCiaran Gultnieks <ciaran@ciarang.com>
Mon, 16 May 2011 15:13:17 +0000 (16:13 +0100)
src/player.cpp
src/player.h
src/servercommand.cpp

index 2ebf158a648582dc293831253d99ca641c7de179..e568d7deef430cf409e68b602e2265b349c69023 100644 (file)
@@ -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<<L"build,";
+       if(privs & PRIV_TELEPORT)
+               os<<L"teleport,";
+       if(privs & PRIV_SETTIME)
+               os<<L"settime,";
+       if(privs & PRIV_PRIVS)
+               os<<L"privs,";
+       if(os.tellp())
+       {
+               // Drop the trailing comma. (Why on earth can't
+               // you truncate a C++ stream anyway???)
+               std::wstring tmp = os.str();
+               return tmp.substr(0, tmp.length() -1);
+       }
+       return os.str();
+}
+
+// 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)
+{
+       u64 privs=0;
+       std::vector<std::wstring> pr;
+       pr=str_split(str, ',');
+       for(std::vector<std::wstring>::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),
index 778bb54b312534b04eeb6cda872722377f061322..be93766fd7a949ed2fa30498fc9fd5e9af4abb30 100644 (file)
@@ -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<<L"build,";
-               if(privs & PRIV_TELEPORT)
-                       os<<L"teleport,";
-               if(privs & PRIV_SETTIME)
-                       os<<L"settime,";
-               if(privs & PRIV_PRIVS)
-                       os<<L"privs,";
-               if(os.tellp())
-               {
-                       // Drop the trailing comma. (Why on earth can't
-                       // you truncate a C++ stream anyway???)
-                       std::wstring tmp = os.str();
-                       return tmp.substr(0, tmp.length() -1);
-               }
-               return os.str();
-       }
-
-       // 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.
-       static u64 stringToPrivs(std::wstring str)
-       {
-               u64 privs=0;
-               std::vector<std::wstring> pr;
-               pr=str_split(str, ',');
-               for(std::vector<std::wstring>::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;
-       }
-
 };
 
 /*
index fa841a1bba8bfbbbaecafd9c7a203fae34d45125..21483b548f4c68ab2a4d3ed2be7e08c2c0448da0 100644 (file)
@@ -93,7 +93,7 @@ void ServerCommand::cmd_privs(std::wostringstream &os,
 {
        if(ctx->parms.size() == 1)
        {
-               os<<L"-!- " + Player::privsToString(ctx->player->privs);
+               os<<L"-!- " + privsToString(ctx->player->privs);
                return;
        }
 
@@ -110,7 +110,7 @@ void ServerCommand::cmd_privs(std::wostringstream &os,
                return;
        }
        
-       os<<L"-!- " + Player::privsToString(tp->privs);
+       os<<L"-!- " + privsToString(tp->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<<L"-!- Invalid privileges specified";
@@ -148,7 +148,7 @@ void ServerCommand::cmd_grantrevoke(std::wostringstream &os,
                tp->privs &= ~newprivs;
        
        os<<L"-!- Privileges change to ";
-       os<<Player::privsToString(tp->privs);
+       os<<privsToString(tp->privs);
 }
 
 void ServerCommand::cmd_time(std::wostringstream &os,