class Ecore_Audio (Eo.Base)
{
   legacy_prefix: null;
   eo_prefix: ecore_audio_obj;
   data: Ecore_Audio_Object;
   methods {
      @property name {
         set {
            [[Sets the name of the object

              @since 1.8
            ]]
         }
         get {
            [[Gets the name of the object

              @since 1.8
            ]]
         }
         values {
            name: const(char)*; 
         }
      }
      @property paused {
         set {
            [[Sets the pause state of the object

              @since 1.8
            ]]
         }
         get {
            [[Gets the pause state of the object

              @since 1.8
            ]]
         }
         values {
            paused: bool; [[$true if object is paused, $false if not]]
         }
      }
      @property volume {
         set {
            [[Sets the volume of the object

              @since 1.8
            ]]
         }
         get {
            [[Gets the volume of the object

              @since 1.8
            ]]
         }
         values {
            volume: double; [[The volume]]
         }
      }
      @property source {
         set {
            [[Sets the source of the object

              What sources are supported depends on the actual object.
              For example, the libsndfile class accepts WAV, OGG, FLAC
              files as source.

              @since 1.8
            ]]
            return: bool; [[$true if the source was set correctly (i.e. the file
                            was opened), $false otherwise
                          ]]
         }
         get {
            [[Gets the source of the object

              @since 1.8
            ]]
         }
         values {
            source: const(char)*; [[The source to set to (i.e. file, URL, device)]]
         }
      }
      @property format {
         set {
            [[Sets the format of the object

              What formats are supported depends on the actual object. Default
              is ECORE_AUDIO_FORMAT_AUTO

              @since 1.8
            ]]
            return: bool; [[$true if the format was supported, $false otherwise]]
         }
         get {
            [[Gets the format of the object

              After setting the source if the format was ECORE_AUDIO_FORMAT_AUTO
              this function will now return the actual format.

              @since 1.8
            ]]
         }
         values {
            format: Ecore_Audio_Format; [[The format of the object]]
         }
      }
      vio_set {
         [[Sets the virtual IO functions

           @since 1.8
         ]]
         params {
              vio: Ecore_Audio_Vio *; [[The \@ref Ecore_Audio_Vio struct with
                                        the function callbacks
                                      ]]
              data: void *; [[User data to pass to the VIO functions]]
              free_func: eo_key_data_free_func; [[This function takes care to
                                                  clean up $data when he VIO is
                                                  destroyed. NULL means do
                                                  nothing.
                                                ]]
         }
      }
   }
   implements {
      Eo.Base.constructor;
      @virtual .source.get;
      @virtual .source.set;
      @virtual .format.get;
      @virtual .format.set;
      @virtual .vio_set;
   }
}
