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

#ifndef __gen_flockIBlogService_h__
#define __gen_flockIBlogService_h__


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

#ifndef __gen_nsISimpleEnumerator_h__
#include "nsISimpleEnumerator.h"
#endif

#ifndef __gen_nsIStringEnumerator_h__
#include "nsIStringEnumerator.h"
#endif

#ifndef __gen_nsIDOMWindow_h__
#include "nsIDOMWindow.h"
#endif

#ifndef __gen_flockIBlogWebService_h__
#include "flockIBlogWebService.h"
#endif

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

/* starting interface:    flockIDetectListener */
#define FLOCKIDETECTLISTENER_IID_STR "8425e79d-6b5a-4ee8-af87-5fc5791261a3"

#define FLOCKIDETECTLISTENER_IID \
  {0x8425e79d, 0x6b5a, 0x4ee8, \
    { 0xaf, 0x87, 0x5f, 0xc5, 0x79, 0x12, 0x61, 0xa3 }}

class NS_NO_VTABLE flockIDetectListener : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(FLOCKIDETECTLISTENER_IID)

  /* void onResult (in flockIBlogAccount api); */
  NS_IMETHOD OnResult(flockIBlogAccount *api) = 0;

  /* void onError (in AString errorMsg); */
  NS_IMETHOD OnError(const nsAString & errorMsg) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_FLOCKIDETECTLISTENER \
  NS_IMETHOD OnResult(flockIBlogAccount *api); \
  NS_IMETHOD OnError(const nsAString & errorMsg); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_FLOCKIDETECTLISTENER(_to) \
  NS_IMETHOD OnResult(flockIBlogAccount *api) { return _to OnResult(api); } \
  NS_IMETHOD OnError(const nsAString & errorMsg) { return _to OnError(errorMsg); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_FLOCKIDETECTLISTENER(_to) \
  NS_IMETHOD OnResult(flockIBlogAccount *api) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnResult(api); } \
  NS_IMETHOD OnError(const nsAString & errorMsg) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnError(errorMsg); } 

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

/* Header file */
class _MYCLASS_ : public flockIDetectListener
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_FLOCKIDETECTLISTENER

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, flockIDetectListener)

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

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

/* void onResult (in flockIBlogAccount api); */
NS_IMETHODIMP _MYCLASS_::OnResult(flockIBlogAccount *api)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onError (in AString errorMsg); */
NS_IMETHODIMP _MYCLASS_::OnError(const nsAString & errorMsg)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    flockIBlogDraft */
#define FLOCKIBLOGDRAFT_IID_STR "62534b85-51a1-443d-b939-1f0a4b37d0bf"

#define FLOCKIBLOGDRAFT_IID \
  {0x62534b85, 0x51a1, 0x443d, \
    { 0xb9, 0x39, 0x1f, 0x0a, 0x4b, 0x37, 0xd0, 0xbf }}

