/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM ../../../dist/idl/nsISpeechService.idl
 */

#ifndef __gen_nsISpeechService_h__
#define __gen_nsISpeechService_h__


#ifndef __gen_nsISupports_h__
#include "nsISupports.h"
#endif

#include "js/Value.h"

/* For IDL files that don't want to include root IDL files. */
#ifndef NS_NO_VTABLE
#define NS_NO_VTABLE
#endif
typedef uint16_t  SpeechServiceType;


/* starting interface:    nsISpeechTaskCallback */
#define NS_ISPEECHTASKCALLBACK_IID_STR "c576de0c-8a3d-4570-be7e-9876d3e5bed2"

#define NS_ISPEECHTASKCALLBACK_IID \
  {0xc576de0c, 0x8a3d, 0x4570, \
    { 0xbe, 0x7e, 0x98, 0x76, 0xd3, 0xe5, 0xbe, 0xd2 }}

class NS_NO_VTABLE nsISpeechTaskCallback : public nsISupports {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_ISPEECHTASKCALLBACK_IID)

  /* void onPause (); */
  NS_IMETHOD OnPause(void) = 0;

  /* void onResume (); */
  NS_IMETHOD OnResume(void) = 0;

  /* void onCancel (); */
  NS_IMETHOD OnCancel(void) = 0;

  /* void onVolumeChanged (in float aVolume); */
  NS_IMETHOD OnVolumeChanged(float aVolume) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsISpeechTaskCallback, NS_ISPEECHTASKCALLBACK_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSISPEECHTASKCALLBACK \
  NS_IMETHOD OnPause(void) override; \
  NS_IMETHOD OnResume(void) override; \
  NS_IMETHOD OnCancel(void) override; \
  NS_IMETHOD OnVolumeChanged(float aVolume) override; 

/* Use this macro when declaring the members of this interface when the
   class doesn't implement the interface. This is useful for forwarding. */
