Package: Util.Calendars

Dependencies

with Util.Times;

Description

Copyright © 2001, 2002 by Thomas Wolf.
This piece of software is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This software is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License with this distribution, see file "GPL.txt". If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
As a special exception from the GPL, if other files instantiate generics from this unit, or you link this unit with other files to produce an executable, this unit does not by itself cause the resulting executable to be covered by the GPL. This exception does not however invalidate any other reasons why the executable file might be covered by the GPL.

Version: 1.1

Author:
Thomas Wolf (TW) <twolf AT acm DOT org>
Purpose:
Root package for the calendar subsystem.
Tasking Semantics
Neither task- nor abortion-safe.
Storage Semantics
No dynamic storage allocation.

Header

package Util.Calendars is
 

Known child units

Util.Calendars.Gregorian(package)
Util.Calendars.Julian(package)
Util.Calendars.Universal(package)
Util.Calendars.Western(package)

Exceptions

Date_Error
Any calendar operation may raise this exception if a date is not valid for a particular calendar. Possible reasons for Date_Error being raised include: passing a date before 15-OCT-1582 to a Gregorian calendar, or passing a non-existing date to a Universal calendar, such as a date in the range 05-OCT-1582 to 14-OCT-1582, if the switch date of the Universal calendar is not changed.

Type Summary

Calendar
Primitive Operations:  Image, Year

Other Items:

type Calendar is abstract tagged null record;
Abstract root type for all calendars. Note: any other operations are added by derived types. For instance, operations on days and months are added in child package Util.Calendars.Western.

They're not added here because other calendar systems may not have a concept of months in the sense of the western calendars.


subtype Year_Number is Integer;
But any calendar has a concept of a year! (Even if the counting systems may differ wildly, as may the length of a year.)

function Year
  (Base : in Calendar;
   Date : in Util.Times.Time)
  return Year_Number
  is abstract;
Return the year of the Date. May raise Date_Error if the Date is not a valid date for the given calendar Base.

function Image
  (Base : in Calendar;
   Date : in Util.Times.Time)
  return String
   is abstract;
Returns a string representation of the given Date. May raise Date_Error if the Date is not a valid date for the given calendar Base.
end Util.Calendars;