class EL_FIELD_VALUE_TABLE
Client examples: REFLECTION_TEST_SET
Table of field values of type G from an object conforming to EL_REFLECTIVE
note
	description: "Table of field values of type **G** from an object conforming to ${EL_REFLECTIVE}"
	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-09-22 14:00:56 GMT (Sunday 22nd September 2024)"
	revision: "10"
		
		class
	EL_FIELD_VALUE_TABLE [G]
inherit
	EL_STRING_8_TABLE [G]
		rename
			make as make_sized
		end
create
	make, make_exported, make_conforming, make_conforming_exported
feature {NONE} -- Initialization
	make (object: EL_REFLECTIVE)
		do
			make_with_criteria (object, False, False)
		end
	make_conforming (object: EL_REFLECTIVE)
		do
			make_with_criteria (object, True, False)
		end
	make_conforming_exported (object: EL_REFLECTIVE)
		do
			make_with_criteria (object, True, True)
		end
	make_exported (object: EL_REFLECTIVE)
		do
			make_with_criteria (object, False, True)
		end
	make_with_criteria (object: EL_REFLECTIVE; conforming_types, exported_name: BOOLEAN)
		local
			type_query: EL_FIELD_TYPE_QUERY [G]
		do
			create type_query.make (object, conforming_types)
			if attached type_query.reference_fields as field_list then
				make_equal (field_list.count)
				across field_list as list loop
					if attached list.item as field and then attached {G} field.value (object) as value then
						extend (value, type_query.field_name (field, exported_name))
					end
				end
			elseif attached type_query.expanded_fields as field_list then
				make_equal (field_list.count)
				across field_list as list loop
					if attached list.item as field then
						extend (field.value (object), type_query.field_name (field, exported_name))
					end
				end
			end
		end
end