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

#ifndef __gen_nsISubscribableServer_h__
#define __gen_nsISubscribableServer_h__


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

/* For IDL files that don't want to include root IDL files. */
#ifndef NS_NO_VTABLE
#define NS_NO_VTABLE
#endif
class nsIMsgWindow; /* forward declaration */

class nsIMsgIncomingServer; /* forward declaration */

class nsIRDFResource; /* forward declaration */

class nsIRDFNode; /* forward declaration */

class nsISimpleEnumerator; /* forward declaration */


/* starting interface:    nsISubscribeDataSource */
#define NS_ISUBSCRIBEDATASOURCE_IID_STR "61a08c3a-1dd2-11b2-b64f-c4b2de1cf129"

#define NS_ISUBSCRIBEDATASOURCE_IID \
  {0x61a08c3a, 0x1dd2, 0x11b2, \
    { 0xb6, 0x4f, 0xc4, 0xb2, 0xde, 0x1c, 0xf1, 0x29 }}

class NS_NO_VTABLE nsISubscribeDataSource : public nsISupports {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_ISUBSCRIBEDATASOURCE_IID)

  /* readonly attribute boolean hasObservers; */
  NS_IMETHOD GetHasObservers(bool *aHasObservers) = 0;

  /* void NotifyObservers (in nsIRDFResource subject, in nsIRDFResource property, in nsIRDFNode object, in boolean isAssert, in boolean isChange); */
  NS_IMETHOD NotifyObservers(nsIRDFResource *subject, nsIRDFResource *property, nsIRDFNode *object, bool isAssert, bool isChange) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsISubscribeDataSource, NS_ISUBSCRIBEDATASOURCE_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSISUBSCRIBEDATASOURCE \
  NS_IMETHOD GetHasObservers(bool *aHasObservers) override; \
  NS_IMETHOD NotifyObservers(nsIRDFResource *subject, nsIRDFResource *property, nsIRDFNode *object, bool isAssert, bool isChange) 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_NSISUBSCRIBEDATASOURCE \
  NS_METHOD GetHasObservers(bool *aHasObservers); \
  NS_METHOD NotifyObservers(nsIRDFResource *subject, nsIRDFResource *property, nsIRDFNode *object, bool isAssert, bool isChange); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSISUBSCRIBEDATASOURCE(_to) \
  NS_IMETHOD GetHasObservers(bool *aHasObservers) override { return _to GetHasObservers(aHasObservers); } \
  NS_IMETHOD NotifyObservers(nsIRDFResource *subject, nsIRDFResource *property, nsIRDFNode *object, bool isAssert, bool isChange) override { return _to NotifyObservers(subject, property, object, isAssert, isChange); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSISUBSCRIBEDATASOURCE(_to) \
  NS_IMETHOD GetHasObservers(bool *aHasObservers) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHasObservers(aHasObservers); } \
  NS_IMETHOD NotifyObservers(nsIRDFResource *subject, nsIRDFResource *property, nsIRDFNode *object, bool isAssert, bool isChange) override { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyObservers(subject, property, object, isAssert, isChange); } 

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

/* Header file */
class nsSubscribeDataSource : public nsISubscribeDataSource
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSISUBSCRIBEDATASOURCE

  nsSubscribeDataSource();

private:
  ~nsSubscribeDataSource();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS(nsSubscribeDataSource, nsISubscribeDataSource)

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

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

/* readonly attribute boolean hasObservers; */
NS_IMETHODIMP nsSubscribeDataSource::GetHasObservers(bool *aHasObservers)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void NotifyObservers (in nsIRDFResource subject, in nsIRDFResource property, in nsIRDFNode object, in boolean isAssert, in boolean isChange); */
NS_IMETHODIMP nsSubscribeDataSource::NotifyObservers(nsIRDFResource *subject, nsIRDFResource *property, nsIRDFNode *object, bool isAssert, bool isChange)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    nsISubscribeListener */
#define NS_ISUBSCRIBELISTENER_IID_STR "f337b84a-1dd1-11b2-97c7-fb8b2e3f2280"

#define NS_ISUBSCRIBELISTENER_IID \
  {0xf337b84a, 0x1dd1, 0x11b2, \
    { 0x97, 0xc7, 0xfb, 0x8b, 0x2e, 0x3f, 0x22, 0x80 }}

