class EL_CLASS_TYPE_ID_ENUM

(source code)

description

Common class type identifiers accesible via EL_SHARED_CLASS_ID

note
	description: "Common class type identifiers accesible via ${EL_SHARED_CLASS_ID}"

	author: "Finnian Reilly"
	copyright: "Copyright (c) 2001-2022 Finnian Reilly"
	contact: "finnian at eiffel hyphen loop dot com"

	license: "MIT license (See: en.wikipedia.org/wiki/MIT_License)"
	date: "2024-10-07 7:55:18 GMT (Monday 7th October 2024)"
	revision: "36"

class
	EL_CLASS_TYPE_ID_ENUM

inherit
	EL_TYPE_ID_ENUMERATION
		redefine
			make
		end

	EL_MODULE_EIFFEL

	EL_NUMERIC_TYPE_ID_ENUMERATION

	EL_TYPE_CATEGORY_CONSTANTS

create
	make

feature {NONE} -- Initialization

	make
		do
			Precursor
			unicode_types := <<
				CHARACTER_32, EL_STRING_32, IMMUTABLE_STRING_32, STRING_32, EL_ZSTRING,
				FILE_PATH, DIR_PATH, EL_DIR_URI_PATH, EL_FILE_URI_PATH
			>>
			character_data_types := <<
				CHARACTER_8, CHARACTER_32,
				IMMUTABLE_STRING_8, STRING_8,
				IMMUTABLE_STRING_32, STRING_32, ZSTRING,
				FILE_PATH, DIR_PATH, EL_FILE_URI_PATH, EL_DIR_URI_PATH
			>>
			immutable_string_types := << IMMUTABLE_STRING_8, IMMUTABLE_STRING_32 >>
			readable_string_8_types := <<
				IMMUTABLE_STRING_8, STRING_8, EL_STRING_8, EL_URI, EL_URL, EL_UTF_8_STRING
			>>
			readable_string_32_types := <<
				EL_FLOATING_ZSTRING, EL_STRING_32, IMMUTABLE_STRING_32, STRING_32, ZSTRING
			>>
			el_path_types := << EL_FILE_PATH, EL_DIR_PATH, EL_DIR_URI_PATH, EL_FILE_URI_PATH >>
		end

feature -- Access

	object_type_category (object: ANY): NATURAL_8
		do
			Result := type_category ({ISE_RUNTIME}.dynamic_type (object))
		end

	type_category (type_id: INTEGER): NATURAL_8
		do
			if attached Eiffel as eif then
				if eif.is_type_in_set (type_id, readable_string_8_types) then
					Result := C_readable_string_8

				elseif eif.is_type_in_set (type_id, readable_string_32_types) then
					Result := C_readable_string_32

				elseif eif.is_type_in_set (type_id, el_path_types) then
					Result := C_el_path

				elseif type_id = EL_PATH_STEPS then
					Result := C_el_path_steps

				elseif type_id = PATH then
					Result := C_path

				elseif eif.type_conforms_to (type_id, EL_PATH) then
					Result := C_el_path

				elseif eif.type_conforms_to (type_id, TYPE__ANY) then
					Result := C_type_any

				elseif eif.type_conforms_to (type_id, READABLE_STRING_8) then
					Result := C_readable_string_8

				elseif eif.type_conforms_to (type_id, READABLE_STRING_32) then
					Result := C_readable_string_32

				end
			end
		end

feature -- Type sets

	character_data_types: SPECIAL [INTEGER]
		-- set of types containing character data

	el_path_types: SPECIAL [INTEGER]
		-- Eiffel-Loop path types

	immutable_string_types: SPECIAL [INTEGER]

	readable_string_32_types: SPECIAL [INTEGER]

	readable_string_8_types: SPECIAL [INTEGER]

	unicode_types: SPECIAL [INTEGER]
		-- set of types containing character data from the Unicode character set

feature -- CHARACTER types

	CHARACTER_32: INTEGER

	CHARACTER_8: INTEGER

feature -- String types

	EL_FLOATING_ZSTRING: INTEGER

	EL_STRING_32: INTEGER

	EL_STRING_8: INTEGER

	EL_URI: INTEGER

	EL_URL: INTEGER

	EL_UTF_8_STRING: INTEGER

	EL_ZSTRING: INTEGER

	IMMUTABLE_STRING_32: INTEGER

	IMMUTABLE_STRING_8: INTEGER

	STRING_32: INTEGER

	STRING_8: INTEGER

feature -- Abstract Strings

	READABLE_STRING_32: INTEGER

	READABLE_STRING_8: INTEGER

	STRING_GENERAL: INTEGER

	READABLE_STRING_GENERAL: INTEGER

feature -- Path types

	EL_DIR_PATH: INTEGER

	EL_DIR_URI_PATH: INTEGER

	EL_FILE_PATH: INTEGER

	EL_FILE_URI_PATH: INTEGER

	EL_PATH: INTEGER

	EL_PATH_STEPS: INTEGER

	EL_URI_PATH: INTEGER

feature -- Class aliases

	DIR_PATH: INTEGER
		do
			Result := EL_DIR_PATH
		end

	FILE_PATH: INTEGER
		do
			Result := EL_FILE_PATH
		end

	ZSTRING: INTEGER
		-- alias
		do
			Result := EL_ZSTRING
		end

feature -- Generic types

	ARRAYED_LIST__ANY: INTEGER
		-- ARRAYED_LIST [ANY]

	BAG__ANY: INTEGER
		-- BAG [ANY]

	COLLECTION__ANY: INTEGER
		-- COLLECTION [ANY]

	EL_MAKEABLE_FROM_STRING__STRING_GENERAL: INTEGER
		-- EL_MAKEABLE_FROM_STRING [STRING_GENERAL]

	EL_SUBSTRING__STRING_GENERAL: INTEGER
		-- EL_SUBSTRING [STRING_GENERAL]

	HASH_TABLE__ANY__HASHABLE: INTEGER
		-- HASH_TABLE [ANY, HASHABLE]

	TYPE__ANY: INTEGER
		-- TYPE [ANY]

feature -- Eiffel-Loop types

	EL_BOOLEAN_OPTION: INTEGER

	EL_MAKEABLE: INTEGER

	EL_QUANTITY_TEMPLATE: INTEGER

	EL_REFLECTIVE: INTEGER

	EL_STORABLE: INTEGER

feature -- Other types

	ANY: INTEGER

	BOOLEAN: INTEGER

	COMPARABLE: INTEGER

	DATE_TIME: INTEGER

	PATH: INTEGER

	TUPLE: INTEGER

end