summaryrefslogtreecommitdiff
path: root/src/access.cpp
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2011-12-15 01:14:13 -0500
committerAdam <Adam@anope.org>2011-12-15 01:14:13 -0500
commit9ea030d0600624095204af192e99c16e2d78a42e (patch)
tree403d8c07c4788f8921955d164bbc07b473cfd3be /src/access.cpp
parentad14c8145b8090aee0f4946b3b503786b6f8d1fb (diff)
Fixed access comparators
Diffstat (limited to 'src/access.cpp')
-rw-r--r--src/access.cpp88
1 files changed, 72 insertions, 16 deletions
diff --git a/src/access.cpp b/src/access.cpp
index 7b15f335a..622150d16 100644
--- a/src/access.cpp
+++ b/src/access.cpp
@@ -112,25 +112,45 @@ void ChanAccess::unserialize(serialized_data &data)
ci->AddAccess(access);
}
-bool ChanAccess::operator>(ChanAccess &other)
+bool ChanAccess::operator>(const ChanAccess &other) const
{
const std::vector<Privilege> &privs = PrivilegeManager::GetPrivileges();
for (unsigned i = privs.size(); i > 0; --i)
- if (this->HasPriv(privs[i - 1].name) && !other.HasPriv(privs[i - 1].name))
+ {
+ bool this_p = this->HasPriv(privs[i - 1].name),
+ other_p = other.HasPriv(privs[i - 1].name);
+
+ if (!this_p && !other_p)
+ continue;
+ else if (this_p && !other_p)
return true;
+ else
+ return false;
+ }
+
return false;
}
-bool ChanAccess::operator<(ChanAccess &other)
+bool ChanAccess::operator<(const ChanAccess &other) const
{
const std::vector<Privilege> &privs = PrivilegeManager::GetPrivileges();
for (unsigned i = privs.size(); i > 0; --i)
- if (!this->HasPriv(privs[i - 1].name) && other.HasPriv(privs[i - 1].name))
+ {
+ bool this_p = this->HasPriv(privs[i - 1].name),
+ other_p = other.HasPriv(privs[i - 1].name);
+
+ if (!this_p && !other_p)
+ continue;
+ else if (!this_p && other_p)
return true;
+ else
+ return false;
+ }
+
return false;
}
-bool ChanAccess::operator>=(ChanAccess &other)
+bool ChanAccess::operator>=(const ChanAccess &other) const
{
const std::vector<Privilege> &privs = PrivilegeManager::GetPrivileges();
for (unsigned i = privs.size(); i > 0; --i)
@@ -138,14 +158,18 @@ bool ChanAccess::operator>=(ChanAccess &other)
bool this_p = this->HasPriv(privs[i - 1].name),
other_p = other.HasPriv(privs[i - 1].name);
- if ((this_p && !other_p) || (this_p && other_p))
+ if (!this_p && !other_p)
+ continue;
+ else if (!this_p && other_p)
+ return false;
+ else
return true;
}
- return false;
+ return true;
}
-bool ChanAccess::operator<=(ChanAccess &other)
+bool ChanAccess::operator<=(const ChanAccess &other) const
{
const std::vector<Privilege> &privs = PrivilegeManager::GetPrivileges();
for (unsigned i = privs.size(); i > 0; --i)
@@ -153,11 +177,15 @@ bool ChanAccess::operator<=(ChanAccess &other)
bool this_p = this->HasPriv(privs[i - 1].name),
other_p = other.HasPriv(privs[i - 1].name);
- if ((!this_p && other_p) || (this_p && other_p))
+ if (!this_p && !other_p)
+ continue;
+ else if (this_p && !other_p)
+ return false;
+ else
return true;
}
- return false;
+ return true;
}
AccessGroup::AccessGroup() : std::vector<ChanAccess *>()
@@ -211,8 +239,18 @@ bool AccessGroup::operator>(const AccessGroup &other) const
return false;
const std::vector<Privilege> &privs = PrivilegeManager::GetPrivileges();
for (unsigned i = privs.size(); i > 0; --i)
- if (this->HasPriv(privs[i - 1].name) && !other.HasPriv(privs[i - 1].name))
+ {
+ bool this_p = this->HasPriv(privs[i - 1].name),
+ other_p = other.HasPriv(privs[i - 1].name);
+
+ if (!this_p && !other_p)
+ continue;
+ else if (this_p && !other_p)
return true;
+ else
+ return false;
+ }
+
return false;
}
@@ -228,8 +266,18 @@ bool AccessGroup::operator<(const AccessGroup &other) const
return false;
const std::vector<Privilege> &privs = PrivilegeManager::GetPrivileges();
for (unsigned i = privs.size(); i > 0; --i)
- if (!this->HasPriv(privs[i - 1].name) && other.HasPriv(privs[i - 1].name))
+ {
+ bool this_p = this->HasPriv(privs[i - 1].name),
+ other_p = other.HasPriv(privs[i - 1].name);
+
+ if (!this_p && !other_p)
+ continue;
+ else if (!this_p && other_p)
return true;
+ else
+ return false;
+ }
+
return false;
}
@@ -249,11 +297,15 @@ bool AccessGroup::operator>=(const AccessGroup &other) const
bool this_p = this->HasPriv(privs[i - 1].name),
other_p = other.HasPriv(privs[i - 1].name);
- if ((this_p && !other_p) || (this_p && other_p))
+ if (!this_p && !other_p)
+ continue;
+ else if (other_p && !this_p)
+ return false;
+ else
return true;
}
- return false;
+ return true;
}
bool AccessGroup::operator<=(const AccessGroup &other) const
@@ -272,10 +324,14 @@ bool AccessGroup::operator<=(const AccessGroup &other) const
bool this_p = this->HasPriv(privs[i - 1].name),
other_p = other.HasPriv(privs[i - 1].name);
- if ((!this_p && other_p) || (this_p && other_p))
+ if (!this_p && !other_p)
+ continue;
+ else if (this_p && !other_p)
+ return false;
+ else
return true;
}
- return false;
+ return true;
}