class EL_CODE_REPRESENTATION
Fixed length alpha-numeric 8-bit codes stored in one of:
1. NATURAL_16 (2 byte code string) 2. NATURAL_32 (4 byte code string) 3. NATURAL_64 (8 byte code string)
EL_CODE_REPRESENTATION* [N -> NUMERIC] EL_CODE_16_REPRESENTATION EL_CODE_32_REPRESENTATION EL_IP_ADDRESS_REPRESENTATION EL_CODE_64_REPRESENTATION
note
	description: "[
		Fixed length alpha-numeric 8-bit codes stored in one of:
		
			1. ${NATURAL_16} (2 byte code string)
			2. ${NATURAL_32} (4 byte code string)
			3. ${NATURAL_64} (8 byte code string)
	]"
	descendants: "See end of class"
	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-08-27 7:28:10 GMT (Tuesday 27th August 2024)"
	revision: "6"
		
		deferred class
	EL_CODE_REPRESENTATION [N -> NUMERIC]
inherit
	EL_STRING_FIELD_REPRESENTATION [N, STRING]
		undefine
			append_to_string
		redefine
			to_value
		end
	EL_REFLECTION_HANDLER
	EL_STRING_8_CONSTANTS
feature {NONE} -- Initialization
	make
		do
			item := Empty_string_8
		end
feature -- Basic operations
	append_comment (field_definition: STRING)
		-- append comment to meta data `field_definition'
		do
			field_definition.append (" -- " + ({N}).name + " code")
		end
feature -- Measurement
	byte_count: INTEGER
		deferred
		end
feature -- Conversion
	to_string (a_value: like to_value): STRING
		do
			if attached Buffer_8.empty as str then
				str.grow (byte_count)
				str.set_count (byte_count)
				str.fill_with ('%U')
				memory_copy (str.area, a_value)
				str.prune_all_trailing ('%U')
				Result := str.twin
			end
		end
feature -- Conversion
	to_value (general: READABLE_STRING_GENERAL): N
		require else
			valid_string: valid_string (general)
		deferred
		end
feature -- Contract Support
	valid_string (general: READABLE_STRING_GENERAL): BOOLEAN
		do
			Result := general.count <= byte_count
		end
feature {NONE} -- Implementation
	memory_copy (area: SPECIAL [CHARACTER]; a_value: like to_value)
		deferred
		end
note
	descendants: "[
			EL_CODE_REPRESENTATION* [N -> NUMERIC]
				${EL_CODE_16_REPRESENTATION}
				${EL_CODE_32_REPRESENTATION}
					${EL_IP_ADDRESS_REPRESENTATION}
				${EL_CODE_64_REPRESENTATION}
	]"
end