class NS_NO_VTABLE nsISubscribeListener : public nsISupports {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_ISUBSCRIBELISTENER_IID)

  /* void OnDonePopulating (); */
  NS_IMETHOD OnDonePopulating(void) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsISubscribeListener, NS_ISUBSCRIBELISTENER_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSISUBSCRIBELISTENER \
  NS_IMETHOD OnDonePopulating(void) 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_NSISUBSCRIBELISTENER \
  NS_METHOD OnDonePopulating(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSISUBSCRIBELISTENER(_to) \
  NS_IMETHOD OnDonePopulating(void) override { return _to OnDonePopulating(); } 

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

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

/* Header file */
class nsSubscribeListener : public nsISubscribeListener
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSISUBSCRIBELISTENER

  nsSubscribeListener();

private:
  ~nsSubscribeListener();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS(nsSubscribeListener, nsISubscribeListener)

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

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

/* void OnDonePopulating (); */
NS_IMETHODIMP nsSubscribeListener::OnDonePopulating()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    nsISubscribableServer */
#define NS_ISUBSCRIBABLESERVER_IID_STR "14b8597a-755b-4e93-b364-e0903801e6ea"

#define NS_ISUBSCRIBABLESERVER_IID \
  {0x14b8597a, 0x755b, 0x4e93, \
    { 0xb3, 0x64, 0xe0, 0x90, 0x38, 0x01, 0xe6, 0xea }}

class NS_NO_VTABLE nsISubscribableServer : public nsISupports {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_ISUBSCRIBABLESERVER_IID)

  /* attribute nsISubscribeListener subscribeListener; */
  NS_IMETHOD GetSubscribeListener(nsISubscribeListener * *aSubscribeListener) = 0;
  NS_IMETHOD SetSubscribeListener(nsISubscribeListener *aSubscribeListener) = 0;

  /* attribute char delimiter; */
  NS_IMETHOD GetDelimiter(char *aDelimiter) = 0;
  NS_IMETHOD SetDelimiter(char aDelimiter) = 0;

  /* void startPopulating (in nsIMsgWindow aMsgWindow, in boolean forceToServer, in boolean getOnlyNew); */
  NS_IMETHOD StartPopulating(nsIMsgWindow *aMsgWindow, bool forceToServer, bool getOnlyNew) = 0;

  /* void startPopulatingWithUri (in nsIMsgWindow aMsgWindow, in boolean forceToServer, in string uri); */
  NS_IMETHOD StartPopulatingWithUri(nsIMsgWindow *aMsgWindow, bool forceToServer, const char * uri) = 0;

  /* void stopPopulating (in nsIMsgWindow aMsgWindow); */
  NS_IMETHOD StopPopulating(nsIMsgWindow *aMsgWindow) = 0;

  /* boolean setState (in AUTF8String path, in boolean state); */
  NS_IMETHOD SetState(const nsACString & path, bool state, bool *_retval) = 0;

  /* void subscribeCleanup (); */
  NS_IMETHOD SubscribeCleanup(void) = 0;

  /* void subscribe (in wstring name); */
  NS_IMETHOD Subscribe(const char16_t * name) = 0;

  /* void unsubscribe (in wstring name); */
  NS_IMETHOD Unsubscribe(const char16_t * name) = 0;

  /* void commitSubscribeChanges (); */
  NS_IMETHOD CommitSubscribeChanges(void) = 0;

  /* void setIncomingServer (in nsIMsgIncomingServer server); */
  NS_IMETHOD SetIncomingServer(nsIMsgIncomingServer *server) = 0;

  /* void addTo (in AUTF8String aName, in boolean addAsSubscribed, in boolean aSubscribable, in boolean aChangeIfExists); */
  NS_IMETHOD AddTo(const nsACString & aName, bool addAsSubscribed, bool aSubscribable, bool aChangeIfExists) = 0;

  /* void setAsSubscribed (in AUTF8String path); */
  NS_IMETHOD SetAsSubscribed(const nsACString & path) = 0;

  /* void updateSubscribed (); */
  NS_IMETHOD UpdateSubscribed(void) = 0;

  /* void setShowFullName (in boolean showFullName); */
  NS_IMETHOD SetShowFullName(bool showFullName) = 0;

  /* boolean hasChildren (in AUTF8String path); */
  NS_IMETHOD HasChildren(const nsACString & path, bool *_retval) = 0;

  /* boolean isSubscribed (in AUTF8String path); */
  NS_IMETHOD IsSubscribed(const nsACString & path, bool *_retval) = 0;

  /* boolean isSubscribable (in AUTF8String path); */
  NS_IMETHOD IsSubscribable(const nsACString & path, bool *_retval) = 0;

  /* AString getLeafName (in AUTF8String path); */
  NS_IMETHOD GetLeafName(const nsACString & path, nsAString & _retval) = 0;

  /* nsISimpleEnumerator getChildren (in AUTF8String aPath); */
  NS_IMETHOD GetChildren(const nsACString & aPath, nsISimpleEnumerator * *_retval) = 0;

  /* AUTF8String getFirstChildURI (in AUTF8String path); */
  NS_IMETHOD GetFirstChildURI(const nsACString & path, nsACString & _retval) = 0;

  /* void setSearchValue (in AString searchValue); */
  NS_IMETHOD SetSearchValue(const nsAString & searchValue) = 0;

  /* readonly attribute boolean supportsSubscribeSearch; */
  NS_IMETHOD GetSupportsSubscribeSearch(bool *aSupportsSubscribeSearch) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsISubscribableServer, NS_ISUBSCRIBABLESERVER_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSISUBSCRIBABLESERVER \
  NS_IMETHOD GetSubscribeListener(nsISubscribeListener * *aSubscribeListener) override; \
  NS_IMETHOD SetSubscribeListener(nsISubscribeListener *aSubscribeListener) override; \
  NS_IMETHOD GetDelimiter(char *aDelimiter) override; \
  NS_IMETHOD SetDelimiter(char aDelimiter) override; \
  NS_IMETHOD StartPopulating(nsIMsgWindow *aMsgWindow, bool forceToServer, bool getOnlyNew) override; \
  NS_IMETHOD StartPopulatingWithUri(nsIMsgWindow *aMsgWindow, bool forceToServer, const char * uri) override; \
  NS_IMETHOD StopPopulating(nsIMsgWindow *aMsgWindow) override; \
  NS_IMETHOD SetState(const nsACString & path, bool state, bool *_retval) override; \
  NS_IMETHOD SubscribeCleanup(void) override; \
  NS_IMETHOD Subscribe(const char16_t * name) override; \
  NS_IMETHOD Unsubscribe(const char16_t * name) override; \
  NS_IMETHOD CommitSubscribeChanges(void) override; \
  NS_IMETHOD SetIncomingServer(nsIMsgIncomingServer *server) override; \
  NS_IMETHOD AddTo(const nsACString & aName, bool addAsSubscribed, bool aSubscribable, bool aChangeIfExists) override; \
  NS_IMETHOD SetAsSubscribed(const nsACString & path) override; \
  NS_IMETHOD UpdateSubscribed(void) override; \
  NS_IMETHOD SetShowFullName(bool showFullName) override; \
  NS_IMETHOD HasChildren(const nsACString & path, bool *_retval) override; \
  NS_IMETHOD IsSubscribed(const nsACString & path, bool *_retval) override; \
  NS_IMETHOD IsSubscribable(const nsACString & path, bool *_retval) override; \
  NS_IMETHOD GetLeafName(const nsACString & path, nsAString & _retval) override; \
  NS_IMETHOD GetChildren(const nsACString & aPath, nsISimpleEnumerator * *_retval) override; \
  NS_IMETHOD GetFirstChildURI(const nsACString & path, nsACString & _retval) override; \
  NS_IMETHOD SetSearchValue(const nsAString & searchValue) override; \
  NS_IMETHOD GetSupportsSubscribeSearch(bool *aSupportsSubscribeSearch) 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_NSISUBSCRIBABLESERVER \
  NS_METHOD GetSubscribeListener(nsISubscribeListener * *aSubscribeListener); \
  NS_METHOD SetSubscribeListener(nsISubscribeListener *aSubscribeListener); \
  NS_METHOD GetDelimiter(char *aDelimiter); \
  NS_METHOD SetDelimiter(char aDelimiter); \
  NS_METHOD StartPopulating(nsIMsgWindow *aMsgWindow, bool forceToServer, bool getOnlyNew); \
  NS_METHOD StartPopulatingWithUri(nsIMsgWindow *aMsgWindow, bool forceToServer, const char * uri); \
  NS_METHOD StopPopulating(nsIMsgWindow *aMsgWindow); \
  NS_METHOD SetState(const nsACString & path, bool state, bool *_retval); \
  NS_METHOD SubscribeCleanup(void); \
  NS_METHOD Subscribe(const char16_t * name); \
  NS_METHOD Unsubscribe(const char16_t * name); \
  NS_METHOD CommitSubscribeChanges(void); \
  NS_METHOD SetIncomingServer(nsIMsgIncomingServer *server); \
  NS_METHOD AddTo(const nsACString & aName, bool addAsSubscribed, bool aSubscribable, bool aChangeIfExists); \
  NS_METHOD SetAsSubscribed(const nsACString & path); \
  NS_METHOD UpdateSubscribed(void); \
  NS_METHOD SetShowFullName(bool showFullName); \
  NS_METHOD HasChildren(const nsACString & path, bool *_retval); \
  NS_METHOD IsSubscribed(const nsACString & path, bool *_retval); \
  NS_METHOD IsSubscribable(const nsACString & path, bool *_retval); \
  NS_METHOD GetLeafName(const nsACString & path, nsAString & _retval); \
  NS_METHOD GetChildren(const nsACString & aPath, nsISimpleEnumerator * *_retval); \
  NS_METHOD GetFirstChildURI(const nsACString & path, nsACString & _retval); \
  NS_METHOD SetSearchValue(const nsAString & searchValue); \
  NS_METHOD GetSupportsSubscribeSearch(bool *aSupportsSubscribeSearch); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSISUBSCRIBABLESERVER(_to) \
  NS_IMETHOD GetSubscribeListener(nsISubscribeListener * *aSubscribeListener) override { return _to GetSubscribeListener(aSubscribeListener); } \
  NS_IMETHOD SetSubscribeListener(nsISubscribeListener *aSubscribeListener) override { return _to SetSubscribeListener(aSubscribeListener); } \
  NS_IMETHOD GetDelimiter(char *aDelimiter) override { return _to GetDelimiter(aDelimiter); } \
  NS_IMETHOD SetDelimiter(char aDelimiter) override { return _to SetDelimiter(aDelimiter); } \
  NS_IMETHOD StartPopulating(nsIMsgWindow *aMsgWindow, bool forceToServer, bool getOnlyNew) override { return _to StartPopulating(aMsgWindow, forceToServer, getOnlyNew); } \
  NS_IMETHOD StartPopulatingWithUri(nsIMsgWindow *aMsgWindow, bool forceToServer, const char * uri) override { return _to StartPopulatingWithUri(aMsgWindow, forceToServer, uri); } \
  NS_IMETHOD StopPopulating(nsIMsgWindow *aMsgWindow) override { return _to StopPopulating(aMsgWindow); } \
  NS_IMETHOD SetState(const nsACString & path, bool state, bool *_retval) override { return _to SetState(path, state, _retval); } \
  NS_IMETHOD SubscribeCleanup(void) override { return _to SubscribeCleanup(); } \
  NS_IMETHOD Subscribe(const char16_t * name) override { return _to Subscribe(name); } \
  NS_IMETHOD Unsubscribe(const char16_t * name) override { return _to Unsubscribe(name); } \
  NS_IMETHOD CommitSubscribeChanges(void) override { return _to CommitSubscribeChanges(); } \
  NS_IMETHOD SetIncomingServer(nsIMsgIncomingServer *server) override { return _to SetIncomingServer(server); } \
  NS_IMETHOD AddTo(const nsACString & aName, bool addAsSubscribed, bool aSubscribable, bool aChangeIfExists) override { return _to AddTo(aName, addAsSubscribed, aSubscribable, aChangeIfExists); } \
  NS_IMETHOD SetAsSubscribed(const nsACString & path) override { return _to SetAsSubscribed(path); } \
  NS_IMETHOD UpdateSubscribed(void) override { return _to UpdateSubscribed(); } \
  NS_IMETHOD SetShowFullName(bool showFullName) override { return _to SetShowFullName(showFullName); } \
  NS_IMETHOD HasChildren(const nsACString & path, bool *_retval) override { return _to HasChildren(path, _retval); } \
  NS_IMETHOD IsSubscribed(const nsACString & path, bool *_retval) override { return _to IsSubscribed(path, _retval); } \
  NS_IMETHOD IsSubscribable(const nsACString & path, bool *_retval) override { return _to IsSubscribable(path, _retval); } \
  NS_IMETHOD GetLeafName(const nsACString & path, nsAString & _retval) override { return _to GetLeafName(path, _retval); } \
  NS_IMETHOD GetChildren(const nsACString & aPath, nsISimpleEnumerator * *_retval) override { return _to GetChildren(aPath, _retval); } \
  NS_IMETHOD GetFirstChildURI(const nsACString & path, nsACString & _retval) override { return _to GetFirstChildURI(path, _retval); } \
  NS_IMETHOD SetSearchValue(const nsAString & searchValue) override { return _to SetSearchValue(searchValue); } \
  NS_IMETHOD GetSupportsSubscribeSearch(bool *aSupportsSubscribeSearch) override { return _to GetSupportsSubscribeSearch(aSupportsSubscribeSearch); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSISUBSCRIBABLESERVER(_to) \
  NS_IMETHOD GetSubscribeListener(nsISubscribeListener * *aSubscribeListener) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSubscribeListener(aSubscribeListener); } \
  NS_IMETHOD SetSubscribeListener(nsISubscribeListener *aSubscribeListener) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetSubscribeListener(aSubscribeListener); } \
  NS_IMETHOD GetDelimiter(char *aDelimiter) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDelimiter(aDelimiter); } \
  NS_IMETHOD SetDelimiter(char aDelimiter) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDelimiter(aDelimiter); } \
  NS_IMETHOD StartPopulating(nsIMsgWindow *aMsgWindow, bool forceToServer, bool getOnlyNew) override { return !_to ? NS_ERROR_NULL_POINTER : _to->StartPopulating(aMsgWindow, forceToServer, getOnlyNew); } \
  NS_IMETHOD StartPopulatingWithUri(nsIMsgWindow *aMsgWindow, bool forceToServer, const char * uri) override { return !_to ? NS_ERROR_NULL_POINTER : _to->StartPopulatingWithUri(aMsgWindow, forceToServer, uri); } \
  NS_IMETHOD StopPopulating(nsIMsgWindow *aMsgWindow) override { return !_to ? NS_ERROR_NULL_POINTER : _to->StopPopulating(aMsgWindow); } \
  NS_IMETHOD SetState(const nsACString & path, bool state, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetState(path, state, _retval); } \
  NS_IMETHOD SubscribeCleanup(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SubscribeCleanup(); } \
  NS_IMETHOD Subscribe(const char16_t * name) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Subscribe(name); } \
  NS_IMETHOD Unsubscribe(const char16_t * name) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Unsubscribe(name); } \
  NS_IMETHOD CommitSubscribeChanges(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CommitSubscribeChanges(); } \
  NS_IMETHOD SetIncomingServer(nsIMsgIncomingServer *server) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIncomingServer(server); } \
  NS_IMETHOD AddTo(const nsACString & aName, bool addAsSubscribed, bool aSubscribable, bool aChangeIfExists) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddTo(aName, addAsSubscribed, aSubscribable, aChangeIfExists); } \
  NS_IMETHOD SetAsSubscribed(const nsACString & path) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAsSubscribed(path); } \
  NS_IMETHOD UpdateSubscribed(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->UpdateSubscribed(); } \
  NS_IMETHOD SetShowFullName(bool showFullName) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetShowFullName(showFullName); } \
  NS_IMETHOD HasChildren(const nsACString & path, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->HasChildren(path, _retval); } \
  NS_IMETHOD IsSubscribed(const nsACString & path, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->IsSubscribed(path, _retval); } \
  NS_IMETHOD IsSubscribable(const nsACString & path, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->IsSubscribable(path, _retval); } \
  NS_IMETHOD GetLeafName(const nsACString & path, nsAString & _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLeafName(path, _retval); } \
  NS_IMETHOD GetChildren(const nsACString & aPath, nsISimpleEnumerator * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetChildren(aPath, _retval); } \
  NS_IMETHOD GetFirstChildURI(const nsACString & path, nsACString & _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFirstChildURI(path, _retval); } \
  NS_IMETHOD SetSearchValue(const nsAString & searchValue) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetSearchValue(searchValue); } \
  NS_IMETHOD GetSupportsSubscribeSearch(bool *aSupportsSubscribeSearch) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSupportsSubscribeSearch(aSupportsSubscribeSearch); } 

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

