indexing
	description: "A socket address."
	status: "See notice at end of class"
	date: "$Date$"
	revision: "$Revision$"

class interface
	SOCKET_ADDRESS

create 

	make
			-- Make space available for address size.

feature -- Access

	socket_address: SPECIAL [CHARACTER]
			-- Special data zone
			-- (from TO_SPECIAL)
	
feature -- Measurement

	count: INTEGER
			-- Size of address
	
feature -- Comparison

	is_equal (other: like Current): BOOLEAN
			-- Is current address equal to other?
		require -- from ANY
			other_not_void: other /= void
		ensure -- from ANY
			symmetric: Result implies other.is_equal (Current)
			consistent: standard_is_equal (other) implies Result
	
feature -- Status report

	family: INTEGER
			-- Get the socket family of socket address.
	
feature -- Status setting

	set_family (f: INTEGER)
			-- Set socket address family to f.
	
feature -- Duplication

	copy (other: like Current)
			-- Reinitialize by copying characters of other.
			-- (This is also used by clone.)
		require -- from ANY
			other_not_void: other /= void
			type_identity: same_type (other)
		ensure -- from ANY
			is_equal: is_equal (other)
		ensure then
			new_result_count: count = other.count or else count = address_size
	
feature -- Initalization

	make
			-- Make space available for address size.
	
invariant

		-- from ANY
	reflexive_equality: standard_is_equal (Current)
	reflexive_conformance: conforms_to (Current)

end -- class SOCKET_ADDRESS