class NS_NO_VTABLE flockIBlogDraft : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(FLOCKIBLOGDRAFT_IID)

  /* attribute long long id; */
  NS_IMETHOD GetId(PRInt64 *aId) = 0;
  NS_IMETHOD SetId(PRInt64 aId) = 0;

  /* attribute long long lastupdate; */
  NS_IMETHOD GetLastupdate(PRInt64 *aLastupdate) = 0;
  NS_IMETHOD SetLastupdate(PRInt64 aLastupdate) = 0;

  /* attribute AString title; */
  NS_IMETHOD GetTitle(nsAString & aTitle) = 0;
  NS_IMETHOD SetTitle(const nsAString & aTitle) = 0;

  /* attribute AString content; */
  NS_IMETHOD GetContent(nsAString & aContent) = 0;
  NS_IMETHOD SetContent(const nsAString & aContent) = 0;

  /* attribute AString tags; */
  NS_IMETHOD GetTags(nsAString & aTags) = 0;
  NS_IMETHOD SetTags(const nsAString & aTags) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_FLOCKIBLOGDRAFT \
  NS_IMETHOD GetId(PRInt64 *aId); \
  NS_IMETHOD SetId(PRInt64 aId); \
  NS_IMETHOD GetLastupdate(PRInt64 *aLastupdate); \
  NS_IMETHOD SetLastupdate(PRInt64 aLastupdate); \
  NS_IMETHOD GetTitle(nsAString & aTitle); \
  NS_IMETHOD SetTitle(const nsAString & aTitle); \
  NS_IMETHOD GetContent(nsAString & aContent); \
  NS_IMETHOD SetContent(const nsAString & aContent); \
  NS_IMETHOD GetTags(nsAString & aTags); \
  NS_IMETHOD SetTags(const nsAString & aTags); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_FLOCKIBLOGDRAFT(_to) \
  NS_IMETHOD GetId(PRInt64 *aId) { return _to GetId(aId); } \
  NS_IMETHOD SetId(PRInt64 aId) { return _to SetId(aId); } \
  NS_IMETHOD GetLastupdate(PRInt64 *aLastupdate) { return _to GetLastupdate(aLastupdate); } \
  NS_IMETHOD SetLastupdate(PRInt64 aLastupdate) { return _to SetLastupdate(aLastupdate); } \
  NS_IMETHOD GetTitle(nsAString & aTitle) { return _to GetTitle(aTitle); } \
  NS_IMETHOD SetTitle(const nsAString & aTitle) { return _to SetTitle(aTitle); } \
  NS_IMETHOD GetContent(nsAString & aContent) { return _to GetContent(aContent); } \
  NS_IMETHOD SetContent(const nsAString & aContent) { return _to SetContent(aContent); } \
  NS_IMETHOD GetTags(nsAString & aTags) { return _to GetTags(aTags); } \
  NS_IMETHOD SetTags(const nsAString & aTags) { return _to SetTags(aTags); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_FLOCKIBLOGDRAFT(_to) \
  NS_IMETHOD GetId(PRInt64 *aId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetId(aId); } \
  NS_IMETHOD SetId(PRInt64 aId) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetId(aId); } \
  NS_IMETHOD GetLastupdate(PRInt64 *aLastupdate) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLastupdate(aLastupdate); } \
  NS_IMETHOD SetLastupdate(PRInt64 aLastupdate) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLastupdate(aLastupdate); } \
  NS_IMETHOD GetTitle(nsAString & aTitle) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTitle(aTitle); } \
  NS_IMETHOD SetTitle(const nsAString & aTitle) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTitle(aTitle); } \
  NS_IMETHOD GetContent(nsAString & aContent) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetContent(aContent); } \
  NS_IMETHOD SetContent(const nsAString & aContent) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetContent(aContent); } \
  NS_IMETHOD GetTags(nsAString & aTags) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTags(aTags); } \
  NS_IMETHOD SetTags(const nsAString & aTags) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTags(aTags); } 

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

/* Header file */
class _MYCLASS_ : public flockIBlogDraft
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_FLOCKIBLOGDRAFT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, flockIBlogDraft)

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

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

