class EL_FIELD_LIST_ORDER
Implementation of field ordering and shifting to be applied to an instance of EL_FIELD_LIST associated with object conforming to EL_REFLECTIVE
note
description: "[
Implementation of field ordering and shifting to be applied to an instance of
${EL_FIELD_LIST} associated with 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-01-20 19:18:24 GMT (Saturday 20th January 2024)"
revision: "6"
class
EL_FIELD_LIST_ORDER
create
make, make_alphabetical, make_default
feature {NONE} -- Initialization
make (a_reordered_fields: STRING)
do
make_default
reordered_fields := a_reordered_fields
end
make_alphabetical (a_reordered_fields: STRING)
do
make (a_reordered_fields)
set_alphabetical_sort
end
make_default
do
create reordered_fields.make_empty
create field_shifts.make_empty
end
feature -- Access
field_shifts: ARRAY [TUPLE [index: INTEGER_32; offset: INTEGER_32]]
-- arguments to be applied to `Result.shift_i_th' in `{EL_CLASS_META_DATA}.new_field_list'
-- after applying `name_sort'
name_sort: detachable FUNCTION [EL_REFLECTED_FIELD, IMMUTABLE_STRING_8]
-- sorting function to be applied to result of `{EL_CLASS_META_DATA}.new_field_list'
reordered_fields: STRING
-- comma separated list of explicitly ordered fields to be shifted to the end of `Meta_data.field_list'
-- after the `name_sort' function has been applied
feature -- Element change
set_name_sort (a_name_sort: FUNCTION [EL_REFLECTED_FIELD, IMMUTABLE_STRING_8])
do
name_sort := a_name_sort
end
set_alphabetical_sort
do
name_sort := agent {EL_REFLECTED_FIELD}.name
end
end