/* Header file */
class nsSubscribableServer : public nsISubscribableServer
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSISUBSCRIBABLESERVER

  nsSubscribableServer();

private:
  ~nsSubscribableServer();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS(nsSubscribableServer, nsISubscribableServer)

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

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

/* attribute nsISubscribeListener subscribeListener; */
NS_IMETHODIMP nsSubscribableServer::GetSubscribeListener(nsISubscribeListener * *aSubscribeListener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsSubscribableServer::SetSubscribeListener(nsISubscribeListener *aSubscribeListener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute char delimiter; */
NS_IMETHODIMP nsSubscribableServer::GetDelimiter(char *aDelimiter)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsSubscribableServer::SetDelimiter(char aDelimiter)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void startPopulating (in nsIMsgWindow aMsgWindow, in boolean forceToServer, in boolean getOnlyNew); */
NS_IMETHODIMP nsSubscribableServer::StartPopulating(nsIMsgWindow *aMsgWindow, bool forceToServer, bool getOnlyNew)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void startPopulatingWithUri (in nsIMsgWindow aMsgWindow, in boolean forceToServer, in string uri); */
NS_IMETHODIMP nsSubscribableServer::StartPopulatingWithUri(nsIMsgWindow *aMsgWindow, bool forceToServer, const char * uri)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void stopPopulating (in nsIMsgWindow aMsgWindow); */
NS_IMETHODIMP nsSubscribableServer::StopPopulating(nsIMsgWindow *aMsgWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean setState (in AUTF8String path, in boolean state); */
NS_IMETHODIMP nsSubscribableServer::SetState(const nsACString & path, bool state, bool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void subscribeCleanup (); */
NS_IMETHODIMP nsSubscribableServer::SubscribeCleanup()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void subscribe (in wstring name); */
NS_IMETHODIMP nsSubscribableServer::Subscribe(const char16_t * name)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void unsubscribe (in wstring name); */
NS_IMETHODIMP nsSubscribableServer::Unsubscribe(const char16_t * name)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void commitSubscribeChanges (); */
NS_IMETHODIMP nsSubscribableServer::CommitSubscribeChanges()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setIncomingServer (in nsIMsgIncomingServer server); */
NS_IMETHODIMP nsSubscribableServer::SetIncomingServer(nsIMsgIncomingServer *server)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addTo (in AUTF8String aName, in boolean addAsSubscribed, in boolean aSubscribable, in boolean aChangeIfExists); */
NS_IMETHODIMP nsSubscribableServer::AddTo(const nsACString & aName, bool addAsSubscribed, bool aSubscribable, bool aChangeIfExists)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setAsSubscribed (in AUTF8String path); */
NS_IMETHODIMP nsSubscribableServer::SetAsSubscribed(const nsACString & path)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void updateSubscribed (); */
NS_IMETHODIMP nsSubscribableServer::UpdateSubscribed()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setShowFullName (in boolean showFullName); */
NS_IMETHODIMP nsSubscribableServer::SetShowFullName(bool showFullName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean hasChildren (in AUTF8String path); */
NS_IMETHODIMP nsSubscribableServer::HasChildren(const nsACString & path, bool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean isSubscribed (in AUTF8String path); */
NS_IMETHODIMP nsSubscribableServer::IsSubscribed(const nsACString & path, bool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean isSubscribable (in AUTF8String path); */
NS_IMETHODIMP nsSubscribableServer::IsSubscribable(const nsACString & path, bool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* AString getLeafName (in AUTF8String path); */
NS_IMETHODIMP nsSubscribableServer::GetLeafName(const nsACString & path, nsAString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsISimpleEnumerator getChildren (in AUTF8String aPath); */
NS_IMETHODIMP nsSubscribableServer::GetChildren(const nsACString & aPath, nsISimpleEnumerator * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* AUTF8String getFirstChildURI (in AUTF8String path); */
NS_IMETHODIMP nsSubscribableServer::GetFirstChildURI(const nsACString & path, nsACString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setSearchValue (in AString searchValue); */
NS_IMETHODIMP nsSubscribableServer::SetSearchValue(const nsAString & searchValue)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean supportsSubscribeSearch; */
NS_IMETHODIMP nsSubscribableServer::GetSupportsSubscribeSearch(bool *aSupportsSubscribeSearch)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_nsISubscribableServer_h__ */