/* attribute long long id; */
NS_IMETHODIMP _MYCLASS_::GetId(PRInt64 *aId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetId(PRInt64 aId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute long long lastupdate; */
NS_IMETHODIMP _MYCLASS_::GetLastupdate(PRInt64 *aLastupdate)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetLastupdate(PRInt64 aLastupdate)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute AString title; */
NS_IMETHODIMP _MYCLASS_::GetTitle(nsAString & aTitle)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetTitle(const nsAString & aTitle)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute AString content; */
NS_IMETHODIMP _MYCLASS_::GetContent(nsAString & aContent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetContent(const nsAString & aContent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute AString tags; */
NS_IMETHODIMP _MYCLASS_::GetTags(nsAString & aTags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetTags(const nsAString & aTags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    flockIBlogService */
#define FLOCKIBLOGSERVICE_IID_STR "094a6d1a-357a-466f-a854-484ed125ea03"

#define FLOCKIBLOGSERVICE_IID \
  {0x094a6d1a, 0x357a, 0x466f, \
    { 0xa8, 0x54, 0x48, 0x4e, 0xd1, 0x25, 0xea, 0x03 }}

class NS_NO_VTABLE flockIBlogService : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(FLOCKIBLOGSERVICE_IID)

  /* readonly attribute nsISimpleEnumerator services; */
  NS_IMETHOD GetServices(nsISimpleEnumerator * *aServices) = 0;

  /**
   * For custom blogs only: register a new blog API (ex: MetaWeblog, ATOM)
   * @param aAPI (in) the service providing the API
   * @param aShortname (in) a unique identifier for the API
   * @return nothing
   */
  /* void registerAPI (in flockICustomBlogWebService aAPI, in ACString aShortname); */
  NS_IMETHOD RegisterAPI(flockICustomBlogWebService *aAPI, const nsACString & aShortname) = 0;

  /**
   * For custom blogs only: returns the service identified by aShortname
   */
  /* flockICustomBlogWebService getAPIFromShortname (in ACString aShortname); */
  NS_IMETHOD GetAPIFromShortname(const nsACString & aShortname, flockICustomBlogWebService **_retval) = 0;

  /* AString getShortnameFromAPI (in flockICustomBlogWebService aAPI); */
  NS_IMETHOD GetShortnameFromAPI(flockICustomBlogWebService *aAPI, nsAString & _retval) = 0;

  /**
   * For custom blogs only: detect the supported API for a given URL (usually a Blog)
   * and return one accounts for one of the API; the de
   * The list is returned through the
   * listener, see flockIDetectListener for more information
   * @param aAPI (in) the service providing the API
   * @param aShortname (in) a unique identifier for the API
   * @return nothing
   */
  /* void getCandidatesAPI (in flockIDetectListener aListener, in AString aUrl); */
  NS_IMETHOD GetCandidatesAPI(flockIDetectListener *aListener, const nsAString & aUrl) = 0;

  /**
   * Return the number of configured accounts that provide at least one blog
   */
  /* long accountCount (); */
  NS_IMETHOD AccountCount(PRInt32 *_retval) = 0;

  /**
   * Return the list configured accounts that provide at least one blog
   * @return a nsISimpleEnumerator of flockIBlogAccount
   */
  /* nsISimpleEnumerator getAccountList (); */
  NS_IMETHOD GetAccountList(nsISimpleEnumerator **_retval) = 0;

  /**
   * Return the list configured accounts that provide at least one blog
   * @param aBlogID (in) the URN of the blog
   * @return a flockIBlogAccount
   */
  /* flockIBlogAccount getAccount (in AString aBlogID); */
  NS_IMETHOD GetAccount(const nsAString & aBlogID, flockIBlogAccount **_retval) = 0;

  /**
   * Return true if there is already one blog of the given name.
   * It would work fine without having blog title being unique,
   * but as it is the way it is presented to the user we try to
   * keep it unique anyway
   * @param aTitle (in) the title of the blog as displayed to the user
   * @return true if an account of this name exists, false otherwise
   */
  /* boolean accountExists (in AString aTitle); */
  NS_IMETHOD AccountExists(const nsAString & aTitle, PRBool *_retval) = 0;

  /**
   * Save the account to flock-data, and the password in the password manager
   * @param aAccountID (in) the account to which the blog is attached
   * @param aBlogId (in) the id of the blog, relative to the account
   * @param aBlogAccount (in) 
   */
  /* void saveAccount (in AString aAccountID, in AString aBlogId, in flockIBlogAccount aBlogAccount); */
  NS_IMETHOD SaveAccount(const nsAString & aAccountID, const nsAString & aBlogId, flockIBlogAccount *aBlogAccount) = 0;

  /**
   * Get the URN of the default blog (the blog to be preselected when the user
   * tries to publish a post)
   * @return the URN of the default blog 
   */
  /* AString getDefaultBlog (); */
  NS_IMETHOD GetDefaultBlog(nsAString & _retval) = 0;

  /**
   * Set the default blog 
   */
  /* void setDefaultBlog (in AString aBlogID); */
  NS_IMETHOD SetDefaultBlog(const nsAString & aBlogID) = 0;

  /* void addCategory (in AString aBlogID, in AString aCategoryId, in AString aCategoryName); */
  NS_IMETHOD AddCategory(const nsAString & aBlogID, const nsAString & aCategoryId, const nsAString & aCategoryName) = 0;

  /* void flushCategories (in flockIBlogAccount aBlogAccount); */
  NS_IMETHOD FlushCategories(flockIBlogAccount *aBlogAccount) = 0;

  /**
   * Open a given post in a new blog editor window. If the post is already open,
   * the existing window is focused and no new window is open.
   * @param aId (in) the URN of the post to open
   */
  /* void openPost (in AString aId); */
  NS_IMETHOD OpenPost(const nsAString & aId) = 0;

  /**
   * Open a new blog editor window.
   * @param aTitle (in) the initial value of the title field. If this attribute is the empty string (""), a default is used ("Untitled" for English)
   * @param aContent (in) the initial value of the post content. It can be empty ("").
   * @param aTags (in) the initial value of the tags field. It can be empty but if it is not, tags must be separated by commas.
   */
  /* nsIDOMWindow openEditor (in AString aTitle, in AString aContent, in AString aTags); */
  NS_IMETHOD OpenEditor(const nsAString & aTitle, const nsAString & aContent, const nsAString & aTags, nsIDOMWindow **_retval) = 0;

  /**
   * Returns true if at least one blog editor window is open, false otherwise.
   */
  /* boolean editorIsOpen (); */
  NS_IMETHOD EditorIsOpen(PRBool *_retval) = 0;

  /* long long saveDraft (in long long aId, in AString aTitle, in AString aContent, in AString aTags); */
  NS_IMETHOD SaveDraft(PRInt64 aId, const nsAString & aTitle, const nsAString & aContent, const nsAString & aTags, PRInt64 *_retval) = 0;

  /* void removeDraft (in long long aId); */
  NS_IMETHOD RemoveDraft(PRInt64 aId) = 0;

  /* void moveTo (in long long aId, in AString aFolderId); */
  NS_IMETHOD MoveTo(PRInt64 aId, const nsAString & aFolderId) = 0;

  /* nsISimpleEnumerator getDraftsFrom (in AString aFolderId); */
  NS_IMETHOD GetDraftsFrom(const nsAString & aFolderId, nsISimpleEnumerator **_retval) = 0;

  /* flockIBlogDraft getDraft (in long long aDraftId); */
  NS_IMETHOD GetDraft(PRInt64 aDraftId, flockIBlogDraft **_retval) = 0;

  /* string saveRecovery (in long long aId, in AString aTitle, in AString aContent, in AString aTags); */
  NS_IMETHOD SaveRecovery(PRInt64 aId, const nsAString & aTitle, const nsAString & aContent, const nsAString & aTags, char **_retval) = 0;

  /* void removeRecovery (in long long aId); */
  NS_IMETHOD RemoveRecovery(PRInt64 aId) = 0;

  /* nsISimpleEnumerator getAllRecovery (); */
  NS_IMETHOD GetAllRecovery(nsISimpleEnumerator **_retval) = 0;

  /**
   * Delete any existing recovery draft
   * @return nothing
   */
  /* void looseRecovery (); */
  NS_IMETHOD LooseRecovery(void) = 0;

  /* void addNotification (in AString aURL); */
  NS_IMETHOD AddNotification(const nsAString & aURL) = 0;

  /* void removeNotification (in AString aURL); */
  NS_IMETHOD RemoveNotification(const nsAString & aURL) = 0;

  /* nsIStringEnumerator getNotifications (); */
  NS_IMETHOD GetNotifications(nsIStringEnumerator **_retval) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_FLOCKIBLOGSERVICE \
  NS_IMETHOD GetServices(nsISimpleEnumerator * *aServices); \
  NS_IMETHOD RegisterAPI(flockICustomBlogWebService *aAPI, const nsACString & aShortname); \
  NS_IMETHOD GetAPIFromShortname(const nsACString & aShortname, flockICustomBlogWebService **_retval); \
  NS_IMETHOD GetShortnameFromAPI(flockICustomBlogWebService *aAPI, nsAString & _retval); \
  NS_IMETHOD GetCandidatesAPI(flockIDetectListener *aListener, const nsAString & aUrl); \
  NS_IMETHOD AccountCount(PRInt32 *_retval); \
  NS_IMETHOD GetAccountList(nsISimpleEnumerator **_retval); \
  NS_IMETHOD GetAccount(const nsAString & aBlogID, flockIBlogAccount **_retval); \
  NS_IMETHOD AccountExists(const nsAString & aTitle, PRBool *_retval); \
  NS_IMETHOD SaveAccount(const nsAString & aAccountID, const nsAString & aBlogId, flockIBlogAccount *aBlogAccount); \
  NS_IMETHOD GetDefaultBlog(nsAString & _retval); \
  NS_IMETHOD SetDefaultBlog(const nsAString & aBlogID); \
  NS_IMETHOD AddCategory(const nsAString & aBlogID, const nsAString & aCategoryId, const nsAString & aCategoryName); \
  NS_IMETHOD FlushCategories(flockIBlogAccount *aBlogAccount); \
  NS_IMETHOD OpenPost(const nsAString & aId); \
  NS_IMETHOD OpenEditor(const nsAString & aTitle, const nsAString & aContent, const nsAString & aTags, nsIDOMWindow **_retval); \
  NS_IMETHOD EditorIsOpen(PRBool *_retval); \
  NS_IMETHOD SaveDraft(PRInt64 aId, const nsAString & aTitle, const nsAString & aContent, const nsAString & aTags, PRInt64 *_retval); \
  NS_IMETHOD RemoveDraft(PRInt64 aId); \
  NS_IMETHOD MoveTo(PRInt64 aId, const nsAString & aFolderId); \
  NS_IMETHOD GetDraftsFrom(const nsAString & aFolderId, nsISimpleEnumerator **_retval); \
  NS_IMETHOD GetDraft(PRInt64 aDraftId, flockIBlogDraft **_retval); \
  NS_IMETHOD SaveRecovery(PRInt64 aId, const nsAString & aTitle, const nsAString & aContent, const nsAString & aTags, char **_retval); \
  NS_IMETHOD RemoveRecovery(PRInt64 aId); \
  NS_IMETHOD GetAllRecovery(nsISimpleEnumerator **_retval); \
  NS_IMETHOD LooseRecovery(void); \
  NS_IMETHOD AddNotification(const nsAString & aURL); \
  NS_IMETHOD RemoveNotification(const nsAString & aURL); \
  NS_IMETHOD GetNotifications(nsIStringEnumerator **_retval); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_FLOCKIBLOGSERVICE(_to) \
  NS_IMETHOD GetServices(nsISimpleEnumerator * *aServices) { return _to GetServices(aServices); } \
  NS_IMETHOD RegisterAPI(flockICustomBlogWebService *aAPI, const nsACString & aShortname) { return _to RegisterAPI(aAPI, aShortname); } \
  NS_IMETHOD GetAPIFromShortname(const nsACString & aShortname, flockICustomBlogWebService **_retval) { return _to GetAPIFromShortname(aShortname, _retval); } \
  NS_IMETHOD GetShortnameFromAPI(flockICustomBlogWebService *aAPI, nsAString & _retval) { return _to GetShortnameFromAPI(aAPI, _retval); } \
  NS_IMETHOD GetCandidatesAPI(flockIDetectListener *aListener, const nsAString & aUrl) { return _to GetCandidatesAPI(aListener, aUrl); } \
  NS_IMETHOD AccountCount(PRInt32 *_retval) { return _to AccountCount(_retval); } \
  NS_IMETHOD GetAccountList(nsISimpleEnumerator **_retval) { return _to GetAccountList(_retval); } \
  NS_IMETHOD GetAccount(const nsAString & aBlogID, flockIBlogAccount **_retval) { return _to GetAccount(aBlogID, _retval); } \
  NS_IMETHOD AccountExists(const nsAString & aTitle, PRBool *_retval) { return _to AccountExists(aTitle, _retval); } \
  NS_IMETHOD SaveAccount(const nsAString & aAccountID, const nsAString & aBlogId, flockIBlogAccount *aBlogAccount) { return _to SaveAccount(aAccountID, aBlogId, aBlogAccount); } \
  NS_IMETHOD GetDefaultBlog(nsAString & _retval) { return _to GetDefaultBlog(_retval); } \
  NS_IMETHOD SetDefaultBlog(const nsAString & aBlogID) { return _to SetDefaultBlog(aBlogID); } \
  NS_IMETHOD AddCategory(const nsAString & aBlogID, const nsAString & aCategoryId, const nsAString & aCategoryName) { return _to AddCategory(aBlogID, aCategoryId, aCategoryName); } \
  NS_IMETHOD FlushCategories(flockIBlogAccount *aBlogAccount) { return _to FlushCategories(aBlogAccount); } \
  NS_IMETHOD OpenPost(const nsAString & aId) { return _to OpenPost(aId); } \
  NS_IMETHOD OpenEditor(const nsAString & aTitle, const nsAString & aContent, const nsAString & aTags, nsIDOMWindow **_retval) { return _to OpenEditor(aTitle, aContent, aTags, _retval); } \
  NS_IMETHOD EditorIsOpen(PRBool *_retval) { return _to EditorIsOpen(_retval); } \
  NS_IMETHOD SaveDraft(PRInt64 aId, const nsAString & aTitle, const nsAString & aContent, const nsAString & aTags, PRInt64 *_retval) { return _to SaveDraft(aId, aTitle, aContent, aTags, _retval); } \
  NS_IMETHOD RemoveDraft(PRInt64 aId) { return _to RemoveDraft(aId); } \
  NS_IMETHOD MoveTo(PRInt64 aId, const nsAString & aFolderId) { return _to MoveTo(aId, aFolderId); } \
  NS_IMETHOD GetDraftsFrom(const nsAString & aFolderId, nsISimpleEnumerator **_retval) { return _to GetDraftsFrom(aFolderId, _retval); } \
  NS_IMETHOD GetDraft(PRInt64 aDraftId, flockIBlogDraft **_retval) { return _to GetDraft(aDraftId, _retval); } \
  NS_IMETHOD SaveRecovery(PRInt64 aId, const nsAString & aTitle, const nsAString & aContent, const nsAString & aTags, char **_retval) { return _to SaveRecovery(aId, aTitle, aContent, aTags, _retval); } \
  NS_IMETHOD RemoveRecovery(PRInt64 aId) { return _to RemoveRecovery(aId); } \
  NS_IMETHOD GetAllRecovery(nsISimpleEnumerator **_retval) { return _to GetAllRecovery(_retval); } \
  NS_IMETHOD LooseRecovery(void) { return _to LooseRecovery(); } \
  NS_IMETHOD AddNotification(const nsAString & aURL) { return _to AddNotification(aURL); } \
  NS_IMETHOD RemoveNotification(const nsAString & aURL) { return _to RemoveNotification(aURL); } \
  NS_IMETHOD GetNotifications(nsIStringEnumerator **_retval) { return _to GetNotifications(_retval); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_FLOCKIBLOGSERVICE(_to) \
  NS_IMETHOD GetServices(nsISimpleEnumerator * *aServices) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetServices(aServices); } \
  NS_IMETHOD RegisterAPI(flockICustomBlogWebService *aAPI, const nsACString & aShortname) { return !_to ? NS_ERROR_NULL_POINTER : _to->RegisterAPI(aAPI, aShortname); } \
  NS_IMETHOD GetAPIFromShortname(const nsACString & aShortname, flockICustomBlogWebService **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAPIFromShortname(aShortname, _retval); } \
  NS_IMETHOD GetShortnameFromAPI(flockICustomBlogWebService *aAPI, nsAString & _retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetShortnameFromAPI(aAPI, _retval); } \
  NS_IMETHOD GetCandidatesAPI(flockIDetectListener *aListener, const nsAString & aUrl) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCandidatesAPI(aListener, aUrl); } \
  NS_IMETHOD AccountCount(PRInt32 *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->AccountCount(_retval); } \
  NS_IMETHOD GetAccountList(nsISimpleEnumerator **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAccountList(_retval); } \
  NS_IMETHOD GetAccount(const nsAString & aBlogID, flockIBlogAccount **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAccount(aBlogID, _retval); } \
  NS_IMETHOD AccountExists(const nsAString & aTitle, PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->AccountExists(aTitle, _retval); } \
  NS_IMETHOD SaveAccount(const nsAString & aAccountID, const nsAString & aBlogId, flockIBlogAccount *aBlogAccount) { return !_to ? NS_ERROR_NULL_POINTER : _to->SaveAccount(aAccountID, aBlogId, aBlogAccount); } \
  NS_IMETHOD GetDefaultBlog(nsAString & _retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDefaultBlog(_retval); } \
  NS_IMETHOD SetDefaultBlog(const nsAString & aBlogID) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDefaultBlog(aBlogID); } \
  NS_IMETHOD AddCategory(const nsAString & aBlogID, const nsAString & aCategoryId, const nsAString & aCategoryName) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddCategory(aBlogID, aCategoryId, aCategoryName); } \
  NS_IMETHOD FlushCategories(flockIBlogAccount *aBlogAccount) { return !_to ? NS_ERROR_NULL_POINTER : _to->FlushCategories(aBlogAccount); } \
  NS_IMETHOD OpenPost(const nsAString & aId) { return !_to ? NS_ERROR_NULL_POINTER : _to->OpenPost(aId); } \
  NS_IMETHOD OpenEditor(const nsAString & aTitle, const nsAString & aContent, const nsAString & aTags, nsIDOMWindow **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->OpenEditor(aTitle, aContent, aTags, _retval); } \
  NS_IMETHOD EditorIsOpen(PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->EditorIsOpen(_retval); } \
  NS_IMETHOD SaveDraft(PRInt64 aId, const nsAString & aTitle, const nsAString & aContent, const nsAString & aTags, PRInt64 *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->SaveDraft(aId, aTitle, aContent, aTags, _retval); } \
  NS_IMETHOD RemoveDraft(PRInt64 aId) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveDraft(aId); } \
  NS_IMETHOD MoveTo(PRInt64 aId, const nsAString & aFolderId) { return !_to ? NS_ERROR_NULL_POINTER : _to->MoveTo(aId, aFolderId); } \
  NS_IMETHOD GetDraftsFrom(const nsAString & aFolderId, nsISimpleEnumerator **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDraftsFrom(aFolderId, _retval); } \
  NS_IMETHOD GetDraft(PRInt64 aDraftId, flockIBlogDraft **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDraft(aDraftId, _retval); } \
  NS_IMETHOD SaveRecovery(PRInt64 aId, const nsAString & aTitle, const nsAString & aContent, const nsAString & aTags, char **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->SaveRecovery(aId, aTitle, aContent, aTags, _retval); } \
  NS_IMETHOD RemoveRecovery(PRInt64 aId) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveRecovery(aId); } \
  NS_IMETHOD GetAllRecovery(nsISimpleEnumerator **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAllRecovery(_retval); } \
  NS_IMETHOD LooseRecovery(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->LooseRecovery(); } \
  NS_IMETHOD AddNotification(const nsAString & aURL) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddNotification(aURL); } \
  NS_IMETHOD RemoveNotification(const nsAString & aURL) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveNotification(aURL); } \
  NS_IMETHOD GetNotifications(nsIStringEnumerator **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNotifications(_retval); } 

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

