class EL_REFLECTIVE_I
Basic interface to reflective object useful in parallel inheritance
note
description: "Basic interface to reflective object useful in parallel inheritance"
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: "2025-05-05 6:33:34 GMT (Monday 5th May 2025)"
revision: "26"
deferred class
EL_REFLECTIVE_I
inherit
EL_FIELD_TYPE_QUERY_ROUTINES
EL_MODULE_EIFFEL
EL_SHARED_CLASS_ID
feature {EL_REFLECTION_HANDLER, EL_STRING_GENERAL_ROUTINES_I} -- Access
field_table: EL_FIELD_TABLE
-- lookup field `field_list.item' by `field_list.item.name'
do
Result := field_list.table
end
field_export_table: EL_EXPORT_FIELD_TABLE
-- lookup field `field_list.item' by `field_list.foreign_naming.imported'
do
Result := field_list.export_table
end
feature {EL_REFLECTIVE_I, EL_REFLECTION_HANDLER} -- Deferred
current_reflective: EL_REFLECTIVE
deferred
end
field_info_table: EL_OBJECT_FIELDS_TABLE
-- information on complete set of fields for `current_reflective'
deferred
end
field_list: EL_FIELD_LIST
deferred
end
feature -- Contract Support
valid_field_names (name_list: STRING): BOOLEAN
-- `True' if comma separated list of `names' are all valid field names
do
Result := field_info_table.has_all_names (name_list)
end
feature {NONE} -- Constants
frozen Default_field_order: EL_FIELD_LIST_ORDER
once
create Result.make_default
end
frozen Default_initial_values: EL_ARRAYED_LIST [FUNCTION [ANY]]
-- array of functions returning a new value for result type
once
create Result.make_empty
end
frozen Default_representations: EL_IMMUTABLE_KEY_8_TABLE [EL_FIELD_REPRESENTATION [ANY, ANY]]
once
create Result.make (0)
end
frozen Default_tuple_field_table: EL_TUPLE_FIELD_TABLE
once
create Result.make_empty
end
frozen Empty_field_set: EL_FIELD_INDICES_SET
once
create Result.make_empty
end
end