indexing description: "[ Deferred class for any audio file. Use filename to be able to select a specific from a list and/or other containers. ]" date: "$Date$" revision: "$Revision$" deferred class EM_AUDIO inherit SDL_MIXER_FUNCTIONS_EXTERNAL export {NONE} all end SDL_AUDIO_CVT_STRUCT_EXTERNAL export {NONE} all end SDL_AUDIO_SPEC_STRUCT_EXTERNAL export {NONE} all undefine sizeof_external end MEMORY export {NONE} all redefine dispose end feature {NONE} -- Initialization make_from_pointer (a_pointer: POINTER) is -- Make from `a_pointer' that is possibly shared within the -- process of the current OS. require a_pointer_not_void: a_pointer /= default_pointer do item := a_pointer end feature {NONE} -- Internal variables internal_filename: STRING -- Internal filename item: POINTER -- SDL audio value feature -- Access sizeof: INTEGER is -- Size of object do Result := sizeof_external end filename: STRING is -- Filename for audio chunk do if internal_filename /= Void then create Result.make_from_string (internal_filename) else create Result.make_empty end end feature -- Element change set_filename (a_filename: like internal_filename) is -- Set `internal_filename' to `a_filename'. require a_filename /= Void do internal_filename := a_filename ensure filename_set: internal_filename = a_filename end feature -- Conversion to_pointer: POINTER is -- Pointer to audio chunk do Result := item ensure Result_assigned: Result = item end feature -- Removal dispose is -- Free up resource. do mix_free_music_external (item) Precursor end invariant exists: item /= Default_pointer end