/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM $SRCDIR/netwerk/base/nsIBaseChannel.idl
 */

#ifndef __gen_nsIBaseChannel_h__
#define __gen_nsIBaseChannel_h__


#include "nsISupports.h"

/* For IDL files that don't want to include root IDL files. */
#ifndef NS_NO_VTABLE
#define NS_NO_VTABLE
#endif
// %{C++:8-8
#include "mozilla/dom/MimeType.h"
// %}

/* starting interface:    nsIBaseChannel */
#define NS_IBASECHANNEL_IID_STR "036d5cd7-9a53-40e3-9c72-c2ffaa15aa2b"

#define NS_IBASECHANNEL_IID \
  {0x036d5cd7, 0x9a53, 0x40e3, \
    { 0x9c, 0x72, 0xc2, 0xff, 0xaa, 0x15, 0xaa, 0x2b }}

class MOZ_BINDING(binding_to, idl, class, XPIDL_nsIBaseChannel) nsIBaseChannel : public nsISupports {
 public:

  NS_INLINE_DECL_STATIC_IID(NS_IBASECHANNEL_IID)

  /* attribute MimeTypeRef fullMimeType; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIBaseChannel_fullMimeType)
  NS_IMETHOD GetFullMimeType(RefPtr<TMimeType<char>> * aFullMimeType) = 0;
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsIBaseChannel_fullMimeType)
  NS_IMETHOD SetFullMimeType(RefPtr<TMimeType<char>> aFullMimeType) = 0;

// %{C++:24-28
  RefPtr<CMimeType> FullMimeType() {
    RefPtr<CMimeType> type;
    (void)GetFullMimeType(&type);
    return type;
  }
// %}
};


/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIBASECHANNEL \
  NS_IMETHOD GetFullMimeType(RefPtr<TMimeType<char>> * aFullMimeType) override; \
  NS_IMETHOD SetFullMimeType(RefPtr<TMimeType<char>> aFullMimeType) 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_NSIBASECHANNEL \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIBaseChannel_fullMimeType)\
  nsresult GetFullMimeType(RefPtr<TMimeType<char>> * aFullMimeType); \
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsIBaseChannel_fullMimeType)\
  nsresult SetFullMimeType(RefPtr<TMimeType<char>> aFullMimeType); \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIBASECHANNEL(_to) \
  NS_IMETHOD GetFullMimeType(RefPtr<TMimeType<char>> * aFullMimeType) override { return _to GetFullMimeType(aFullMimeType); } \
  NS_IMETHOD SetFullMimeType(RefPtr<TMimeType<char>> aFullMimeType) override { return _to SetFullMimeType(aFullMimeType); } \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIBASECHANNEL(_to) \
  NS_IMETHOD GetFullMimeType(RefPtr<TMimeType<char>> * aFullMimeType) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFullMimeType(aFullMimeType); } \
  NS_IMETHOD SetFullMimeType(RefPtr<TMimeType<char>> aFullMimeType) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFullMimeType(aFullMimeType); } \


#endif /* __gen_nsIBaseChannel_h__ */
