    class
    	ECOM_VARIANT

    General
    	cluster: structures
    	description: "COM VARIANT structure"
    	create: make_from_decimal, make_from_char_array, make_from_error, make_from_character, make_from_double_array, make_from_string, make_from_pointer, make_from_integer, make_from_boolean, make_from_boolean_array, make_from_double, make_from_error_array, make_from_real_array, make_from_real, make_from_iunknown, make_from_currency_array, make_from_variant, make_from_string_array, make_from_decimal_array, make, make_from_currency, make_from_date_array, make_from_date, make_from_integer_array

    Ancestors
    	ECOM_STRUCTURE*
    	ECOM_VAR_TYPE

    Queries
    	arrays_equal (a_array, a_other: ECOM_ARRAY [ANY]): BOOLEAN
    	boolean_array: ECOM_ARRAY [BOOLEAN]
    	boolean_array_reference: CELL [ECOM_ARRAY [BOOLEAN]]
    	boolean_reference: BOOLEAN_REF
    	boolean_value: BOOLEAN
    	char_array: ECOM_ARRAY [CHARACTER_8]
    	char_array_reference: CELL [ECOM_ARRAY [CHARACTER_8]]
    	character_reference: CHARACTER_8_REF
    	character_value: CHARACTER_8
    	currency: ECOM_CURRENCY
    	currency_array: ECOM_ARRAY [ECOM_CURRENCY]
    	currency_array_reference: CELL [ECOM_ARRAY [ECOM_CURRENCY]]
    	currency_reference: ECOM_CURRENCY
    	date_array: ECOM_ARRAY [DATE_TIME]
    	date_array_reference: CELL [ECOM_ARRAY [DATE_TIME]]
    	date_reference: CELL [DATE_TIME]
    	date_value: DATE_TIME
    	decimal: ECOM_DECIMAL
    	decimal_array: ECOM_ARRAY [ECOM_DECIMAL]
    	decimal_array_reference: CELL [ECOM_ARRAY [ECOM_DECIMAL]]
    	decimal_reference: ECOM_DECIMAL
    	double_array: ECOM_ARRAY [REAL_64]
    	double_array_reference: CELL [ECOM_ARRAY [REAL_64]]
    	double_reference: REAL_64_REF
    	double_value: REAL_64
    	error: ECOM_HRESULT
    	error_array: ECOM_ARRAY [ECOM_HRESULT]
    	error_array_reference: CELL [ECOM_ARRAY [ECOM_HRESULT]]
    	error_reference: ECOM_HRESULT
    	exists: BOOLEAN
    	has_boolean (variable_type: INTEGER_32): BOOLEAN
    	has_bstr (variable_type: INTEGER_32): BOOLEAN
    	has_character (variable_type: INTEGER_32): BOOLEAN
    	has_currency (variable_type: INTEGER_32): BOOLEAN
    	has_date (variable_type: INTEGER_32): BOOLEAN
    	has_decimal (variable_type: INTEGER_32): BOOLEAN
    	has_double (variable_type: INTEGER_32): BOOLEAN
    	has_error (variable_type: INTEGER_32): BOOLEAN
    	has_hresult (variable_type: INTEGER_32): BOOLEAN
    	has_idispatch (variable_type: INTEGER_32): BOOLEAN
    	has_int (variable_type: INTEGER_32): BOOLEAN
    	has_integer2 (variable_type: INTEGER_32): BOOLEAN
    	has_integer4 (variable_type: INTEGER_32): BOOLEAN
    	has_iunknown (variable_type: INTEGER_32): BOOLEAN
    	has_long_long (variable_type: INTEGER_32): BOOLEAN
    	has_ptr (variable_type: INTEGER_32): BOOLEAN
    	has_real (variable_type: INTEGER_32): BOOLEAN
    	has_unsigned_char (variable_type: INTEGER_32): BOOLEAN
    	has_unsigned_int (variable_type: INTEGER_32): BOOLEAN
    	has_unsigned_long (variable_type: INTEGER_32): BOOLEAN
    	has_unsigned_long_long (variable_type: INTEGER_32): BOOLEAN
    	has_unsigned_short (variable_type: INTEGER_32): BOOLEAN
    	has_variant (variable_type: INTEGER_32): BOOLEAN
    	has_void (variable_type: INTEGER_32): BOOLEAN
    	idispatch: ECOM_AUTOMATION_INTERFACE
    	idispatch_array: ECOM_ARRAY [ECOM_AUTOMATION_INTERFACE]
    	idispatch_array_reference: CELL [ECOM_ARRAY [ECOM_AUTOMATION_INTERFACE]]
    	idispatch_reference: CELL [ECOM_AUTOMATION_INTERFACE]
    	integer2: INTEGER_32
    	integer2_reference: INTEGER_32_REF
    	integer4: INTEGER_32
    	integer4_array: ECOM_ARRAY [INTEGER_32]
    	integer4_array_reference: CELL [ECOM_ARRAY [INTEGER_32]]
    	integer4_reference: INTEGER_32_REF
    	integer_array: ECOM_ARRAY [INTEGER_32]
    	integer_array_reference: CELL [ECOM_ARRAY [INTEGER_32]]
    	integer_reference: INTEGER_32_REF
    	integer_value: INTEGER_32
    	is_array (variable_type: INTEGER_32): BOOLEAN
    	is_basic (a_type: INTEGER_32): BOOLEAN
    	is_boolean (variable_type: INTEGER_32): BOOLEAN
    	is_bstr (variable_type: INTEGER_32): BOOLEAN
    	is_byref (variable_type: INTEGER_32): BOOLEAN
    	is_carray (variable_type: INTEGER_32): BOOLEAN
    	is_character (variable_type: INTEGER_32): BOOLEAN
    	is_currency (variable_type: INTEGER_32): BOOLEAN
    	is_date (variable_type: INTEGER_32): BOOLEAN
    	is_decimal (variable_type: INTEGER_32): BOOLEAN
    	is_double (variable_type: INTEGER_32): BOOLEAN
    	is_equal (other: [like Current] ECOM_VARIANT): BOOLEAN
    	is_error (variable_type: INTEGER_32): BOOLEAN
    	is_hresult (variable_type: INTEGER_32): BOOLEAN
    	is_idispatch (variable_type: INTEGER_32): BOOLEAN
    	is_int (variable_type: INTEGER_32): BOOLEAN
    	is_integer2 (variable_type: INTEGER_32): BOOLEAN
    	is_integer4 (variable_type: INTEGER_32): BOOLEAN
    	is_iunknown (variable_type: INTEGER_32): BOOLEAN
    	is_long_long (variable_type: INTEGER_32): BOOLEAN
    	is_lpstr (variable_type: INTEGER_32): BOOLEAN
    	is_lpwstr (variable_type: INTEGER_32): BOOLEAN
    	is_ptr (variable_type: INTEGER_32): BOOLEAN
    	is_real (variable_type: INTEGER_32): BOOLEAN
    	is_record (variable_type: INTEGER_32): BOOLEAN
    	is_safearray (variable_type: INTEGER_32): BOOLEAN
    	is_unsigned_char (variable_type: INTEGER_32): BOOLEAN
    	is_unsigned_int (variable_type: INTEGER_32): BOOLEAN
    	is_unsigned_long (variable_type: INTEGER_32): BOOLEAN
    	is_unsigned_long_long (variable_type: INTEGER_32): BOOLEAN
    	is_unsigned_short (variable_type: INTEGER_32): BOOLEAN
    	is_user_defined (variable_type: INTEGER_32): BOOLEAN
    	is_variant (variable_type: INTEGER_32): BOOLEAN
    	is_void (variable_type: INTEGER_32): BOOLEAN
    	item: POINTER
    	iunknown: ECOM_UNKNOWN_INTERFACE
    	iunknown_array: ECOM_ARRAY [ECOM_UNKNOWN_INTERFACE]
    	iunknown_array_reference: CELL [ECOM_ARRAY [ECOM_UNKNOWN_INTERFACE]]
    	iunknown_reference: CELL [ECOM_UNKNOWN_INTERFACE]
    	out: STRING_8
    	real_array: ECOM_ARRAY [REAL_32]
    	real_array_reference: CELL [ECOM_ARRAY [REAL_32]]
    	real_reference: REAL_32_REF
    	real_value: REAL_32
    	shared: BOOLEAN
    	short_array: ECOM_ARRAY [INTEGER_32]
    	short_array_reference: CELL [ECOM_ARRAY [INTEGER_32]]
    	string_array: ECOM_ARRAY [STRING_8]
    	string_array_reference: CELL [ECOM_ARRAY [STRING_8]]
    	string_reference: CELL [STRING_8]
    	string_value: STRING_8
    	structure_size: INTEGER_32
    	unsigned_character_array: ECOM_ARRAY [CHARACTER_8]
    	unsigned_character_array_reference: CELL [ECOM_ARRAY [CHARACTER_8]]
    	unsigned_character_reference: CHARACTER_8_REF
    	unsigned_character_value: CHARACTER_8
    	unsigned_integer: INTEGER_32
    	unsigned_integer2: INTEGER_32
    	unsigned_integer2_reference: INTEGER_32_REF
    	unsigned_integer4: INTEGER_32
    	unsigned_integer4_array: ECOM_ARRAY [INTEGER_32]
    	unsigned_integer4_array_reference: CELL [ECOM_ARRAY [INTEGER_32]]
    	unsigned_integer4_reference: INTEGER_32_REF
    	unsigned_integer_array: ECOM_ARRAY [INTEGER_32]
    	unsigned_integer_array_reference: CELL [ECOM_ARRAY [INTEGER_32]]
    	unsigned_integer_reference: INTEGER_32_REF
    	unsigned_short_array: ECOM_ARRAY [INTEGER_32]
    	unsigned_short_array_reference: CELL [ECOM_ARRAY [INTEGER_32]]
    	valid_var_type (a_var_type: INTEGER_32): BOOLEAN
    	variable_type: INTEGER_32
    	variant_array: ECOM_ARRAY [ECOM_VARIANT]
    	variant_array_reference: CELL [ECOM_ARRAY [ECOM_VARIANT]]
    	variant_value: ECOM_VARIANT
    	vt_array: INTEGER_32
    	vt_bool: INTEGER_32
    	vt_bstr: INTEGER_32
    	vt_byref: INTEGER_32
    	vt_carray: INTEGER_32
    	vt_cy: INTEGER_32
    	vt_date: INTEGER_32
    	vt_decimal: INTEGER_32
    	vt_dispatch: INTEGER_32
    	vt_empty: INTEGER_32
    	vt_error: INTEGER_32
    	vt_hresult: INTEGER_32
    	vt_i1: INTEGER_32
    	vt_i2: INTEGER_32
    	vt_i4: INTEGER_32
    	vt_i8: INTEGER_32
    	vt_int: INTEGER_32
    	vt_lpstr: INTEGER_32
    	vt_lpwstr: INTEGER_32
    	vt_null: INTEGER_32
    	vt_ptr: INTEGER_32
    	vt_r4: INTEGER_32
    	vt_r8: INTEGER_32
    	vt_record: INTEGER_32
    	vt_reserved: INTEGER_32
    	vt_safearray: INTEGER_32
    	vt_typemask: INTEGER_32
    	vt_ui1: INTEGER_32
    	vt_ui2: INTEGER_32
    	vt_ui4: INTEGER_32
    	vt_ui8: INTEGER_32
    	vt_uint: INTEGER_32
    	vt_unknown: INTEGER_32
    	vt_userdefined: INTEGER_32
    	vt_variant: INTEGER_32
    	vt_void: INTEGER_32

    Commands
    	copy (other: [like Current] ECOM_VARIANT)
    	dispose
    	initialize
    	initialize_with_character (a_character: CHARACTER_8)
    	make
    	make_from_boolean (a_value: BOOLEAN)
    	make_from_boolean_array (a_value: ECOM_ARRAY [BOOLEAN])
    	make_from_char_array (a_value: ECOM_ARRAY [CHARACTER_8])
    	make_from_character (a_value: CHARACTER_8)
    	make_from_currency (a_value: ECOM_CURRENCY)
    	make_from_currency_array (a_value: ECOM_ARRAY [ECOM_CURRENCY])
    	make_from_date (a_value: DATE_TIME)
    	make_from_date_array (a_value: ECOM_ARRAY [DATE_TIME])
    	make_from_decimal (a_value: ECOM_DECIMAL)
    	make_from_decimal_array (a_value: ECOM_ARRAY [ECOM_DECIMAL])
    	make_from_double (a_value: REAL_64)
    	make_from_double_array (a_value: ECOM_ARRAY [REAL_64])
    	make_from_error (a_value: ECOM_HRESULT)
    	make_from_error_array (a_value: ECOM_ARRAY [ECOM_HRESULT])
    	make_from_integer (a_value: INTEGER_32)
    	make_from_integer_array (a_value: ECOM_ARRAY [INTEGER_32])
    	make_from_iunknown (a_value: ECOM_INTERFACE)
    	make_from_pointer (a_pointer: POINTER)
    	make_from_real (a_value: REAL_32)
    	make_from_real_array (a_value: ECOM_ARRAY [REAL_32])
    	make_from_string (a_value: STRING_8)
    	make_from_string_array (a_value: ECOM_ARRAY [STRING_8])
    	make_from_variant (a_value: ECOM_VARIANT)
    	memory_copy (source_pointer: POINTER; length: INTEGER_32)
    	set (a: ANY)
    	set_array (a_value: ECOM_ARRAY [ECOM_VARIANT])
    	set_boolean (a_value: BOOLEAN)
    	set_boolean_array (a_value: ECOM_ARRAY [BOOLEAN])
    	set_boolean_array_reference (a_value: CELL [ECOM_ARRAY [BOOLEAN]])
    	set_boolean_reference (a_value: BOOLEAN_REF)
    	set_char_array (a_value: ECOM_ARRAY [CHARACTER_8])
    	set_char_array_reference (a_value: CELL [ECOM_ARRAY [CHARACTER_8]])
    	set_character (a_char: CHARACTER_8)
    	set_character_reference (a_char: CHARACTER_8_REF)
    	set_currency (a_value: ECOM_CURRENCY)
    	set_currency_array (a_value: ECOM_ARRAY [ECOM_CURRENCY])
    	set_currency_array_reference (a_value: CELL [ECOM_ARRAY [ECOM_CURRENCY]])
    	set_currency_reference (a_value: ECOM_CURRENCY)
    	set_date (a_value: DATE_TIME)
    	set_date_array (a_value: ECOM_ARRAY [DATE_TIME])
    	set_date_array_reference (a_value: CELL [ECOM_ARRAY [DATE_TIME]])
    	set_date_reference (a_value: CELL [DATE_TIME])
    	set_decimal (a_value: ECOM_DECIMAL)
    	set_decimal_array (a_value: ECOM_ARRAY [ECOM_DECIMAL])
    	set_decimal_array_reference (a_value: CELL [ECOM_ARRAY [ECOM_DECIMAL]])
    	set_decimal_reference (a_value: ECOM_DECIMAL)
    	set_double (a_value: REAL_64)
    	set_double_array (a_value: ECOM_ARRAY [REAL_64])
    	set_double_array_reference (a_value: CELL [ECOM_ARRAY [REAL_64]])
    	set_double_reference (a_value: REAL_64_REF)
    	set_empty
    	set_error (a_value: ECOM_HRESULT)
    	set_error_array (a_value: ECOM_ARRAY [ECOM_HRESULT])
    	set_error_array_reference (a_value: CELL [ECOM_ARRAY [ECOM_HRESULT]])
    	set_error_reference (a_value: ECOM_HRESULT)
    	set_idispatch (a_value: ECOM_INTERFACE)
    	set_idispatch_array (a_value: ECOM_ARRAY [ECOM_INTERFACE])
    	set_idispatch_array_reference (a_value: CELL [ECOM_ARRAY [ECOM_INTERFACE]])
    	set_idispatch_reference (a_value: CELL [ECOM_INTERFACE])
    	set_integer (a_value: INTEGER_32)
    	set_integer2 (a_value: INTEGER_32)
    	set_integer2_reference (a_value: INTEGER_32_REF)
    	set_integer4 (a_value: INTEGER_32)
    	set_integer4_array (a_value: ECOM_ARRAY [INTEGER_32])
    	set_integer4_array_reference (a_value: CELL [ECOM_ARRAY [INTEGER_32]])
    	set_integer4_reference (a_value: INTEGER_32_REF)
    	set_integer_array (a_value: ECOM_ARRAY [INTEGER_32])
    	set_integer_array_reference (a_value: CELL [ECOM_ARRAY [INTEGER_32]])
    	set_integer_reference (a_value: INTEGER_32_REF)
    	set_iunknown (a_value: ECOM_INTERFACE)
    	set_iunknown_array (a_value: ECOM_ARRAY [ECOM_INTERFACE])
    	set_iunknown_array_reference (a_value: CELL [ECOM_ARRAY [ECOM_INTERFACE]])
    	set_iunknown_reference (a_value: CELL [ECOM_INTERFACE])
    	set_real (a_value: REAL_32)
    	set_real_array (a_value: ECOM_ARRAY [REAL_32])
    	set_real_array_reference (a_value: CELL [ECOM_ARRAY [REAL_32]])
    	set_real_reference (a_value: REAL_32_REF)
    	set_shared
    	set_short_array (a_value: ECOM_ARRAY [INTEGER_32])
    	set_short_array_reference (a_value: CELL [ECOM_ARRAY [INTEGER_32]])
    	set_string (a_value: STRING_8)
    	set_string_array (a_value: ECOM_ARRAY [STRING_8])
    	set_string_array_reference (a_value: CELL [ECOM_ARRAY [STRING_8]])
    	set_string_reference (a_value: CELL [STRING_8])
    	set_unshared
    	set_unsigned_character (a_value: CHARACTER_8)
    	set_unsigned_character_array (a_value: ECOM_ARRAY [CHARACTER_8])
    	set_unsigned_character_array_reference (a_value: CELL [ECOM_ARRAY [CHARACTER_8]])
    	set_unsigned_character_reference (a_value: CHARACTER_8_REF)
    	set_unsigned_integer (a_value: INTEGER_32)
    	set_unsigned_integer2 (a_value: INTEGER_32)
    	set_unsigned_integer2_reference (a_value: INTEGER_32_REF)
    	set_unsigned_integer4 (a_value: INTEGER_32)
    	set_unsigned_integer4_array (a_value: ECOM_ARRAY [INTEGER_32])
    	set_unsigned_integer4_array_reference (a_value: CELL [ECOM_ARRAY [INTEGER_32]])
    	set_unsigned_integer4_reference (a_value: INTEGER_32_REF)
    	set_unsigned_integer_array (a_value: ECOM_ARRAY [INTEGER_32])
    	set_unsigned_integer_array_reference (a_value: CELL [ECOM_ARRAY [INTEGER_32]])
    	set_unsigned_integer_reference (a_value: INTEGER_32_REF)
    	set_unsigned_short_array (a_value: ECOM_ARRAY [INTEGER_32])
    	set_unsigned_short_array_reference (a_value: CELL [ECOM_ARRAY [INTEGER_32]])
    	set_value (source: [like Current] ECOM_VARIANT)
    	set_variant (a_value: ECOM_VARIANT)
    	set_variant_array_reference (a_value: CELL [ECOM_ARRAY [ECOM_VARIANT]])