/* Header file */
class _MYCLASS_ : public flockIBlogService
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_FLOCKIBLOGSERVICE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, flockIBlogService)

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

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

/* readonly attribute nsISimpleEnumerator services; */
NS_IMETHODIMP _MYCLASS_::GetServices(nsISimpleEnumerator * *aServices)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void registerAPI (in flockICustomBlogWebService aAPI, in ACString aShortname); */
NS_IMETHODIMP _MYCLASS_::RegisterAPI(flockICustomBlogWebService *aAPI, const nsACString & aShortname)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* flockICustomBlogWebService getAPIFromShortname (in ACString aShortname); */
NS_IMETHODIMP _MYCLASS_::GetAPIFromShortname(const nsACString & aShortname, flockICustomBlogWebService **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* AString getShortnameFromAPI (in flockICustomBlogWebService aAPI); */
NS_IMETHODIMP _MYCLASS_::GetShortnameFromAPI(flockICustomBlogWebService *aAPI, nsAString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getCandidatesAPI (in flockIDetectListener aListener, in AString aUrl); */
NS_IMETHODIMP _MYCLASS_::GetCandidatesAPI(flockIDetectListener *aListener, const nsAString & aUrl)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* long accountCount (); */
NS_IMETHODIMP _MYCLASS_::AccountCount(PRInt32 *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsISimpleEnumerator getAccountList (); */
NS_IMETHODIMP _MYCLASS_::GetAccountList(nsISimpleEnumerator **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* flockIBlogAccount getAccount (in AString aBlogID); */
NS_IMETHODIMP _MYCLASS_::GetAccount(const nsAString & aBlogID, flockIBlogAccount **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean accountExists (in AString aTitle); */
NS_IMETHODIMP _MYCLASS_::AccountExists(const nsAString & aTitle, PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void saveAccount (in AString aAccountID, in AString aBlogId, in flockIBlogAccount aBlogAccount); */
NS_IMETHODIMP _MYCLASS_::SaveAccount(const nsAString & aAccountID, const nsAString & aBlogId, flockIBlogAccount *aBlogAccount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* AString getDefaultBlog (); */
NS_IMETHODIMP _MYCLASS_::GetDefaultBlog(nsAString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setDefaultBlog (in AString aBlogID); */
NS_IMETHODIMP _MYCLASS_::SetDefaultBlog(const nsAString & aBlogID)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addCategory (in AString aBlogID, in AString aCategoryId, in AString aCategoryName); */
NS_IMETHODIMP _MYCLASS_::AddCategory(const nsAString & aBlogID, const nsAString & aCategoryId, const nsAString & aCategoryName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void flushCategories (in flockIBlogAccount aBlogAccount); */
NS_IMETHODIMP _MYCLASS_::FlushCategories(flockIBlogAccount *aBlogAccount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void openPost (in AString aId); */
NS_IMETHODIMP _MYCLASS_::OpenPost(const nsAString & aId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIDOMWindow openEditor (in AString aTitle, in AString aContent, in AString aTags); */
NS_IMETHODIMP _MYCLASS_::OpenEditor(const nsAString & aTitle, const nsAString & aContent, const nsAString & aTags, nsIDOMWindow **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean editorIsOpen (); */
NS_IMETHODIMP _MYCLASS_::EditorIsOpen(PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* long long saveDraft (in long long aId, in AString aTitle, in AString aContent, in AString aTags); */
NS_IMETHODIMP _MYCLASS_::SaveDraft(PRInt64 aId, const nsAString & aTitle, const nsAString & aContent, const nsAString & aTags, PRInt64 *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeDraft (in long long aId); */
NS_IMETHODIMP _MYCLASS_::RemoveDraft(PRInt64 aId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void moveTo (in long long aId, in AString aFolderId); */
NS_IMETHODIMP _MYCLASS_::MoveTo(PRInt64 aId, const nsAString & aFolderId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsISimpleEnumerator getDraftsFrom (in AString aFolderId); */
NS_IMETHODIMP _MYCLASS_::GetDraftsFrom(const nsAString & aFolderId, nsISimpleEnumerator **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* flockIBlogDraft getDraft (in long long aDraftId); */
NS_IMETHODIMP _MYCLASS_::GetDraft(PRInt64 aDraftId, flockIBlogDraft **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* string saveRecovery (in long long aId, in AString aTitle, in AString aContent, in AString aTags); */
NS_IMETHODIMP _MYCLASS_::SaveRecovery(PRInt64 aId, const nsAString & aTitle, const nsAString & aContent, const nsAString & aTags, char **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeRecovery (in long long aId); */
NS_IMETHODIMP _MYCLASS_::RemoveRecovery(PRInt64 aId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsISimpleEnumerator getAllRecovery (); */
NS_IMETHODIMP _MYCLASS_::GetAllRecovery(nsISimpleEnumerator **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void looseRecovery (); */
NS_IMETHODIMP _MYCLASS_::LooseRecovery()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addNotification (in AString aURL); */
NS_IMETHODIMP _MYCLASS_::AddNotification(const nsAString & aURL)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeNotification (in AString aURL); */
NS_IMETHODIMP _MYCLASS_::RemoveNotification(const nsAString & aURL)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIStringEnumerator getNotifications (); */
NS_IMETHODIMP _MYCLASS_::GetNotifications(nsIStringEnumerator **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_flockIBlogService_h__ */
