/*
 * 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_nsIPropertyBag_h__
#include "nsIPropertyBag.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:    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 NS_SCRIPTABLE flockIBlogDraft : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(FLOCKIBLOGDRAFT_IID)

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

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

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

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

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

};

  NS_DEFINE_STATIC_IID_ACCESSOR(flockIBlogDraft, FLOCKIBLOGDRAFT_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_FLOCKIBLOGDRAFT \
  NS_SCRIPTABLE NS_IMETHOD GetId(PRInt64 *aId); \
  NS_SCRIPTABLE NS_IMETHOD SetId(PRInt64 aId); \
  NS_SCRIPTABLE NS_IMETHOD GetLastupdate(PRInt64 *aLastupdate); \
  NS_SCRIPTABLE NS_IMETHOD SetLastupdate(PRInt64 aLastupdate); \
  NS_SCRIPTABLE NS_IMETHOD GetTitle(nsAString & aTitle); \
  NS_SCRIPTABLE NS_IMETHOD SetTitle(const nsAString & aTitle); \
  NS_SCRIPTABLE NS_IMETHOD GetContent(nsAString & aContent); \
  NS_SCRIPTABLE NS_IMETHOD SetContent(const nsAString & aContent); \
  NS_SCRIPTABLE NS_IMETHOD GetTags(nsAString & aTags); \
  NS_SCRIPTABLE 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_SCRIPTABLE NS_IMETHOD GetId(PRInt64 *aId) { return _to GetId(aId); } \
  NS_SCRIPTABLE NS_IMETHOD SetId(PRInt64 aId) { return _to SetId(aId); } \
  NS_SCRIPTABLE NS_IMETHOD GetLastupdate(PRInt64 *aLastupdate) { return _to GetLastupdate(aLastupdate); } \
  NS_SCRIPTABLE NS_IMETHOD SetLastupdate(PRInt64 aLastupdate) { return _to SetLastupdate(aLastupdate); } \
  NS_SCRIPTABLE NS_IMETHOD GetTitle(nsAString & aTitle) { return _to GetTitle(aTitle); } \
  NS_SCRIPTABLE NS_IMETHOD SetTitle(const nsAString & aTitle) { return _to SetTitle(aTitle); } \
  NS_SCRIPTABLE NS_IMETHOD GetContent(nsAString & aContent) { return _to GetContent(aContent); } \
  NS_SCRIPTABLE NS_IMETHOD SetContent(const nsAString & aContent) { return _to SetContent(aContent); } \
  NS_SCRIPTABLE NS_IMETHOD GetTags(nsAString & aTags) { return _to GetTags(aTags); } \
  NS_SCRIPTABLE 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_SCRIPTABLE NS_IMETHOD GetId(PRInt64 *aId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetId(aId); } \
  NS_SCRIPTABLE NS_IMETHOD SetId(PRInt64 aId) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetId(aId); } \
  NS_SCRIPTABLE NS_IMETHOD GetLastupdate(PRInt64 *aLastupdate) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLastupdate(aLastupdate); } \
  NS_SCRIPTABLE NS_IMETHOD SetLastupdate(PRInt64 aLastupdate) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLastupdate(aLastupdate); } \
  NS_SCRIPTABLE NS_IMETHOD GetTitle(nsAString & aTitle) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTitle(aTitle); } \
  NS_SCRIPTABLE NS_IMETHOD SetTitle(const nsAString & aTitle) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTitle(aTitle); } \
  NS_SCRIPTABLE NS_IMETHOD GetContent(nsAString & aContent) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetContent(aContent); } \
  NS_SCRIPTABLE NS_IMETHOD SetContent(const nsAString & aContent) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetContent(aContent); } \
  NS_SCRIPTABLE NS_IMETHOD GetTags(nsAString & aTags) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTags(aTags); } \
  NS_SCRIPTABLE 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 "30444088-8bcb-4923-a17b-a75ff39aa0ba"

#define FLOCKIBLOGSERVICE_IID \
  {0x30444088, 0x8bcb, 0x4923, \
    { 0xa1, 0x7b, 0xa7, 0x5f, 0xf3, 0x9a, 0xa0, 0xba }}

class NS_NO_VTABLE NS_SCRIPTABLE flockIBlogService : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(FLOCKIBLOGSERVICE_IID)

  /* readonly attribute nsISimpleEnumerator services; */
  NS_SCRIPTABLE 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_SCRIPTABLE 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_SCRIPTABLE NS_IMETHOD GetAPIFromShortname(const nsACString & aShortname, flockICustomBlogWebService **_retval) = 0;

  /* AString getShortnameFromAPI (in flockICustomBlogWebService aAPI); */
  NS_SCRIPTABLE 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 list is returned through the listener
   * @param aAPI (in) the service providing the API
   * @param aShortname (in) a unique identifier for the API
   * @return nothing
   */
  /* void getCandidatesAPI (in flockIListener aFlockListener, in AString aUrl); */
  NS_SCRIPTABLE NS_IMETHOD GetCandidatesAPI(flockIListener *aFlockListener, const nsAString & aUrl) = 0;

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

  /**
   * Return information about the account corresponding to a blog
   * @param aBlogID (in) the URN of the blog
   * @return a wrapped JS object with the following members:
   *   blogid: the blog id, as the server understands it
   *   username: username to authenticate
   *   password: password to authenticate (may be null if authtoken is not)
   *   authtoken: authentication token (may be null if password is not)
   *   apiLink: the URL of the API
   */
  /* nsISupports getAccount (in AString aBlogID); */
  NS_SCRIPTABLE NS_IMETHOD GetAccount(const nsAString & aBlogID, nsISupports **_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_SCRIPTABLE 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) 
   */
  /* AString getDefaultBlog (); */
  NS_SCRIPTABLE NS_IMETHOD GetDefaultBlog(nsAString & _retval) = 0;

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

  /* void addCategory (in AString aBlogID, in AString aCategoryId, in AString aCategoryName); */
  NS_SCRIPTABLE NS_IMETHOD AddCategory(const nsAString & aBlogID, const nsAString & aCategoryId, const nsAString & aCategoryName) = 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_SCRIPTABLE 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_SCRIPTABLE 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_SCRIPTABLE NS_IMETHOD EditorIsOpen(PRBool *_retval) = 0;

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

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

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

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

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

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

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

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

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

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

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

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

};

  NS_DEFINE_STATIC_IID_ACCESSOR(flockIBlogService, FLOCKIBLOGSERVICE_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_FLOCKIBLOGSERVICE \
  NS_SCRIPTABLE NS_IMETHOD GetServices(nsISimpleEnumerator * *aServices); \
  NS_SCRIPTABLE NS_IMETHOD RegisterAPI(flockICustomBlogWebService *aAPI, const nsACString & aShortname); \
  NS_SCRIPTABLE NS_IMETHOD GetAPIFromShortname(const nsACString & aShortname, flockICustomBlogWebService **_retval); \
  NS_SCRIPTABLE NS_IMETHOD GetShortnameFromAPI(flockICustomBlogWebService *aAPI, nsAString & _retval); \
  NS_SCRIPTABLE NS_IMETHOD GetCandidatesAPI(flockIListener *aFlockListener, const nsAString & aUrl); \
  NS_SCRIPTABLE NS_IMETHOD AccountCount(PRInt32 *_retval); \
  NS_SCRIPTABLE NS_IMETHOD GetAccount(const nsAString & aBlogID, nsISupports **_retval); \
  NS_SCRIPTABLE NS_IMETHOD AccountExists(const nsAString & aTitle, PRBool *_retval); \
  NS_SCRIPTABLE NS_IMETHOD GetDefaultBlog(nsAString & _retval); \
  NS_SCRIPTABLE NS_IMETHOD SetDefaultBlog(const nsAString & aBlogID); \
  NS_SCRIPTABLE NS_IMETHOD AddCategory(const nsAString & aBlogID, const nsAString & aCategoryId, const nsAString & aCategoryName); \
  NS_SCRIPTABLE NS_IMETHOD OpenPost(const nsAString & aId); \
  NS_SCRIPTABLE NS_IMETHOD OpenEditor(const nsAString & aTitle, const nsAString & aContent, const nsAString & aTags, nsIDOMWindow **_retval); \
  NS_SCRIPTABLE NS_IMETHOD EditorIsOpen(PRBool *_retval); \
  NS_SCRIPTABLE NS_IMETHOD SaveDraft(PRInt64 aId, const nsAString & aTitle, const nsAString & aContent, const nsAString & aTags, PRInt64 *_retval); \
  NS_SCRIPTABLE NS_IMETHOD RemoveDraft(PRInt64 aId); \
  NS_SCRIPTABLE NS_IMETHOD MoveTo(PRInt64 aId, const nsAString & aFolderId); \
  NS_SCRIPTABLE NS_IMETHOD GetDraftsFrom(const nsAString & aFolderId, nsISimpleEnumerator **_retval); \
  NS_SCRIPTABLE NS_IMETHOD GetDraft(PRInt64 aDraftId, flockIBlogDraft **_retval); \
  NS_SCRIPTABLE NS_IMETHOD SaveRecovery(PRInt64 aId, const nsAString & aTitle, const nsAString & aContent, const nsAString & aTags, char **_retval); \
  NS_SCRIPTABLE NS_IMETHOD RemoveRecovery(PRInt64 aId); \
  NS_SCRIPTABLE NS_IMETHOD GetAllRecovery(nsISimpleEnumerator **_retval); \
  NS_SCRIPTABLE NS_IMETHOD LooseRecovery(void); \
  NS_SCRIPTABLE NS_IMETHOD AddNotification(const nsAString & aURL); \
  NS_SCRIPTABLE NS_IMETHOD RemoveNotification(const nsAString & aURL); \
  NS_SCRIPTABLE 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_SCRIPTABLE NS_IMETHOD GetServices(nsISimpleEnumerator * *aServices) { return _to GetServices(aServices); } \
  NS_SCRIPTABLE NS_IMETHOD RegisterAPI(flockICustomBlogWebService *aAPI, const nsACString & aShortname) { return _to RegisterAPI(aAPI, aShortname); } \
  NS_SCRIPTABLE NS_IMETHOD GetAPIFromShortname(const nsACString & aShortname, flockICustomBlogWebService **_retval) { return _to GetAPIFromShortname(aShortname, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetShortnameFromAPI(flockICustomBlogWebService *aAPI, nsAString & _retval) { return _to GetShortnameFromAPI(aAPI, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetCandidatesAPI(flockIListener *aFlockListener, const nsAString & aUrl) { return _to GetCandidatesAPI(aFlockListener, aUrl); } \
  NS_SCRIPTABLE NS_IMETHOD AccountCount(PRInt32 *_retval) { return _to AccountCount(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetAccount(const nsAString & aBlogID, nsISupports **_retval) { return _to GetAccount(aBlogID, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD AccountExists(const nsAString & aTitle, PRBool *_retval) { return _to AccountExists(aTitle, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetDefaultBlog(nsAString & _retval) { return _to GetDefaultBlog(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD SetDefaultBlog(const nsAString & aBlogID) { return _to SetDefaultBlog(aBlogID); } \
  NS_SCRIPTABLE NS_IMETHOD AddCategory(const nsAString & aBlogID, const nsAString & aCategoryId, const nsAString & aCategoryName) { return _to AddCategory(aBlogID, aCategoryId, aCategoryName); } \
  NS_SCRIPTABLE NS_IMETHOD OpenPost(const nsAString & aId) { return _to OpenPost(aId); } \
  NS_SCRIPTABLE NS_IMETHOD OpenEditor(const nsAString & aTitle, const nsAString & aContent, const nsAString & aTags, nsIDOMWindow **_retval) { return _to OpenEditor(aTitle, aContent, aTags, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD EditorIsOpen(PRBool *_retval) { return _to EditorIsOpen(_retval); } \
  NS_SCRIPTABLE 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_SCRIPTABLE NS_IMETHOD RemoveDraft(PRInt64 aId) { return _to RemoveDraft(aId); } \
  NS_SCRIPTABLE NS_IMETHOD MoveTo(PRInt64 aId, const nsAString & aFolderId) { return _to MoveTo(aId, aFolderId); } \
  NS_SCRIPTABLE NS_IMETHOD GetDraftsFrom(const nsAString & aFolderId, nsISimpleEnumerator **_retval) { return _to GetDraftsFrom(aFolderId, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetDraft(PRInt64 aDraftId, flockIBlogDraft **_retval) { return _to GetDraft(aDraftId, _retval); } \
  NS_SCRIPTABLE 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_SCRIPTABLE NS_IMETHOD RemoveRecovery(PRInt64 aId) { return _to RemoveRecovery(aId); } \
  NS_SCRIPTABLE NS_IMETHOD GetAllRecovery(nsISimpleEnumerator **_retval) { return _to GetAllRecovery(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD LooseRecovery(void) { return _to LooseRecovery(); } \
  NS_SCRIPTABLE NS_IMETHOD AddNotification(const nsAString & aURL) { return _to AddNotification(aURL); } \
  NS_SCRIPTABLE NS_IMETHOD RemoveNotification(const nsAString & aURL) { return _to RemoveNotification(aURL); } \
  NS_SCRIPTABLE 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_SCRIPTABLE NS_IMETHOD GetServices(nsISimpleEnumerator * *aServices) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetServices(aServices); } \
  NS_SCRIPTABLE NS_IMETHOD RegisterAPI(flockICustomBlogWebService *aAPI, const nsACString & aShortname) { return !_to ? NS_ERROR_NULL_POINTER : _to->RegisterAPI(aAPI, aShortname); } \
  NS_SCRIPTABLE NS_IMETHOD GetAPIFromShortname(const nsACString & aShortname, flockICustomBlogWebService **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAPIFromShortname(aShortname, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetShortnameFromAPI(flockICustomBlogWebService *aAPI, nsAString & _retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetShortnameFromAPI(aAPI, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetCandidatesAPI(flockIListener *aFlockListener, const nsAString & aUrl) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCandidatesAPI(aFlockListener, aUrl); } \
  NS_SCRIPTABLE NS_IMETHOD AccountCount(PRInt32 *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->AccountCount(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetAccount(const nsAString & aBlogID, nsISupports **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAccount(aBlogID, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD AccountExists(const nsAString & aTitle, PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->AccountExists(aTitle, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetDefaultBlog(nsAString & _retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDefaultBlog(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD SetDefaultBlog(const nsAString & aBlogID) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDefaultBlog(aBlogID); } \
  NS_SCRIPTABLE NS_IMETHOD AddCategory(const nsAString & aBlogID, const nsAString & aCategoryId, const nsAString & aCategoryName) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddCategory(aBlogID, aCategoryId, aCategoryName); } \
  NS_SCRIPTABLE NS_IMETHOD OpenPost(const nsAString & aId) { return !_to ? NS_ERROR_NULL_POINTER : _to->OpenPost(aId); } \
  NS_SCRIPTABLE 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_SCRIPTABLE NS_IMETHOD EditorIsOpen(PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->EditorIsOpen(_retval); } \
  NS_SCRIPTABLE 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_SCRIPTABLE NS_IMETHOD RemoveDraft(PRInt64 aId) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveDraft(aId); } \
  NS_SCRIPTABLE NS_IMETHOD MoveTo(PRInt64 aId, const nsAString & aFolderId) { return !_to ? NS_ERROR_NULL_POINTER : _to->MoveTo(aId, aFolderId); } \
  NS_SCRIPTABLE NS_IMETHOD GetDraftsFrom(const nsAString & aFolderId, nsISimpleEnumerator **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDraftsFrom(aFolderId, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetDraft(PRInt64 aDraftId, flockIBlogDraft **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDraft(aDraftId, _retval); } \
  NS_SCRIPTABLE 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_SCRIPTABLE NS_IMETHOD RemoveRecovery(PRInt64 aId) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveRecovery(aId); } \
  NS_SCRIPTABLE NS_IMETHOD GetAllRecovery(nsISimpleEnumerator **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAllRecovery(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD LooseRecovery(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->LooseRecovery(); } \
  NS_SCRIPTABLE NS_IMETHOD AddNotification(const nsAString & aURL) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddNotification(aURL); } \
  NS_SCRIPTABLE NS_IMETHOD RemoveNotification(const nsAString & aURL) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveNotification(aURL); } \
  NS_SCRIPTABLE 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 flockIListener aFlockListener, in AString aUrl); */
NS_IMETHODIMP _MYCLASS_::GetCandidatesAPI(flockIListener *aFlockListener, const nsAString & aUrl)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* nsISupports getAccount (in AString aBlogID); */
NS_IMETHODIMP _MYCLASS_::GetAccount(const nsAString & aBlogID, nsISupports **_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;
}

/* 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 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__ */
