public static string Print(this ExtendedPermissions permissions)
{
if (permissions == ExtendedPermissions.None)
return string.Empty;
long bitfield = (long)permissions;
StringBuilder result = new StringBuilder();
for (long bit = START_NON_FRIENDS_PERMISSIONS; bit < END_NON_FRIENDS_PERMISSIONS; bit <<= 1)
{
if ((bitfield & bit) == bit)
{
string permissionName;
if (RequiresPermissionAttribute.DefinedPermissions.TryGetValue((ExtendedPermissions)bit, out permissionName))
{
if (result.Length > 0)
result.Append(",");
result.Append(permissionName);
}
}
}
bool useFriend = ((bitfield & (long)ExtendedPermissions.Friend) == (long)ExtendedPermissions.Friend);
for (long bit = START_FRIENDS_PERMISSIONS; bit < END_FRIENDS_PERMISSIONS; bit <<= 1)
{
if ((bitfield & bit) == bit)
{
string permissionName;
if (RequiresPermissionAttribute.DefinedPermissions.TryGetValue((ExtendedPermissions)bit, out permissionName))
{
if (result.Length > 0)
result.Append(",");
result.Append(permissionName);
}
if (useFriend)
{
if (RequiresPermissionAttribute.DefinedPermissions.TryGetValue((ExtendedPermissions)(bit | (long)ExtendedPermissions.Friend), out permissionName))
{
if (result.Length > 0)
result.Append(",");
result.Append(permissionName);
}
}
}
}
return result.ToString();
}