note
	description: "Call record"
	status: "See notice at end of class."
	legal: "See notice at end of class."
	date: "$Date: 2018-11-14 14:54:22 +0000 (Wed, 14 Nov 2018) $"
	revision: "$Revision: 102461 $"

class interface
	RT_DBG_CALL_RECORD

create 
	make

feature -- Properties

	object: detachable ANY
			-- Target object.

	dynamic_class_type_id: INTEGER_32
			-- Related dynamic class type id.

	class_type_id: INTEGER_32
			-- Related written class type id.

	feature_rout_id: INTEGER_32
			-- Related feature routine id.

	breakable_info: detachable TUPLE [line: INTEGER_32; nested: INTEGER_32]
			-- Breakable info when call occurred.

	depth: INTEGER_32
			-- Call stack depth of Current's call

	parent: detachable like Current
			-- Parent's call record.

	steps: ARRAYED_LIST [BOOLEAN]
			-- Steps data

	call_records: detachable ARRAYED_LIST [like Current]
			-- Sub call records.

	value_records: detachable ARRAYED_LIST [RT_DBG_VALUE_RECORD]
			-- Recorded values (assignment...)

	flat_value_records_has_local: BOOLEAN
			-- Does value_records has local values ?
		require
			is_flat: is_flat
	
feature -- Measure

	rt_information_available: BOOLEAN
			-- Is Runtime information available for this call ?

	last_position: TUPLE [line: INTEGER_32; nested: INTEGER_32]
			-- Last position

	same_object_type (ref: detachable ANY): BOOLEAN
			-- Is ref representing the same value as object ?
	
feature -- Change

	wipe_out_value_records
			-- Wipe out value records

	set_breakable_info (v: like breakable_info)
			-- Set breakable_info

	register_position (a_line, a_nested: INTEGER_32)
			-- Set last position
		require
			a_line_valid: a_line > 0
			a_nested_valid: a_nested >= 0
	
feature -- Status

	is_expanded: BOOLEAN
			-- Is object an expanded value ?

	is_flat: BOOLEAN
			-- Is Current record flat ?

	is_closed: BOOLEAN
			-- Is Current record closed ?

	call_records_closed: BOOLEAN
			-- Is call_records entries closed?
		require
			is_not_closed: not is_closed
	
feature -- debug

	debug_display_steps
			-- Display steps for debugging purpose.

	debug_output: STRING_8
			-- Debug output as string representation.
	
invariant
	recorder_attached: recorder /= Void
	steps_attached: steps /= Void
	last_position_attached: last_position /= Void
	non_empty_call_records: attached call_records as crecs implies not crecs.is_empty
	value_records_not_void_if_flat: is_flat implies value_records /= Void

note
	library: "EiffelBase: Library of reusable components for Eiffel."
	copyright: "Copyright (c) 1984-2018, 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_CALL_RECORD

Generated by ISE EiffelStudio