void ProcessContestRight(ContestRights contestAllow, ContestRights contestDeny, SystemRights systemAllow, SystemRights baseRights, ContestRights concreteRights, ref ContestRights cr) { if ((baseRights & systemAllow) != 0) { if ((concreteRights & contestDeny) != 0) { cr |= contestDeny; } else { cr |= contestAllow; } } else { if ((concreteRights & contestAllow) != 0) { cr |= contestAllow; } else { cr |= contestDeny; } } }
public ContestRights GetContestRights(int contestID) { ContestRights cr = ContestRights.None; ContestRights concreteRights = DataProvider.Provider.UserManager.GetRegistration(id, contestID).Rights; for (int i = 1; i <= 16384; i *= 4) { ProcessContestRight((ContestRights)i, (ContestRights)(i * 2), (SystemRights)i, systemRights, concreteRights, ref cr); } return(cr); }
public ProblemRights GetProblemRights(int problemID) { ProblemRights pr = ProblemRights.None; ContestRights baseRights = GetContestRights(Problem.GetProblem(problemID).ContestID); ProblemRights concreteRights = DataProvider.Provider.UserManager.GetProblemRights(id, problemID); for (int i = 1; i <= 1024; i *= 4) { ProceeProblemRight((ProblemRights)i, (ProblemRights)(i * 2), (ContestRights)i, baseRights, concreteRights, ref pr); } return(pr); }
public ContestRegistration(ContestRights rights, bool isInvisible) { Rights = rights; IsInvisible = isInvisible; }
void ProceeProblemRight(ProblemRights problemAllow, ProblemRights problemDeny, ContestRights contestAllow, ContestRights baseRights, ProblemRights concreteRights, ref ProblemRights pr) { if ((baseRights & contestAllow) != 0) { if ((concreteRights & problemDeny) != 0) { pr |= problemDeny; } else { pr |= problemAllow; } } else { if ((concreteRights & problemAllow) != 0) { pr |= problemAllow; } else { pr |= problemDeny; } } }