class JAVA_OBJECT_ARRAY

(source code)

description

Access to array of Java objects

note
	description: "Access to array of Java objects"
	legal: "See notice at end of class."
	status: "See notice at end of class."
	date: "$Date: 2013-05-30 09:32:44 -0700 (Thu, 30 May 2013) $"
	revision: "$Revision: 92646 $"

class
	JAVA_OBJECT_ARRAY

inherit
	JAVA_ARRAY

create
	make,
	make_from_pointer

feature -- Initialization

	make (size: INTEGER; element_name: STRING)
			-- create a new Java array and an Eiffel accessor object
			-- Note: Java arrays are indexed from zero
		require
			size_ok: size > 0
			element_ok: element_name /= Void
			element_exists: class_exists (element_name)
		local
			l_jarray: like jarray
		do
			check
				from_precondition: attached jni.find_class (element_name) as element_type
			then
				l_jarray := jni.new_object_array (size, element_type.java_class_id, default_pointer)
			end
			check l_jarray_not_default: l_jarray /= default_pointer end
			make_from_pointer (l_jarray)
		end

feature -- Access

	item (index: INTEGER): detachable JAVA_OBJECT
			-- object at index-th position
		require
			valid_index: valid_index (index)
		local
			jo: POINTER
		do
			jo := jni.get_object_array_element (jarray, index)
				-- Find the correspponding Eiffel object or create a new one
			if jo /= default_pointer then
				Result := jni.java_object_table.item (jo)
				if Result = Void then
					create Result.make_from_pointer (jo)
				end
			end
		end

feature -- Element change

	put (an_item: JAVA_OBJECT; index: INTEGER)
			-- put an object at index
		require
			an_item_not_void: an_item /= Void
			valid_index: valid_index (index)
		do
			jni.set_object_array_element (jarray, index, an_item.java_object_id)
		ensure
			inserted: equal (item (index), an_item)
		end

feature -- Constract support

	class_exists (name: STRING): BOOLEAN
		do
			Result := jni.find_class (name) /= Void
		end

note
	copyright:	"Copyright (c) 1984-2013, Eiffel Software and others"
	license:	"Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
	source: "[
			Eiffel Software
			5949 Hollister Ave., Goleta, CA 93117 USA
			Telephone 805-685-1006, Fax 805-685-6869
			Website http://www.eiffel.com
			Customer support http://support.eiffel.com
		]"




end