SCalendar-1.1.0: This is a library for handling calendars and resource availability based on the "top-nodes algorithm" and set operations.

Time.SCalendar.Operations

Synopsis

# Documentation

Arguments

 :: SCalendar SCalendar to be augmented. -> Int Number of times by which the SCalendar will be augmented. -> Maybe SCalendar

Given an SCalendar of size 2^n, this function increases its size k times, that is, 2^(n+k). The new SCalendar is properly updated up to its root so that it will render the same results as the previous one. For example, given an SCalendar c of size 2^5=32, 'augmentCalendar c 3' would produce a new SCalendar of size 2^(5+3)=256.

Arguments

 :: Int Quantity of resources. -> TimePeriod TimePeriod over which we want to determine the availability of the quantity. -> SCalendar SCalendar over which we want to determine the availability of the quantity in a Given TimePeriod. -> Bool

Given a quantity, this function determines if it is available in a TimePeriod for a specific SCalendar. Thus, it does not take into account the particular resources whose availability wants to be determined: it is only concerned with the availabilty of a quantity in a specific SCalendar.

Given a Reservation, this function determines if it is available in a SCalendar. A Reservation is the product of a set of identifiers which point to reservable resources and a TimePeriod over which those resources are to be reserved. Thus, this function checks if that particular set of resources is available for a TimePeriod in the given SCalendar.

This function introduces a new Reservation in a Calendar. Note that since no availability check is performed before introducing the Reservation, here we use a plain Calendar. Thus this function is useful to introduce Reservations without any constraint, but that's why it must be used carefully since information can be lost due to the usage of the union set-operation to update the Q and QN sets in the Calendar.

This function introduces a new Reservation in a SCalendar applying an availability check. This means that if the reservation conflicts with others already made in the SCalendar, it will no be introduced. Thus this function takes into account the set of reservable identifiers for the SCalendar to calculate the subset of available ones and introduce the Reservation if possible.

This function is like reservePeriod but introduces several Reservations at once. It is important to note that if a Reservation in the list conflicts with others already made in the SCalendar, it will be excluded. Thus the order of the Reservations in the list matters, since if one Reservation passes the availability check but the next one does not, then latter will be excluded.

This function is like reservePeriod' but adds a list of Reservations without any availabilty check.

This function removes reserved identifiers in a Calendar according to the Set of identifiers and TimePeriod specified in the Cancellation. Thus a Cancellation only affects the nodes whose upper or lower bounds are included in the TimePeriod of the Cancellation.

This is like cancelPeriod but performs several Cancellations at once.

Given a TimePeriod and a SCalendar, this function returns a Report which summarizes important data about the reserved and available identifiers in that SCalendar.