indexing
description: "Absolute times"
status: "See notice at end of class"
date: "$Date$"
revision: "$Revision$"
access: time
class interface
TIME
create
make (h, m, s: INTEGER)
minutesecondhms
require
correct_time: is_correct_time (h, m, s, False)
ensure
hour_set: hour = h
minute_set: minute = m
second_set: second = s
make_fine (h, m: INTEGER; s: DOUBLE)
minutesecondhm
s
fractional_seconds
require
correct_time: is_correct_time (h, m, s, False)
ensure
hour_set: hour = h
minute_set: minute = m
fine_second_set: fine_second = s
make_now
make_by_seconds (sec: INTEGER)
sec
require
s_large_enough: sec >= 0
s_small_enough: sec < seconds_in_day
ensure
seconds_set: seconds = sec
make_by_fine_seconds (sec: DOUBLE)
sec
require
s_large_enough: sec >= 0
s_small_enough: sec < seconds_in_day
make_from_string (s: STRING; code: STRING)
code
require
s_exists: s /= void
c_exists: code /= void
time_valid: time_valid (s, code)
make_from_string_default (s: STRING)
default_format_string
require
s_exists: s /= void
time_valid: time_valid (s, default_format_string)
make_by_compact_time (c_t: INTEGER)
compact_time
require
c_t_not_void: c_t /= void
c_t_valid: compact_time_valid (c_t)
ensure
compact_time_set: compact_time = c_t
feature
make (h, m, s: INTEGER)
minutesecondhms
require
correct_time: is_correct_time (h, m, s, False)
ensure
hour_set: hour = h
minute_set: minute = m
second_set: second = s
make_by_compact_time (c_t: INTEGER)
compact_time
require
c_t_not_void: c_t /= void
c_t_valid: compact_time_valid (c_t)
ensure
compact_time_set: compact_time = c_t
make_by_fine_seconds (sec: DOUBLE)
sec
require
s_large_enough: sec >= 0
s_small_enough: sec < seconds_in_day
make_by_seconds (sec: INTEGER)
sec
require
s_large_enough: sec >= 0
s_small_enough: sec < seconds_in_day
ensure
seconds_set: seconds = sec
make_fine (h, m: INTEGER; s: DOUBLE)
minutesecondhm
s
fractional_seconds
require
correct_time: is_correct_time (h, m, s, False)
ensure
hour_set: hour = h
minute_set: minute = m
fine_second_set: fine_second = s
make_from_string (s: STRING; code: STRING)
code
require
s_exists: s /= void
c_exists: code /= void
time_valid: time_valid (s, code)
make_from_string_default (s: STRING)
default_format_string
require
s_exists: s /= void
time_valid: time_valid (s, default_format_string)
make_now
feature
compact_time: INTEGER
TIME_VALUE
fine_second: DOUBLE
TIME_VALUE
fractional_second: DOUBLE
fine_second
TIME_VALUE
hour: INTEGER
TIME_VALUE
Hours_in_day: INTEGER is 24
TIME_CONSTANTS
micro_second: INTEGER
TIME_VALUE
milli_second: INTEGER
TIME_VALUE
minute: INTEGER
TIME_VALUE
Minutes_in_hour: INTEGER is 60
TIME_CONSTANTS
nano_second: INTEGER
TIME_VALUE
origin: TIME
ensure ABSOLUTE
result_exists: Result /= void
second: INTEGER
TIME_VALUE
Seconds_in_day: INTEGER is 86400
TIME_CONSTANTS
Seconds_in_hour: INTEGER is 3600
TIME_CONSTANTS
Seconds_in_minute: INTEGER is 60
TIME_CONSTANTS
time_default_format_string: STRING
TIME_CONSTANTS
feature
duration: TIME_DURATION
ensure then
seconds_large_enough: duration.seconds_count >= 0
seconds_small_enough: duration.seconds_count < seconds_in_day
fine_seconds: DOUBLE
seconds: INTEGER
ensure
result_definition: Result = duration.seconds_count
feature
is_equal (other: like Current): BOOLEAN
other
COMPARABLE
require ANY
other_not_void: other /= void
ensure ANY
symmetric: Result implies other.is_equal (Current)
consistent: standard_is_equal (other) implies Result
ensure then COMPARABLE
trichotomy: Result = (not (Current < other) and not (other < Current))
max (other: like Current): like Current
other
COMPARABLE
require COMPARABLE
other_exists: other /= void
ensure COMPARABLE
current_if_not_smaller: Current >= other implies Result = Current
other_if_smaller: Current < other implies Result = other
min (other: like Current): like Current
other
COMPARABLE
require COMPARABLE
other_exists: other /= void
ensure COMPARABLE
current_if_not_greater: Current <= other implies Result = Current
other_if_greater: Current > other implies Result = other
three_way_comparison (other: like Current): INTEGER
other
COMPARABLE
require COMPARABLE
other_exists: other /= void
ensure COMPARABLE
equal_zero: (Result = 0) = is_equal (other)
smaller_negative: (Result = - 1) = (Current < other)
greater_positive: (Result = 1) = (Current > other)
infix "<" (other: like Current): BOOLEAN
other
require PART_COMPARABLE
other_exists: other /= void
ensure then COMPARABLE
asymmetric: Result implies not (other < Current)
infix "<=" (other: like Current): BOOLEAN
other
COMPARABLE
require PART_COMPARABLE
other_exists: other /= void
ensure then COMPARABLE
definition: Result = ((Current < other) or is_equal (other))
infix ">" (other: like Current): BOOLEAN
other
COMPARABLE
require PART_COMPARABLE
other_exists: other /= void
ensure then COMPARABLE
definition: Result = (other < Current)
infix ">=" (other: like Current): BOOLEAN
other
COMPARABLE
require PART_COMPARABLE
other_exists: other /= void
ensure then COMPARABLE
definition: Result = (other <= Current)
feature
set_fine_second (s: DOUBLE)
fine_seconds
TIME_VALUE
require TIME_MEASUREMENT
s_large_enough: s >= 0
s_small_enough: s < seconds_in_minute
ensure TIME_MEASUREMENT
fine_second_set: fine_second = s
set_fractionals (f: DOUBLE)
fractional_secondf
TIME_VALUE
require TIME_MEASUREMENT
f_large_enough: f >= 0
f_small_enough: f < 1
ensure TIME_MEASUREMENT
second_same: second = old second
set_hour (h: INTEGER)
hourh
TIME_VALUE
require TIME_MEASUREMENT
h_large_enough: h >= 0
h_small_enough: h < hours_in_day
ensure TIME_MEASUREMENT
hour_set: hour = h
set_minute (m: INTEGER)
minutem
TIME_VALUE
require TIME_MEASUREMENT
m_large_enough: m >= 0
m_small_enough: m < minutes_in_hour
ensure TIME_MEASUREMENT
minute_set: minute = m
set_second (s: INTEGER)
seconds
TIME_VALUE
require TIME_MEASUREMENT
s_large_enough: s >= 0
s_small_enough: s < seconds_in_minute
ensure TIME_MEASUREMENT
second_set: second = s
feature
fine_second_add (f: DOUBLE)
f
ffractional_second
hour_add (h: INTEGER)
h
hour_back
hour_forth
minute_add (m: INTEGER)
m
minute_back
minute_forth
relative_duration (other: like Current): TIME_DURATION
otherCurrent
require ABSOLUTE
other_exists: other /= void
ensure ABSOLUTE
result_exists: Result /= void
second_add (s: INTEGER)
s
second_back
second_forth
infix "+" (t: TIME_DURATION): TIME
t
require
t_exists: t /= void
ensure
result_exists: Result /= void
infix "-" (other: like Current): INTERVAL [like Current]
other
ABSOLUTE
require ABSOLUTE
other_exists: other /= void
other_smaller_than_current: other <= Current
ensure ABSOLUTE
result_exists: Result /= void
result_set: Result.start_bound.is_equal (other) and then Result.end_bound.is_equal (Current)
feature
formatted_out (s: STRING): STRING
s
require
s_exists: s /= void
out: STRING
time_default_format_string
feature
compact_time_valid (c_t: INTEGER): BOOLEAN
c_t
TIME_VALIDITY_CHECKER
require TIME_VALIDITY_CHECKER
c_t_not_void: c_t /= void
is_correct_time (h, m: INTEGER; s: DOUBLE; twelve_hour_scale: BOOLEAN): BOOLEAN
hmcodes
twelve_hour_scale
TIME_VALIDITY_CHECKER
time_valid (s: STRING; code_string: STRING): BOOLEAN
scode_string
TIME_VALIDITY_CHECKER
require TIME_VALIDITY_CHECKER
s_exists: s /= void
code_exists: code_string /= void
invariant
second_large_enough: second >= 0
second_small_enough: second < seconds_in_minute
fractionals_large_enough: fractional_second >= 0
fractionals_small_enough: fractional_second < 1
minute_large_enough: minute >= 0
minute_small_enough: minute < minutes_in_hour
hour_large_enough: hour >= 0
hour_small_enough: hour < hours_in_day
ANY
reflexive_equality: standard_is_equal (Current)
reflexive_conformance: conforms_to (Current)
COMPARABLE
irreflexive_comparison: not (Current < Current)
end -- TIME