indexing
	description: "Time Measurable Units"
	date: "$Date$"
	revision: "$Revision$"

deferred class interface
	TIME_MEASUREMENT

feature -- Access

	fine_second: DOUBLE
			-- Number of fine seconds associated with current object

	hour: INTEGER
			-- Number of hours associated with current object

	Hours_in_day: INTEGER is 24
			-- Number of hours in a day
			-- (from TIME_CONSTANTS)

	minute: INTEGER
			-- Number of minutes associated with current object

	Minutes_in_hour: INTEGER is 60
			-- Number of minutes in an hour
			-- (from TIME_CONSTANTS)

	second: INTEGER
			-- Number of seconds associated with current object.

	Seconds_in_day: INTEGER is 86400
			-- Number of seconds in an hour
			-- (from TIME_CONSTANTS)

	Seconds_in_hour: INTEGER is 3600
			-- Number of seconds in an hour
			-- (from TIME_CONSTANTS)

	Seconds_in_minute: INTEGER is 60
			-- Number of seconds in a minute
			-- (from TIME_CONSTANTS)

	time_default_format_string: STRING
			-- Default output format for times
			-- (from TIME_CONSTANTS)
	
feature -- Settings

	set_fine_second (s: DOUBLE)
			-- Set fine_second to s
		require
			s_large_enough: s >= 0
			s_small_enough: s < seconds_in_minute
		ensure
			fine_second_set: fine_second = s

	set_fractionals (f: DOUBLE)
			-- Set fractional_second to f.
		require
			f_large_enough: f >= 0
			f_small_enough: f < 1
		ensure
			second_same: second = old second

	set_hour (h: INTEGER)
			-- Set hour to h.
		require
			h_large_enough: h >= 0
			h_small_enough: h < hours_in_day
		ensure
			hour_set: hour = h

	set_minute (m: INTEGER)
			-- Set minute to m.
		require
			m_large_enough: m >= 0
			m_small_enough: m < minutes_in_hour
		ensure
			minute_set: minute = m

	set_second (s: INTEGER)
			-- Set second to s.
		require
			s_large_enough: s >= 0
			s_small_enough: s < seconds_in_minute
		ensure
			second_set: second = s
	
invariant

		-- from ANY
	reflexive_equality: standard_is_equal (Current)
	reflexive_conformance: conforms_to (Current)

end -- class TIME_MEASUREMENT