0024927: Getting rid of "Persistent" functionality -- Storable
[occt.git] / src / Quantity / Quantity_Date.cdl
1 -- Created on: 1993-01-04
2 -- Created by: J.P. BOUDIER - J.P. TIRAULT
3 -- Copyright (c) 1993-1999 Matra Datavision
4 -- Copyright (c) 1999-2014 OPEN CASCADE SAS
5 --
6 -- This file is part of Open CASCADE Technology software library.
7 --
8 -- This library is free software; you can redistribute it and/or modify it under
9 -- the terms of the GNU Lesser General Public License version 2.1 as published
10 -- by the Free Software Foundation, with special exception defined in the file
11 -- OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12 -- distribution for complete text of the license and disclaimer of any warranty.
13 --
14 -- Alternatively, this file may be used under the terms of Open CASCADE
15 -- commercial license or contractual agreement.
16
17 class Date from Quantity
18
19         ---Purpose: This class provides services to manage date information.
20         --          A date represents the following time intervals:
21         -- year, month, day, hour, minute, second,
22         -- millisecond and microsecond.
23         -- Current time is expressed in elapsed seconds
24         -- and microseconds beginning from 00:00 GMT,
25         -- January 1, 1979 (zero hour). The valid date can
26         -- only be later than this one.
27         -- Note: a Period object gives the interval between two dates.
28
29
30 uses Period
31
32
33 raises DateDefinitionError from Quantity , OutOfRange from Standard
34
35 is
36    
37   Create returns Date;
38         ---Purpose:  Constructs a default date
39         -- (00:00 GMT, January 1, 1979 (zero hour)); use the function
40         --   SetValues to define the required date; or
41
42   Create ( mm, dd, yyyy, hh, mn, ss : Integer ; mis , mics : Integer = 0)
43           returns Date
44         ---Purpose:   Constructs a date from the year yyyy, the
45         -- month mm, the day dd, the hour hh, the minute
46         -- mn, the second ss, the millisecond mis
47         -- (defaulted to 0) and the microsecond mics (defaulted to 0)..
48         --          With:      1 <= mm <= 12
49         --                     1 <= dd <= max number of days of <mm>
50         --                     1979 <= yyyy
51         --                     0 <= hh <= 23
52         --                     0 <= mn <= 59
53         --                     0 <= ss <= 59
54         --                     0 <= mis <= 999
55         --                     0 <= mics <= 999 
56         -- Exceptions
57         -- Quantity_DateDefinitionError if mm, dd, hh,
58         -- mn, ss, mis and mics are not the components of the valid date.
59     raises DateDefinitionError;
60
61   Values (me ; mm, dd, yy, hh, mn, ss, mis, mics : out Integer)  is static;
62         ---Purpose: Gets a complete Date.
63         -- -   in mm - the month,
64         -- -   in dd - the day,
65         -- -   in yyyy - the year,
66         -- -   in hh - the hour,
67         -- -   in mn - the minute,
68         -- -   in ss - the second,
69         -- -   in mis - the millisecond, and
70         -- -   in mics - the microsecond
71   SetValues (me : out; mm, dd, yy, hh, mn, ss : Integer; 
72              mis, mics : Integer = 0)
73         ---Purpose: Assigns to this date the year yyyy, the month
74         -- mm, the day dd, the hour hh, the minute mn, the
75         -- second ss, the millisecond mis (defaulted to 0)
76         -- and the microsecond mics (defaulted to 0).
77         -- Exceptions
78         -- Quantity_DateDefinitionError if mm, dd, hh,
79         -- mn, ss, mis and mics are not components of a valid date.
80     raises DateDefinitionError is static;
81
82   Difference (me  : out; anOther : Date) returns Period is static;
83         ---Purpose: Subtracts one Date from another one to find the period
84         --          between and returns the value.
85         --          The result is the absolute value between the difference
86         --          of two dates.
87
88   Subtract (me  : out; aPeriod : Period) returns Date 
89         ---Purpose: Subtracts a period from a Date and returns the new Date.
90         --          Raises an exception if the result date is anterior to
91         --          Jan 1, 1979.
92         ---C++: alias operator -
93   raises OutOfRange is static;
94
95   Add(me  : out; aPeriod : Period) returns Date is static;
96         ---Purpose: Adds a Period to a Date and returns the new Date.
97         ---C++: alias operator +
98
99   Year (me : out) returns Integer is static;
100         ---Purpose: Returns year of a Date.
101
102   Month (me : out) returns Integer is static;
103         ---Purpose: Returns month of a Date.
104
105   Day (me : out) returns Integer is static;
106         ---Purpose: Returns Day of a Date.
107
108   Hour (me : out) returns Integer is static;
109         ---Purpose: Returns Hour of a Date.
110
111   Minute (me : out) returns Integer is static;
112         ---Purpose: Returns minute of a Date.
113
114   Second (me : out) returns Integer is static;
115         ---Purpose: Returns seconde of a Date.
116
117   MilliSecond (me : out) returns Integer is static;
118         ---Purpose: Returns millisecond of a Date.
119
120   MicroSecond (me : out) returns Integer is static;
121         ---Purpose: Returns microsecond of a Date.
122
123   IsEqual (me ; anOther : Date) returns Boolean is static;
124         ---Purpose: Returns TRUE if both <me> and <other> are equal.
125         -- This method is an alias of operator ==.
126         ---C++: alias operator ==
127   
128
129   IsEarlier (me ; anOther : Date) returns Boolean is static;
130         ---Purpose: Returns TRUE if <me> is earlier than <other>.
131         ---C++: alias operator <
132
133   IsLater (me ; anOther : Date) returns Boolean is static;
134         ---Purpose: Returns TRUE if <me> is later then <other>.
135         ---C++: alias operator >
136   
137   IsValid (myclass ; mm, dd, yy, hh, mn, ss : Integer; 
138              mis, mics : Integer = 0) returns Boolean;
139         ---Purpose: Checks the validity of a date - returns true if a
140         -- date defined from the year yyyy, the month mm,
141         -- the day dd, the hour hh, the minute mn, the
142         -- second ss, the millisecond mis (defaulted to 0)
143         -- and the microsecond mics (defaulted to 0) is valid.
144         -- A date must satisfy the conditions above:
145         -- -   yyyy is greater than or equal to 1979,
146         -- -   mm lies within the range [1, 12] (with 1
147         --   corresponding to January and 12 to December),
148         -- -   dd lies within a valid range for the month mm
149         --   (from 1 to 28, 29, 30 or 31 depending on
150         --   mm and whether yyyy is a leap year or not),
151         -- -   hh lies within the range [0, 23],
152         -- -   mn lies within the range [0, 59],
153         -- -   ss lies within the range [0, 59],
154         -- -   mis lies within the range [0, 999],
155         -- -   mics lies within the range [0, 999].C
156     
157   IsLeap (myclass  ; yy : Integer ) returns Boolean;
158         ---Purpose: Returns true if a year is a leap year.
159         --          The leap years are divisable by 4 and not by 100 except 
160         --          the years divisable by 400.
161         ---C++: inline
162
163  fields
164   mySec  : Integer;
165   myUSec : Integer;
166 end Date from Quantity;
167