indexing
	description: "Code used by the DATE/TIME to STRING conversion"
	date: "$Date$"
	revision: "$Revision$"

class interface
	DATE_TIME_CODE

create 

	make (v: STRING)
			-- Create code.
		require
			v_exists: v /= void
			v_is_code: is_code (v)
		ensure
			value_set: value.is_equal (v)

feature -- Status report

	is_numeric: BOOLEAN
			-- Has the code a numeric value?

	is_text: BOOLEAN
			-- Has the code a string value?
	
feature -- Attributes

	count_max: INTEGER
			-- Count max of the real value

	count_min: INTEGER
			-- Count min of the real value

	name: STRING
			-- Name of the code

	type: INTEGER
			-- Type number.

	value: STRING
			-- String code

	value_max: INTEGER
			-- Max of the real value

	value_min: INTEGER
			-- Min of the real value
	
feature -- Change

	set_value (v: STRING)
			-- Set all the attributes such as
			-- Value, count_max, etc.
		require
			v_exists: v /= void
			v_is_code: is_code (v)
		ensure
			value_set: value.is_equal (v)
	
feature -- Creation

	make (v: STRING)
			-- Create code.
		require
			v_exists: v /= void
			v_is_code: is_code (v)
		ensure
			value_set: value.is_equal (v)
	
feature -- Preconditions

	is_code (s: STRING): BOOLEAN
			-- Is the string a code?
			-- (from CODE_VALIDITY_CHECKER)
		require -- from CODE_VALIDITY_CHECKER
			s_exists: s /= void

	is_colon (s: STRING): BOOLEAN
			-- Is the code a separator-colomn?
			-- (from CODE_VALIDITY_CHECKER)
		require -- from CODE_VALIDITY_CHECKER
			s_exists: s /= void

	is_comma (s: STRING): BOOLEAN
			-- Is the code a separator-coma?
			-- (from CODE_VALIDITY_CHECKER)
		require -- from CODE_VALIDITY_CHECKER
			s_exists: s /= void

	is_day (s: STRING): BOOLEAN
			-- Is the code a day-numeric?
			-- (from CODE_VALIDITY_CHECKER)
		require -- from CODE_VALIDITY_CHECKER
			s_exists: s /= void

	is_day0 (s: STRING): BOOLEAN
			-- Is the code a day-numeric
			-- Padded with zero?
			-- (from CODE_VALIDITY_CHECKER)
		require -- from CODE_VALIDITY_CHECKER
			s_exists: s /= void

	is_day_text (s: STRING): BOOLEAN
			-- Is the code a day-text?
			-- (from CODE_VALIDITY_CHECKER)
		require -- from CODE_VALIDITY_CHECKER
			s_exists: s /= void

	is_dot (s: STRING): BOOLEAN
			-- Is the code a separator-dot?
			-- (from CODE_VALIDITY_CHECKER)
		require -- from CODE_VALIDITY_CHECKER
			s_exists: s /= void

	is_fractional_second (s: STRING): BOOLEAN
			-- Is the code a fractional-second
			-- With precision to n figures?
			-- (from CODE_VALIDITY_CHECKER)
		require -- from CODE_VALIDITY_CHECKER
			s_exists: s /= void

	is_hour (s: STRING): BOOLEAN
			-- Is the code a 24-hour-clock-scale?
			-- (from CODE_VALIDITY_CHECKER)
		require -- from CODE_VALIDITY_CHECKER
			s_exists: s /= void

	is_hour0 (s: STRING): BOOLEAN
			-- Is the code a 24-hour-clock-scale
			-- Padded with zero?
			-- (from CODE_VALIDITY_CHECKER)
		require -- from CODE_VALIDITY_CHECKER
			s_exists: s /= void

	is_hour12 (s: STRING): BOOLEAN
			-- Is the code a 12-hour-clock-scale?
			-- (from CODE_VALIDITY_CHECKER)
		require -- from CODE_VALIDITY_CHECKER
			s_exists: s /= void

	is_meridiem (s: STRING): BOOLEAN
			-- Is the code a meridiem notation?
			-- (from CODE_VALIDITY_CHECKER)
		require -- from CODE_VALIDITY_CHECKER
			s_exists: s /= void

	is_minus (s: STRING): BOOLEAN
			-- Is the code a separator-minus?
			-- (from CODE_VALIDITY_CHECKER)
		require -- from CODE_VALIDITY_CHECKER
			s_exists: s /= void

	is_minute (s: STRING): BOOLEAN
			-- Is the code a minute-numeric?
			-- (from CODE_VALIDITY_CHECKER)
		require -- from CODE_VALIDITY_CHECKER
			s_exists: s /= void

	is_minute0 (s: STRING): BOOLEAN
			-- Is the code a minute-numeric
			-- Padded with zero?
			-- (from CODE_VALIDITY_CHECKER)
		require -- from CODE_VALIDITY_CHECKER
			s_exists: s /= void

	is_month (s: STRING): BOOLEAN
			-- Is the code a month-numeric?
			-- (from CODE_VALIDITY_CHECKER)
		require -- from CODE_VALIDITY_CHECKER
			s_exists: s /= void

	is_month0 (s: STRING): BOOLEAN
			-- Is the code a month-numeric
			-- Padded with zero?
			-- (from CODE_VALIDITY_CHECKER)
		require -- from CODE_VALIDITY_CHECKER
			s_exists: s /= void

	is_month_text (s: STRING): BOOLEAN
			-- Is the code a month-text?
			-- (from CODE_VALIDITY_CHECKER)
		require -- from CODE_VALIDITY_CHECKER
			s_exists: s /= void

	is_second (s: STRING): BOOLEAN
			-- Is the code a second-numeric?
			-- (from CODE_VALIDITY_CHECKER)
		require -- from CODE_VALIDITY_CHECKER
			s_exists: s /= void

	is_second0 (s: STRING): BOOLEAN
			-- Is the code a second-numeric
			-- Padded with zero?
			-- (from CODE_VALIDITY_CHECKER)
		require -- from CODE_VALIDITY_CHECKER
			s_exists: s /= void

	is_separator (s: STRING): BOOLEAN
			-- Is the code a seperator?
			-- (from CODE_VALIDITY_CHECKER)
		require -- from CODE_VALIDITY_CHECKER
			s_exists: s /= void

	is_slash (s: STRING): BOOLEAN
			-- Is the code a separator-slash?
			-- (from CODE_VALIDITY_CHECKER)
		require -- from CODE_VALIDITY_CHECKER
			s_exists: s /= void

	is_space (s: STRING): BOOLEAN
			-- Is the code a separator-space?
			-- (from CODE_VALIDITY_CHECKER)
		require -- from CODE_VALIDITY_CHECKER
			s_exists: s /= void

	is_year2 (s: STRING): BOOLEAN
			-- Is the code a year-numeric
			-- On 2 figures?
			-- (from CODE_VALIDITY_CHECKER)
		require -- from CODE_VALIDITY_CHECKER
			s_exists: s /= void

	is_year4 (s: STRING): BOOLEAN
			-- Is the code a year-numeric
			-- On 4 figures?
			-- (from CODE_VALIDITY_CHECKER)
		require -- from CODE_VALIDITY_CHECKER
			s_exists: s /= void
	
invariant

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

end -- class DATE_TIME_CODE