indexing
	description: "Encapsulation of EXEPTINFO structure"
	status: "See notice at end of class"
	date: "$Date$"
	revision: "$Revision$"
class interface
	ECOM_EXCEP_INFO
create 
	make
			item
			 ECOM_STRUCTURE
		ensure  WEL_STRUCTURE
			not_shared: not shared
	make_from_pointer (a_pointer: POINTER)
			
		require  ECOM_STRUCTURE
			valid_pointer: a_pointer /= default_pointer
feature 
	bstr_description: STRING
			
		ensure
			non_void_bstr_description: Result /= void
	bstr_help_file: STRING
			
		ensure
			non_void_bstr_help_file: Result /= void
	bstr_source: STRING
			
		ensure
			non_void_bstr_source: Result /= void
	dw_help_context: INTEGER
			
	item: POINTER
			
			
			 WEL_ANY
	pv_reserved: POINTER
			
	scode: ECOM_HRESULT
			
		ensure
			non_void_scode: Result /= void
	w_code: INTEGER
			
	w_reserved: INTEGER
			
	
feature 
	structure_size: INTEGER
			
		ensure  WEL_STRUCTURE
			positive_result: Result > 0
	
feature 
	exists: BOOLEAN
			item
			 WEL_ANY
		ensure  WEL_ANY
			Result = (item /= default_pointer)
	shared: BOOLEAN
			item
			item
			destroy_item
			item
			 WEL_ANY
	
feature 
	set_shared
			shared
			 WEL_ANY
		ensure  WEL_ANY
			shared: shared
	set_unshared
			shared
			 WEL_ANY
		ensure  WEL_ANY
			unshared: not shared
	
feature 
	dispose
			Current
			
			
			Current
			
			 WEL_ANY
	
feature 
	to_integer: INTEGER
			item
			 WEL_ANY
		ensure  WEL_ANY
			Result = cwel_pointer_to_integer (item)
	
feature 
	initialize
			
			 WEL_STRUCTURE
		require  WEL_STRUCTURE
			exists: exists
	initialize_with_character (a_character: CHARACTER)
			a_character
			 WEL_STRUCTURE
		require  WEL_STRUCTURE
			exists: exists
	memory_copy (source_pointer: POINTER; length: INTEGER)
			lengthsource_pointeritem
			 WEL_STRUCTURE
		require  WEL_STRUCTURE
			length_small_enough: length <= structure_size
			length_large_enough: length > 0
			exists: exists
	
feature 
	set_bstr_description (a_bstr_description: STRING)
			bstr_descriptiona_bstr_description
	set_bstr_help_file (a_bstr_help_file: STRING)
			bstr_help_filea_bstr_help_file
	set_bstr_source (a_bstr_source: STRING)
			bstr_sourcea_bstr_source
	set_dw_help_context (a_dw_help_context: INTEGER)
			dw_help_contexta_dw_help_context
	set_pv_reserved (a_pv_reserved: POINTER)
			pv_reserveda_pv_reserved
	set_scode (a_scode: ECOM_HRESULT)
			scodea_scode
		require
			non_void_a_scode: a_scode /= void
	set_value (source: like Current)
			
			 ECOM_STRUCTURE
		require  ECOM_STRUCTURE
			non_void: source /= void
			valid_source: source.item /= default_pointer
	set_w_code (a_w_code: INTEGER)
			w_codea_w_code
	set_w_reserved (a_w_reserved: INTEGER)
			w_reserveda_w_reserved
	
invariant
		 ANY
	reflexive_equality: standard_is_equal (Current)
	reflexive_conformance: conforms_to (Current)
end -- ECOM_EXCEP_INFO