note
	description: "Internal routine for RT_DBG_ classes"
	status: "See notice at end of class."
	legal: "See notice at end of class."
	date: "$Date: 2017-04-12 13:15:47 +0000 (Wed, 12 Apr 2017) $"
	revision: "$Revision: 100150 $"

deferred class interface
	RT_DBG_INTERNAL

feature -- Object access

	frozen object_field_count (obj: ANY): INTEGER_32
			-- Field_count on obj
		require
			obj_attached: obj /= Void

	frozen object_records (obj: ANY): detachable ARRAYED_LIST [RT_DBG_VALUE_RECORD]
			-- List of field records on obj
		require
			obj_attached: obj /= Void

	frozen object_is_expanded (object: ANY): BOOLEAN
			-- Is object an expanded value ?
		require
			object_not_void: object /= Void

	frozen field_index_at (off: INTEGER_32; obj: ANY): INTEGER_32
			-- Field name at offset off on obj
		require
				obj /= Void

	frozen field_name_at (off: INTEGER_32; obj: ANY): detachable STRING_8
			-- Field name at offset off on obj
		require
				obj /= Void

	frozen field_at (off: INTEGER_32; a_field_type: NATURAL_32; object: ANY): detachable ANY
			-- Object attached at offset off field of object
			-- (directly or through a reference)
		require
			object_not_void: object /= Void
			index_large_enough: off >= 1

	frozen stack_value_at (dep: INTEGER_32; a_loc_type: INTEGER_32; pos: INTEGER_32; a_rt_type: NATURAL_32): detachable ANY
			-- Object attached at offset off field of object
			-- (directly or through a reference)
		require
			index_large_enough: pos >= 1

	frozen eif_type (a_field_type: NATURAL_32): INTEGER_32
			-- EIF_ type from field type a_field_type

	frozen rt_dynamic_type (object: ANY): INTEGER_32
			-- Dynamic type of object
		require
			object_not_void: object /= Void
		ensure
			rt_dynamic_type_nonnegative: Result >= 0
	
feature -- Change field

	set_field_at (off: INTEGER_32; a_type: NATURAL_32; value: detachable ANY; object: ANY)
		require
			object_attached: object /= Void
	
feature -- Access local

	frozen c_stack_value_at (dep: INTEGER_32; a_loc_type: INTEGER_32; pos: INTEGER_32; a_rt_type: NATURAL_32): detachable ANY
			-- Object value referenced at off offset of object
	
feature -- Change local

	Rt_dlt_argument: INTEGER_32 = 0
			-- DLT=DebugLocalType, the type is an argument of a function

	Rt_dlt_localvar: INTEGER_32 = 1
			-- DLT=DebugLocalType, the type is a local variable inside a function

	Rt_dlt_result: INTEGER_32 = 2
			-- DLT=DebugLocalType, the type is the Result of the current feature

	set_stack_value_at (dep: INTEGER_32; a_loc_type: INTEGER_32; pos: INTEGER_32; a_rt_type: NATURAL_32; value: detachable ANY): INTEGER_32
			-- Set stack value at position pos on stack of depth dep with value
		require
			a_loc_type_valid: a_loc_type = Rt_dlt_localvar or a_loc_type = Rt_dlt_argument or a_loc_type = Rt_dlt_result

	frozen c_set_boolean_stack_value (dep: INTEGER_32; a_loc_type: INTEGER_32; pos: INTEGER_32; a_bool: BOOLEAN): INTEGER_32

	frozen c_set_character_8_stack_value (dep: INTEGER_32; a_loc_type: INTEGER_32; pos: INTEGER_32; a_ch8: CHARACTER_8): INTEGER_32

	frozen c_set_character_32_stack_value (dep: INTEGER_32; a_loc_type: INTEGER_32; pos: INTEGER_32; a_ch32: CHARACTER_32): INTEGER_32

	frozen c_set_natural_8_stack_value (dep: INTEGER_32; a_loc_type: INTEGER_32; pos: INTEGER_32; a_n8: NATURAL_8): INTEGER_32

	frozen c_set_natural_16_stack_value (dep: INTEGER_32; a_loc_type: INTEGER_32; pos: INTEGER_32; a_n16: NATURAL_16): INTEGER_32

	frozen c_set_natural_32_stack_value (dep: INTEGER_32; a_loc_type: INTEGER_32; pos: INTEGER_32; a_n32: NATURAL_32): INTEGER_32

	frozen c_set_natural_64_stack_value (dep: INTEGER_32; a_loc_type: INTEGER_32; pos: INTEGER_32; a_n64: NATURAL_64): INTEGER_32

	frozen c_set_integer_8_stack_value (dep: INTEGER_32; a_loc_type: INTEGER_32; pos: INTEGER_32; a_i8: INTEGER_8): INTEGER_32

	frozen c_set_integer_16_stack_value (dep: INTEGER_32; a_loc_type: INTEGER_32; pos: INTEGER_32; a_i16: INTEGER_16): INTEGER_32

	frozen c_set_integer_32_stack_value (dep: INTEGER_32; a_loc_type: INTEGER_32; pos: INTEGER_32; a_i32: INTEGER_32): INTEGER_32

	frozen c_set_integer_64_stack_value (dep: INTEGER_32; a_loc_type: INTEGER_32; pos: INTEGER_32; a_i64: INTEGER_64): INTEGER_32

	frozen c_set_real_32_stack_value (dep: INTEGER_32; a_loc_type: INTEGER_32; pos: INTEGER_32; a_i32: REAL_32): INTEGER_32

	frozen c_set_real_64_stack_value (dep: INTEGER_32; a_loc_type: INTEGER_32; pos: INTEGER_32; a_i64: REAL_64): INTEGER_32

	frozen c_set_pointer_stack_value (dep: INTEGER_32; a_loc_type: INTEGER_32; pos: INTEGER_32; a_p: POINTER): INTEGER_32

	frozen c_set_reference_stack_value (dep: INTEGER_32; a_loc_type: INTEGER_32; pos: INTEGER_32; a_ref: POINTER): INTEGER_32
		require
			a_ref_not_null: a_ref /= default_pointer

	frozen c_set_void_stack_value (dep: INTEGER_32; a_loc_type: INTEGER_32; pos: INTEGER_32): INTEGER_32
	
feature -- Testing

	c_rt_set_is_inside_rt_eiffel_code (v: INTEGER_32)

	test_locals (dep: INTEGER_32; loc_pos: INTEGER_32; val: ANY; a_rt_type: NATURAL_32)

	test_set_local (dep: INTEGER_32; loc_pos: INTEGER_32; val: ANY; a_rt_type: NATURAL_32)
	
note
	library: "EiffelBase: Library of reusable components for Eiffel."
	copyright: "Copyright (c) 1984-2017, 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 -- class RT_DBG_INTERNAL

Generated by ISE EiffelStudio