indexing
	description: "EIFFEL_SYSTEM - access to information about Eiffel classes"
class interface
	EIFFEL_SYSTEM
feature -- Checks
	checks_on: BOOLEAN
			-- current state of invariant checks
	set_checks_off
	set_checks_on
	
feature -- Invariants
	invariants_on: BOOLEAN
			-- current state of invariant checks
	set_invariants_off
	set_invariants_on
	
feature -- Loop invariants
	loop_invariants_on: BOOLEAN
			-- current state of loop invariant checks
	set_loop_invariants_off
	set_loop_invariants_on
	
feature -- Loop variants
	loop_variants_on: BOOLEAN
			-- current state of loop variant checks
	set_loop_variants_off
	set_loop_variants_on
	
feature -- Postconditions
	postconditions_on: BOOLEAN
			-- current state of postcondition checks
	set_postconditions_off
	set_postconditions_on
	
feature -- Preconditions
	preconditions_on: BOOLEAN
			-- current state of precondition checks
	set_preconditions_off
	set_preconditions_on
	
feature -- classes
	type_by_name (type_name: STRING): EIFFEL_TYPE
			-- retrieve by type name
		require
			type_name_not_void: type_name /= void
	type_for_object (object: ANY): EIFFEL_TYPE
		require
			object_not_void: object /= void;
			known_type: is_known_type (object.generating_type)
		ensure
			result_not_void: Result /= void
	
feature -- queries
	all_types: ARRAY [EIFFEL_TYPE]
			-- all classes that can be examined in this system
	is_known_type (type_name: STRING): BOOLEAN
			-- can this type be examined in the current system
		require
			type_name_not_void: type_name /= void
	
end -- class EIFFEL_SYSTEM