#define NS_DECL_NON_VIRTUAL_NSISPEECHTASKCALLBACK \
  NS_METHOD OnPause(void); \
  NS_METHOD OnResume(void); \
  NS_METHOD OnCancel(void); \
  NS_METHOD OnVolumeChanged(float aVolume); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSISPEECHTASKCALLBACK(_to) \
  NS_IMETHOD OnPause(void) override { return _to OnPause(); } \
  NS_IMETHOD OnResume(void) override { return _to OnResume(); } \
  NS_IMETHOD OnCancel(void) override { return _to OnCancel(); } \
  NS_IMETHOD OnVolumeChanged(float aVolume) override { return _to OnVolumeChanged(aVolume); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSISPEECHTASKCALLBACK(_to) \
  NS_IMETHOD OnPause(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->OnPause(); } \
  NS_IMETHOD OnResume(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->OnResume(); } \
  NS_IMETHOD OnCancel(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->OnCancel(); } \
  NS_IMETHOD OnVolumeChanged(float aVolume) override { return !_to ? NS_ERROR_NULL_POINTER : _to->OnVolumeChanged(aVolume); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsSpeechTaskCallback : public nsISpeechTaskCallback
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSISPEECHTASKCALLBACK

  nsSpeechTaskCallback();

private:
  ~nsSpeechTaskCallback();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS(nsSpeechTaskCallback, nsISpeechTaskCallback)

nsSpeechTaskCallback::nsSpeechTaskCallback()
{
  /* member initializers and constructor code */
}

nsSpeechTaskCallback::~nsSpeechTaskCallback()
{
  /* destructor code */
}

/* void onPause (); */
NS_IMETHODIMP nsSpeechTaskCallback::OnPause()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onResume (); */
NS_IMETHODIMP nsSpeechTaskCallback::OnResume()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onCancel (); */
NS_IMETHODIMP nsSpeechTaskCallback::OnCancel()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onVolumeChanged (in float aVolume); */
NS_IMETHODIMP nsSpeechTaskCallback::OnVolumeChanged(float aVolume)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif


/* starting interface:    nsISpeechTask */
#define NS_ISPEECHTASK_IID_STR "ad59949c-2437-4b35-8eeb-d760caab75c5"

#define NS_ISPEECHTASK_IID \
  {0xad59949c, 0x2437, 0x4b35, \
    { 0x8e, 0xeb, 0xd7, 0x60, 0xca, 0xab, 0x75, 0xc5 }}

class NS_NO_VTABLE nsISpeechTask : public nsISupports {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_ISPEECHTASK_IID)

  /* [optional_argc] void setup (in nsISpeechTaskCallback aCallback, [optional] in uint32_t aChannels, [optional] in uint32_t aRate); */
  NS_IMETHOD Setup(nsISpeechTaskCallback *aCallback, uint32_t aChannels, uint32_t aRate, uint8_t _argc) = 0;

  /* [implicit_jscontext] void sendAudio (in jsval aData, in jsval aLandmarks); */
  NS_IMETHOD SendAudio(JS::HandleValue aData, JS::HandleValue aLandmarks, JSContext* cx) = 0;

  /* [noscript] void sendAudioNative ([array, size_is (aDataLen)] in short aData, in unsigned long aDataLen); */
  NS_IMETHOD SendAudioNative(int16_t *aData, uint32_t aDataLen) = 0;

  /* void dispatchStart (); */
  NS_IMETHOD DispatchStart(void) = 0;

  /* void dispatchEnd (in float aElapsedTime, in unsigned long aCharIndex); */
  NS_IMETHOD DispatchEnd(float aElapsedTime, uint32_t aCharIndex) = 0;

  /* void dispatchPause (in float aElapsedTime, in unsigned long aCharIndex); */
  NS_IMETHOD DispatchPause(float aElapsedTime, uint32_t aCharIndex) = 0;

  /* void dispatchResume (in float aElapsedTime, in unsigned long aCharIndex); */
  NS_IMETHOD DispatchResume(float aElapsedTime, uint32_t aCharIndex) = 0;

  /* void dispatchError (in float aElapsedTime, in unsigned long aCharIndex); */
  NS_IMETHOD DispatchError(float aElapsedTime, uint32_t aCharIndex) = 0;

  /* void dispatchBoundary (in DOMString aName, in float aElapsedTime, in unsigned long aCharIndex); */
  NS_IMETHOD DispatchBoundary(const nsAString & aName, float aElapsedTime, uint32_t aCharIndex) = 0;

  /* void dispatchMark (in DOMString aName, in float aElapsedTime, in unsigned long aCharIndex); */
  NS_IMETHOD DispatchMark(const nsAString & aName, float aElapsedTime, uint32_t aCharIndex) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsISpeechTask, NS_ISPEECHTASK_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSISPEECHTASK \
  NS_IMETHOD Setup(nsISpeechTaskCallback *aCallback, uint32_t aChannels, uint32_t aRate, uint8_t _argc) override; \
  NS_IMETHOD SendAudio(JS::HandleValue aData, JS::HandleValue aLandmarks, JSContext* cx) override; \
  NS_IMETHOD SendAudioNative(int16_t *aData, uint32_t aDataLen) override; \
  NS_IMETHOD DispatchStart(void) override; \
  NS_IMETHOD DispatchEnd(float aElapsedTime, uint32_t aCharIndex) override; \
  NS_IMETHOD DispatchPause(float aElapsedTime, uint32_t aCharIndex) override; \
  NS_IMETHOD DispatchResume(float aElapsedTime, uint32_t aCharIndex) override; \
  NS_IMETHOD DispatchError(float aElapsedTime, uint32_t aCharIndex) override; \
  NS_IMETHOD DispatchBoundary(const nsAString & aName, float aElapsedTime, uint32_t aCharIndex) override; \
  NS_IMETHOD DispatchMark(const nsAString & aName, float aElapsedTime, uint32_t aCharIndex) override; 

/* Use this macro when declaring the members of this interface when the
   class doesn't implement the interface. This is useful for forwarding. */
#define NS_DECL_NON_VIRTUAL_NSISPEECHTASK \
  NS_METHOD Setup(nsISpeechTaskCallback *aCallback, uint32_t aChannels, uint32_t aRate, uint8_t _argc); \
  NS_METHOD SendAudio(JS::HandleValue aData, JS::HandleValue aLandmarks, JSContext* cx); \
  NS_METHOD SendAudioNative(int16_t *aData, uint32_t aDataLen); \
  NS_METHOD DispatchStart(void); \
  NS_METHOD DispatchEnd(float aElapsedTime, uint32_t aCharIndex); \
  NS_METHOD DispatchPause(float aElapsedTime, uint32_t aCharIndex); \
  NS_METHOD DispatchResume(float aElapsedTime, uint32_t aCharIndex); \
  NS_METHOD DispatchError(float aElapsedTime, uint32_t aCharIndex); \
  NS_METHOD DispatchBoundary(const nsAString & aName, float aElapsedTime, uint32_t aCharIndex); \
  NS_METHOD DispatchMark(const nsAString & aName, float aElapsedTime, uint32_t aCharIndex); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSISPEECHTASK(_to) \
  NS_IMETHOD Setup(nsISpeechTaskCallback *aCallback, uint32_t aChannels, uint32_t aRate, uint8_t _argc) override { return _to Setup(aCallback, aChannels, aRate, _argc); } \
  NS_IMETHOD SendAudio(JS::HandleValue aData, JS::HandleValue aLandmarks, JSContext* cx) override { return _to SendAudio(aData, aLandmarks, cx); } \
  NS_IMETHOD SendAudioNative(int16_t *aData, uint32_t aDataLen) override { return _to SendAudioNative(aData, aDataLen); } \
  NS_IMETHOD DispatchStart(void) override { return _to DispatchStart(); } \
  NS_IMETHOD DispatchEnd(float aElapsedTime, uint32_t aCharIndex) override { return _to DispatchEnd(aElapsedTime, aCharIndex); } \
  NS_IMETHOD DispatchPause(float aElapsedTime, uint32_t aCharIndex) override { return _to DispatchPause(aElapsedTime, aCharIndex); } \
  NS_IMETHOD DispatchResume(float aElapsedTime, uint32_t aCharIndex) override { return _to DispatchResume(aElapsedTime, aCharIndex); } \
  NS_IMETHOD DispatchError(float aElapsedTime, uint32_t aCharIndex) override { return _to DispatchError(aElapsedTime, aCharIndex); } \
  NS_IMETHOD DispatchBoundary(const nsAString & aName, float aElapsedTime, uint32_t aCharIndex) override { return _to DispatchBoundary(aName, aElapsedTime, aCharIndex); } \
  NS_IMETHOD DispatchMark(const nsAString & aName, float aElapsedTime, uint32_t aCharIndex) override { return _to DispatchMark(aName, aElapsedTime, aCharIndex); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSISPEECHTASK(_to) \
  NS_IMETHOD Setup(nsISpeechTaskCallback *aCallback, uint32_t aChannels, uint32_t aRate, uint8_t _argc) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Setup(aCallback, aChannels, aRate, _argc); } \
  NS_IMETHOD SendAudio(JS::HandleValue aData, JS::HandleValue aLandmarks, JSContext* cx) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SendAudio(aData, aLandmarks, cx); } \
  NS_IMETHOD SendAudioNative(int16_t *aData, uint32_t aDataLen) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SendAudioNative(aData, aDataLen); } \
  NS_IMETHOD DispatchStart(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->DispatchStart(); } \
  NS_IMETHOD DispatchEnd(float aElapsedTime, uint32_t aCharIndex) override { return !_to ? NS_ERROR_NULL_POINTER : _to->DispatchEnd(aElapsedTime, aCharIndex); } \
  NS_IMETHOD DispatchPause(float aElapsedTime, uint32_t aCharIndex) override { return !_to ? NS_ERROR_NULL_POINTER : _to->DispatchPause(aElapsedTime, aCharIndex); } \
  NS_IMETHOD DispatchResume(float aElapsedTime, uint32_t aCharIndex) override { return !_to ? NS_ERROR_NULL_POINTER : _to->DispatchResume(aElapsedTime, aCharIndex); } \
  NS_IMETHOD DispatchError(float aElapsedTime, uint32_t aCharIndex) override { return !_to ? NS_ERROR_NULL_POINTER : _to->DispatchError(aElapsedTime, aCharIndex); } \
  NS_IMETHOD DispatchBoundary(const nsAString & aName, float aElapsedTime, uint32_t aCharIndex) override { return !_to ? NS_ERROR_NULL_POINTER : _to->DispatchBoundary(aName, aElapsedTime, aCharIndex); } \
  NS_IMETHOD DispatchMark(const nsAString & aName, float aElapsedTime, uint32_t aCharIndex) override { return !_to ? NS_ERROR_NULL_POINTER : _to->DispatchMark(aName, aElapsedTime, aCharIndex); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsSpeechTask : public nsISpeechTask
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSISPEECHTASK

  nsSpeechTask();

private:
  ~nsSpeechTask();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS(nsSpeechTask, nsISpeechTask)

nsSpeechTask::nsSpeechTask()
{
  /* member initializers and constructor code */
}

nsSpeechTask::~nsSpeechTask()
{
  /* destructor code */
}

/* [optional_argc] void setup (in nsISpeechTaskCallback aCallback, [optional] in uint32_t aChannels, [optional] in uint32_t aRate); */
NS_IMETHODIMP nsSpeechTask::Setup(nsISpeechTaskCallback *aCallback, uint32_t aChannels, uint32_t aRate, uint8_t _argc)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [implicit_jscontext] void sendAudio (in jsval aData, in jsval aLandmarks); */
NS_IMETHODIMP nsSpeechTask::SendAudio(JS::HandleValue aData, JS::HandleValue aLandmarks, JSContext* cx)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void sendAudioNative ([array, size_is (aDataLen)] in short aData, in unsigned long aDataLen); */
NS_IMETHODIMP nsSpeechTask::SendAudioNative(int16_t *aData, uint32_t aDataLen)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void dispatchStart (); */
NS_IMETHODIMP nsSpeechTask::DispatchStart()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void dispatchEnd (in float aElapsedTime, in unsigned long aCharIndex); */
NS_IMETHODIMP nsSpeechTask::DispatchEnd(float aElapsedTime, uint32_t aCharIndex)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void dispatchPause (in float aElapsedTime, in unsigned long aCharIndex); */
NS_IMETHODIMP nsSpeechTask::DispatchPause(float aElapsedTime, uint32_t aCharIndex)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void dispatchResume (in float aElapsedTime, in unsigned long aCharIndex); */
NS_IMETHODIMP nsSpeechTask::DispatchResume(float aElapsedTime, uint32_t aCharIndex)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void dispatchError (in float aElapsedTime, in unsigned long aCharIndex); */
NS_IMETHODIMP nsSpeechTask::DispatchError(float aElapsedTime, uint32_t aCharIndex)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void dispatchBoundary (in DOMString aName, in float aElapsedTime, in unsigned long aCharIndex); */
NS_IMETHODIMP nsSpeechTask::DispatchBoundary(const nsAString & aName, float aElapsedTime, uint32_t aCharIndex)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void dispatchMark (in DOMString aName, in float aElapsedTime, in unsigned long aCharIndex); */
NS_IMETHODIMP nsSpeechTask::DispatchMark(const nsAString & aName, float aElapsedTime, uint32_t aCharIndex)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif


/* starting interface:    nsISpeechService */
#define NS_ISPEECHSERVICE_IID_STR "9b7d59db-88ff-43d0-b6ee-9f63d042d08f"

#define NS_ISPEECHSERVICE_IID \
  {0x9b7d59db, 0x88ff, 0x43d0, \
    { 0xb6, 0xee, 0x9f, 0x63, 0xd0, 0x42, 0xd0, 0x8f }}

class NS_NO_VTABLE nsISpeechService : public nsISupports {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_ISPEECHSERVICE_IID)

  /* void speak (in DOMString aText, in DOMString aUri, in float aVolume, in float aRate, in float aPitch, in nsISpeechTask aTask); */
  NS_IMETHOD Speak(const nsAString & aText, const nsAString & aUri, float aVolume, float aRate, float aPitch, nsISpeechTask *aTask) = 0;

  enum {
    SERVICETYPE_DIRECT_AUDIO = 1U,
    SERVICETYPE_INDIRECT_AUDIO = 2U
  };

  /* readonly attribute SpeechServiceType serviceType; */
  NS_IMETHOD GetServiceType(SpeechServiceType *aServiceType) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsISpeechService, NS_ISPEECHSERVICE_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSISPEECHSERVICE \
  NS_IMETHOD Speak(const nsAString & aText, const nsAString & aUri, float aVolume, float aRate, float aPitch, nsISpeechTask *aTask) override; \
  NS_IMETHOD GetServiceType(SpeechServiceType *aServiceType) override; 

/* Use this macro when declaring the members of this interface when the
   class doesn't implement the interface. This is useful for forwarding. */
#define NS_DECL_NON_VIRTUAL_NSISPEECHSERVICE \
  NS_METHOD Speak(const nsAString & aText, const nsAString & aUri, float aVolume, float aRate, float aPitch, nsISpeechTask *aTask); \
  NS_METHOD GetServiceType(SpeechServiceType *aServiceType); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSISPEECHSERVICE(_to) \
  NS_IMETHOD Speak(const nsAString & aText, const nsAString & aUri, float aVolume, float aRate, float aPitch, nsISpeechTask *aTask) override { return _to Speak(aText, aUri, aVolume, aRate, aPitch, aTask); } \
  NS_IMETHOD GetServiceType(SpeechServiceType *aServiceType) override { return _to GetServiceType(aServiceType); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSISPEECHSERVICE(_to) \
  NS_IMETHOD Speak(const nsAString & aText, const nsAString & aUri, float aVolume, float aRate, float aPitch, nsISpeechTask *aTask) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Speak(aText, aUri, aVolume, aRate, aPitch, aTask); } \
  NS_IMETHOD GetServiceType(SpeechServiceType *aServiceType) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetServiceType(aServiceType); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsSpeechService : public nsISpeechService
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSISPEECHSERVICE

  nsSpeechService();

private:
  ~nsSpeechService();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS(nsSpeechService, nsISpeechService)

nsSpeechService::nsSpeechService()
{
  /* member initializers and constructor code */
}

nsSpeechService::~nsSpeechService()
{
  /* destructor code */
}

/* void speak (in DOMString aText, in DOMString aUri, in float aVolume, in float aRate, in float aPitch, in nsISpeechTask aTask); */
NS_IMETHODIMP nsSpeechService::Speak(const nsAString & aText, const nsAString & aUri, float aVolume, float aRate, float aPitch, nsISpeechTask *aTask)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute SpeechServiceType serviceType; */
NS_IMETHODIMP nsSpeechService::GetServiceType(SpeechServiceType *aServiceType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

// This is the service category speech services could use to start up as
// a component.
#define NS_SPEECH_SYNTH_STARTED "speech-synth-started"

#endif /* __gen_nsISpeechService_h__ */
