note
	description: "Representation of an Eiffel type."
	library: "Free implementation of ELKS library"
	status: "See notice at end of class."
	legal: "See notice at end of class."
	date: "$Date: 2020-05-19 14:32:38 +0000 (Tue, 19 May 2020) $"
	revision: "$Revision: 104260 $"

frozen class interface
	TYPE [G]

create {NONE}
convert
	to_string_8: {STRING_8,
		READABLE_STRING_8},
	to_string_32: {STRING_32,
		READABLE_STRING_32,
		STRING_GENERAL,
		READABLE_STRING_GENERAL}

feature -- Access

	name_32: IMMUTABLE_STRING_32
			-- Name of Eiffel type represented by Current, using Eiffel style guidelines
			-- as specified in OOSC2 (e.g. COMPARABLE, HASH_TABLE [FOO, BAR], ...)
		ensure
			name_32_attached: attached Result

	name: IMMUTABLE_STRING_8
			-- Name of Eiffel type represented by Current, using Eiffel style guidelines
			-- as specified in OOSC2 (e.g. COMPARABLE, HASH_TABLE [FOO, BAR], ...)
			-- Consider using name_32 instead.
		ensure
			name_not_void: Result /= Void

	generic_parameter_type (i: INTEGER_32): TYPE [detachable ANY]
			-- i-th generic parameter of Eiffel type represented by Current
		require
			i_large_enough: i >= 1
			i_small_enough: i <= generic_parameter_count
		ensure
			generic_parameter_not_void: Result /= Void

	type_id: INTEGER_32
			-- Id of the Eiffel type represented by Current
		ensure
			type_id_not_negative: Result >= 0

	hash_code: INTEGER_32
			-- Hash code value
	
feature -- Measurement

	generic_parameter_count: INTEGER_32
			-- Number of generic parameters in Eiffel type represented by Current
		ensure
			generic_parameter_count_not_negative: Result >= 0
	
feature -- Status report

	has_default: BOOLEAN
			-- Is current type a type that has a default value?
			-- I.e. a detachable type or an expanded type.

	is_deferred: BOOLEAN
			-- Is current type a deferred type?

	is_expanded: BOOLEAN
			-- Is current type an expanded type?

	is_attached: BOOLEAN
			-- Is current type attached?
	
feature -- Comparison

	is_equal (other: like Current): BOOLEAN
			-- Is other attached to an object considered
			-- equal to current object?

	is_strictly_conforming_to alias "<" (other: like Current): BOOLEAN
			-- Does type represented by Current conform to type represented by other and differ from it?

	is_conforming_to alias "<=" (other: like Current): BOOLEAN
			-- Does type represented by Current conform to type represented by other?
	
feature -- Conversion

	adapt alias "[]" (g: detachable G): detachable G
			-- Adapts g or calls necessary conversion routine to adapt g
		ensure
			adapted: Result ~ g

	attempted alias "/" (obj: detachable separate ANY): detachable G
			-- If possible, obj understood as an object of type G;
			-- If not, default detachable value of type G..
		ensure
			assigned_or_void: Result = obj or Result = default_detachable_value

	default_detachable_value: detachable G

	default: G
		require
			has_default: has_default
	
feature -- Output

	out: STRING_8
			-- New string containing terse printable representation
			-- of current object

	debug_output: READABLE_STRING_32
			-- String that should be displayed in debugger to represent Current.
	
note
	copyright: "Copyright (c) 1984-2020, Eiffel Software and others"
	license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
	source: "[
		Eiffel Software
		5949 Hollister Ave., Goleta, CA 93117 USA
		Telephone 805-685-1006, Fax 805-685-6869
		Website http://www.eiffel.com
		Customer support http://support.eiffel.com
	]"

end -- class TYPE

Generated by ISE EiffelStudio