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

#ifndef __gen_flockIWebService_h__
#define __gen_flockIWebService_h__


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

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

#ifndef __gen_flockIListener_h__
#include "flockIListener.h"
#endif

#ifndef __gen_nsIVariant_h__
#include "nsIVariant.h"
#endif

#ifndef __gen_nsIPropertyBag_h__
#include "nsIPropertyBag.h"
#endif

#ifndef __gen_nsIStringBundle_h__
#include "nsIStringBundle.h"
#endif

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


/* starting interface:    flockIWebService */
#define FLOCKIWEBSERVICE_IID_STR "e40ad26e-d2af-4a90-8bb1-85432c0fa6b0"

#define FLOCKIWEBSERVICE_IID \
  {0xe40ad26e, 0xd2af, 0x4a90, \
    { 0x8b, 0xb1, 0x85, 0x43, 0x2c, 0x0f, 0xa6, 0xb0 }}

/**
 * Represents a third-party web service which supports user accounts.  This is
 * the base web service interface, and should be implemented by all web service
 * components.
 *
 * More documentation here:
 * http://wiki.flock.com/wiki/Accounts_Management
 *
 * @see flockIWebServiceAccount
 * @see flockIWebServiceManager
 * @see flockIManageableWebService
 */
class NS_NO_VTABLE flockIWebService : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(FLOCKIWEBSERVICE_IID)

  /** Descriptive title for the service, as recognized by end user */
  /* readonly attribute AString title; */
  NS_IMETHOD GetTitle(nsAString & aTitle) = 0;

  /** Internal name for the service, all lowercase, no punctuation */
  /* readonly attribute AString shortName; */
  NS_IMETHOD GetShortName(nsAString & aShortName) = 0;

  /** Standard favicon URL (chrome, or web) for this service */
  /* readonly attribute AString icon; */
  NS_IMETHOD GetIcon(nsAString & aIcon) = 0;

  /** Url to which to take the user for this service */
  /* readonly attribute AString url; */
  NS_IMETHOD GetUrl(nsAString & aUrl) = 0;

  /** Expose the contractId for matching with Identities */
  /* readonly attribute AString contractId; */
  NS_IMETHOD GetContractId(nsAString & aContractId) = 0;

  /** RDF node id for this service */
  /* readonly attribute AString urn; */
  NS_IMETHOD GetUrn(nsAString & aUrn) = 0;

  /** Whether Flock must know the account password for this service */
  /* readonly attribute boolean needPassword; */
  NS_IMETHOD GetNeedPassword(PRBool *aNeedPassword) = 0;

  /**
   * Possible value for the 'status' attribute.  STATUS_DOWN indicates that
   * Flock thinks this service is not currently available.
   *
   * @see status
   */
  enum { STATUS_DOWN = 0 };

  /**
   * Possible value for the 'status' attribute.  STATUS_UNKNOWN indicates that
   * Flock hasn't determined whether the service is currently available.
   *
   * @see status
   */
  enum { STATUS_UNKNOWN = 1 };

  /**
   * Possible value for the 'status' attribute.  STATUS_UP indicates that Flock
   * thinks this service is currently available.
   *
   * @see status
   */
  enum { STATUS_UP = 2 };

  /**
   * Flag indicating status of the web service.  Possible values are
   * STATUS_DOWN, STATUS_UNKNOWN, STATUS_UP.
   *
   * @see STATUS_DOWN
   * @see STATUS_UNKNOWN
   * @see STATUS_UP
   */
  /* readonly attribute long status; */
  NS_IMETHOD GetStatus(PRInt32 *aStatus) = 0;

  /**
   * A service may provide a localized resource. Use this method to gain access
   * to this resource.
   */
  /* nsIStringBundle getStringBundle (); */
  NS_IMETHOD GetStringBundle(nsIStringBundle **_retval) = 0;

  /**
   * A service may support multiple accounts per user.  Use this method to tell
   * Flock about an existing user account with this service.
   *
   * PRECONDITIONS:
   *  - The account must already exist with the service provider.  This
   *    function does *not* actually register a new account with the service
   *    provider.
   *  - The login/password for the account must already be registered with
   *    the flockAccountUtils service and must be retrievable with a call to
   *    {flockIAccountUtils}.getPassword(<service.URN>:<accountID>).
   *
   * @param aAccountID (in) The unique identifier used by this service to refer
   *        to this account.  This is sometimes equivalent to the login string,
   *        but not always.
   * @param aIsTransient (in) Boolean indicating whether this account should be
   *        created as a "transient" account.  (Transient accounts will exist
   *        only for this browser session.)
   * @param aListener (in) An optional flockIListener that can respond to
   *        success or failure of the add operation.
   * @return An account object which implements flockIWebServiceAccount.
   *
   * @see flockIListener
   */
  /* flockIWebServiceAccount addAccount (in AString aAccountID, in boolean aIsTransient, in flockIListener aListener); */
  NS_IMETHOD AddAccount(const nsAString & aAccountID, PRBool aIsTransient, flockIListener *aListener, flockIWebServiceAccount **_retval) = 0;

  /**
   * Use this method to have Flock forget the account details for an existing
   * user account.
   *
   * @param aUrn (in) The RDF node id for the account to be forgotten.
   * @see flockIWebServiceAccount.remove
   */
  /* void removeAccount (in AString aUrn); */
  NS_IMETHOD RemoveAccount(const nsAString & aUrn) = 0;

  /**
   * Retrieve a flockIWebServiceAccount object for the account with the
   * specified RDF node id.
   *
   * @param aUrn (in) the RDF node id for the account.
   * @return An account object which implements flockIWebServiceAccount.
   */
  /* flockIWebServiceAccount getAccount (in AString aUrn); */
  NS_IMETHOD GetAccount(const nsAString & aUrn, flockIWebServiceAccount **_retval) = 0;

  /**
   * Retrieve a flockIWebServiceAccount object for the first matching
   * authenticated account.
   *
   * @return An account object which implements flockIWebServiceAccount.
   *         Returns null if no account exist or no account is authenticated;
   *         returns the first matching account if several accounts are
   *         authenticated.
   */
  /* flockIWebServiceAccount getAuthenticatedAccount (); */
  NS_IMETHOD GetAuthenticatedAccount(flockIWebServiceAccount **_retval) = 0;

  /**
   * Determines if the service should be hidden from view.  Services are not
   * disabled, this just prevents them from being promoted in the UI.
   *
   * @return true if service should be hidden.
   */
  /* boolean isHidden (); */
  NS_IMETHOD IsHidden(PRBool *_retval) = 0;

  /**
   * Retrieve an enumeration of all the known accounts for this service.
   *
   * @return nsISimpleEnumerator of flockIWebServiceAccount objects.
   */
  /* nsISimpleEnumerator getAccounts (); */
  NS_IMETHOD GetAccounts(nsISimpleEnumerator **_retval) = 0;

  /**
   * Log out from all accounts (remove cookies and deauth API if needed)
   */
  /* void logout (); */
  NS_IMETHOD Logout(void) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_FLOCKIWEBSERVICE \
  NS_IMETHOD GetTitle(nsAString & aTitle); \
  NS_IMETHOD GetShortName(nsAString & aShortName); \
  NS_IMETHOD GetIcon(nsAString & aIcon); \
  NS_IMETHOD GetUrl(nsAString & aUrl); \
  NS_IMETHOD GetContractId(nsAString & aContractId); \
  NS_IMETHOD GetUrn(nsAString & aUrn); \
  NS_IMETHOD GetNeedPassword(PRBool *aNeedPassword); \
  NS_IMETHOD GetStatus(PRInt32 *aStatus); \
  NS_IMETHOD GetStringBundle(nsIStringBundle **_retval); \
  NS_IMETHOD AddAccount(const nsAString & aAccountID, PRBool aIsTransient, flockIListener *aListener, flockIWebServiceAccount **_retval); \
  NS_IMETHOD RemoveAccount(const nsAString & aUrn); \
  NS_IMETHOD GetAccount(const nsAString & aUrn, flockIWebServiceAccount **_retval); \
  NS_IMETHOD GetAuthenticatedAccount(flockIWebServiceAccount **_retval); \
  NS_IMETHOD IsHidden(PRBool *_retval); \
  NS_IMETHOD GetAccounts(nsISimpleEnumerator **_retval); \
  NS_IMETHOD Logout(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_FLOCKIWEBSERVICE(_to) \
  NS_IMETHOD GetTitle(nsAString & aTitle) { return _to GetTitle(aTitle); } \
  NS_IMETHOD GetShortName(nsAString & aShortName) { return _to GetShortName(aShortName); } \
  NS_IMETHOD GetIcon(nsAString & aIcon) { return _to GetIcon(aIcon); } \
  NS_IMETHOD GetUrl(nsAString & aUrl) { return _to GetUrl(aUrl); } \
  NS_IMETHOD GetContractId(nsAString & aContractId) { return _to GetContractId(aContractId); } \
  NS_IMETHOD GetUrn(nsAString & aUrn) { return _to GetUrn(aUrn); } \
  NS_IMETHOD GetNeedPassword(PRBool *aNeedPassword) { return _to GetNeedPassword(aNeedPassword); } \
  NS_IMETHOD GetStatus(PRInt32 *aStatus) { return _to GetStatus(aStatus); } \
  NS_IMETHOD GetStringBundle(nsIStringBundle **_retval) { return _to GetStringBundle(_retval); } \
  NS_IMETHOD AddAccount(const nsAString & aAccountID, PRBool aIsTransient, flockIListener *aListener, flockIWebServiceAccount **_retval) { return _to AddAccount(aAccountID, aIsTransient, aListener, _retval); } \
  NS_IMETHOD RemoveAccount(const nsAString & aUrn) { return _to RemoveAccount(aUrn); } \
  NS_IMETHOD GetAccount(const nsAString & aUrn, flockIWebServiceAccount **_retval) { return _to GetAccount(aUrn, _retval); } \
  NS_IMETHOD GetAuthenticatedAccount(flockIWebServiceAccount **_retval) { return _to GetAuthenticatedAccount(_retval); } \
  NS_IMETHOD IsHidden(PRBool *_retval) { return _to IsHidden(_retval); } \
  NS_IMETHOD GetAccounts(nsISimpleEnumerator **_retval) { return _to GetAccounts(_retval); } \
  NS_IMETHOD Logout(void) { return _to Logout(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_FLOCKIWEBSERVICE(_to) \
  NS_IMETHOD GetTitle(nsAString & aTitle) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTitle(aTitle); } \
  NS_IMETHOD GetShortName(nsAString & aShortName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetShortName(aShortName); } \
  NS_IMETHOD GetIcon(nsAString & aIcon) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIcon(aIcon); } \
  NS_IMETHOD GetUrl(nsAString & aUrl) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUrl(aUrl); } \
  NS_IMETHOD GetContractId(nsAString & aContractId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetContractId(aContractId); } \
  NS_IMETHOD GetUrn(nsAString & aUrn) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUrn(aUrn); } \
  NS_IMETHOD GetNeedPassword(PRBool *aNeedPassword) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNeedPassword(aNeedPassword); } \
  NS_IMETHOD GetStatus(PRInt32 *aStatus) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStatus(aStatus); } \
  NS_IMETHOD GetStringBundle(nsIStringBundle **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStringBundle(_retval); } \
  NS_IMETHOD AddAccount(const nsAString & aAccountID, PRBool aIsTransient, flockIListener *aListener, flockIWebServiceAccount **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddAccount(aAccountID, aIsTransient, aListener, _retval); } \
  NS_IMETHOD RemoveAccount(const nsAString & aUrn) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveAccount(aUrn); } \
  NS_IMETHOD GetAccount(const nsAString & aUrn, flockIWebServiceAccount **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAccount(aUrn, _retval); } \
  NS_IMETHOD GetAuthenticatedAccount(flockIWebServiceAccount **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAuthenticatedAccount(_retval); } \
  NS_IMETHOD IsHidden(PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->IsHidden(_retval); } \
  NS_IMETHOD GetAccounts(nsISimpleEnumerator **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAccounts(_retval); } \
  NS_IMETHOD Logout(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Logout(); } 

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

/* Header file */
class _MYCLASS_ : public flockIWebService
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_FLOCKIWEBSERVICE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

/* readonly attribute AString shortName; */
NS_IMETHODIMP _MYCLASS_::GetShortName(nsAString & aShortName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute AString icon; */
NS_IMETHODIMP _MYCLASS_::GetIcon(nsAString & aIcon)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute AString url; */
NS_IMETHODIMP _MYCLASS_::GetUrl(nsAString & aUrl)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute AString contractId; */
NS_IMETHODIMP _MYCLASS_::GetContractId(nsAString & aContractId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute AString urn; */
NS_IMETHODIMP _MYCLASS_::GetUrn(nsAString & aUrn)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean needPassword; */
NS_IMETHODIMP _MYCLASS_::GetNeedPassword(PRBool *aNeedPassword)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long status; */
NS_IMETHODIMP _MYCLASS_::GetStatus(PRInt32 *aStatus)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIStringBundle getStringBundle (); */
NS_IMETHODIMP _MYCLASS_::GetStringBundle(nsIStringBundle **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* flockIWebServiceAccount addAccount (in AString aAccountID, in boolean aIsTransient, in flockIListener aListener); */
NS_IMETHODIMP _MYCLASS_::AddAccount(const nsAString & aAccountID, PRBool aIsTransient, flockIListener *aListener, flockIWebServiceAccount **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeAccount (in AString aUrn); */
NS_IMETHODIMP _MYCLASS_::RemoveAccount(const nsAString & aUrn)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* flockIWebServiceAccount getAuthenticatedAccount (); */
NS_IMETHODIMP _MYCLASS_::GetAuthenticatedAccount(flockIWebServiceAccount **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean isHidden (); */
NS_IMETHODIMP _MYCLASS_::IsHidden(PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsISimpleEnumerator getAccounts (); */
NS_IMETHODIMP _MYCLASS_::GetAccounts(nsISimpleEnumerator **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void logout (); */
NS_IMETHODIMP _MYCLASS_::Logout()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    flockIWebServiceAccount */
#define FLOCKIWEBSERVICEACCOUNT_IID_STR "362fbfea-b889-442f-8d69-6be0f4c4c31c"

#define FLOCKIWEBSERVICEACCOUNT_IID \
  {0x362fbfea, 0xb889, 0x442f, \
    { 0x8d, 0x69, 0x6b, 0xe0, 0xf4, 0xc4, 0xc3, 0x1c }}

class NS_NO_VTABLE flockIWebServiceAccount : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(FLOCKIWEBSERVICEACCOUNT_IID)

  /**
 * This is the account interface associated with flockIWebService.  It is the
 * base web service account interface, and should be implemented by all web
 * service accounts.
 *
 * More documentation here:
 * http://wiki.flock.com/index.php?title=Danphe:AccountsAndServices
 *
 * @see flockIWebService
 */
/** RDF node id for this account */
  /* readonly attribute AString urn; */
  NS_IMETHOD GetUrn(nsAString & aUrn) = 0;

  /**
   * Calling this method will set the 'isPollable' RDF attribute for this
   * account to TRUE, which means that Flock will try to poll the account for
   * content.
   *
   * @param aListener (in) A flockIListener, optional, which may respond to
   *        success or failure conditions.
   *
   * @see flockIListener
   */
  /* void activate (in flockIListener aListener); */
  NS_IMETHOD Activate(flockIListener *aListener) = 0;

  /**
   * Calling this method will set the 'isPollable' RDF attribute for this
   * account to FALSE, which means that Flock will NOT try to poll the account
   * for content.
   *
   * @param aListener (in) A flockIListener, optional, which may respond to
   *        success or failure conditions.
   *
   * @see flockIListener
   */
  /* void deactivate (in flockIListener aListener); */
  NS_IMETHOD Deactivate(flockIListener *aListener) = 0;

  /**
   * Get a handle to the flockIWebService associated with this account.
   */
  /* flockIWebService getService (); */
  NS_IMETHOD GetService(flockIWebService **_retval) = 0;

  /**
   * Log in to the account, using stored username and password.
   *
   * @param aListener (in) A flockIListener, optional, which may respond to
   *        success or failure conditions.
   *
   * @see flockIListener
   */
  /* void login (in flockIListener aListener); */
  NS_IMETHOD Login(flockIListener *aListener) = 0;

  /**
   * Log out of the account.
   *
   * @param aListener (in) A flockIListener, optional, which may respond to
   *        success or failure conditions.
   *
   * @see flockIListener
   */
  /* void logout (in flockIListener aListener); */
  NS_IMETHOD Logout(flockIListener *aListener) = 0;

  /**
   * Accounts are usually initially created in a "transient" state, meaning
   * that they will only last for the duration of the current browser session.
   * This method makes the account non-transient.
   */
  /* void keep (); */
  NS_IMETHOD Keep(void) = 0;

  /**
   * Return true if the account is logged in, false otherwise.
   */
  /* boolean isAuthenticated (); */
  NS_IMETHOD IsAuthenticated(PRBool *_retval) = 0;

  /**
   * Gets value of account parameter aParamName customParams list
   * ** see  flockIUtils.addCustomParamsToAccount() **
   * @param aParamName (in) parameter to return
   * candidates of parameters :
   * accountId
   * avatar
   * name
   * statusMessage
   * lastUpdateDate
   * nextRefresh
   * accountMessages 
   * authToken
   * @return nsIVariant value that corresponds to aParam for this account
   */
  /* nsIVariant getParam (in AString aParamName); */
  NS_IMETHOD GetParam(const nsAString & aParamName, nsIVariant **_retval) = 0;

  /**
   * Gets value of a default param of account
   * @param aParamName (in) parameter to return
   * candidates of parameters :
   * accountId
   * avatar
   * name
   * statusMessage
   * lastUpdateDate
   * nextRefresh
   * accountMessages 
   * authToken
   * @return void
   */
  /* void setParam (in AString aParamName, in nsIVariant aValue); */
  NS_IMETHOD SetParam(const nsAString & aParamName, nsIVariant *aValue) = 0;

  /**
  * Gets value of account parameter aParamName customParams list
  * ** see  flockIUtils.addCustomParamsToAccount() **
  * @param aParamName (in) parameter to return
  * @return nsIVariant value that corresponds to aParam for this account
  */
  /* nsIVariant getCustomParam (in AString aParamName); */
  NS_IMETHOD GetCustomParam(const nsAString & aParamName, nsIVariant **_retval) = 0;

  /**
   * Gets all custom account parameters
   * ** see  flockIUtils.addCustomParamsToAccount() **
   * @return nsIPropertyBag of all custom params for this account
   */
  /* nsIPropertyBag getAllCustomParams (); */
  NS_IMETHOD GetAllCustomParams(nsIPropertyBag **_retval) = 0;

  /**
   * sets value of account parameter aParamName
   * ** see  flockIUtils.addCustomParamsToAccount() **
   * @param aParamName (in) parameter to return
   * @param aValue (in) new value for parameter
   * @return void
   */
  /* void setCustomParam (in AString aParamName, in nsIVariant aValue); */
  NS_IMETHOD SetCustomParam(const nsAString & aParamName, nsIVariant *aValue) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_FLOCKIWEBSERVICEACCOUNT \
  NS_IMETHOD GetUrn(nsAString & aUrn); \
  NS_IMETHOD Activate(flockIListener *aListener); \
  NS_IMETHOD Deactivate(flockIListener *aListener); \
  NS_IMETHOD GetService(flockIWebService **_retval); \
  NS_IMETHOD Login(flockIListener *aListener); \
  NS_IMETHOD Logout(flockIListener *aListener); \
  NS_IMETHOD Keep(void); \
  NS_IMETHOD IsAuthenticated(PRBool *_retval); \
  NS_IMETHOD GetParam(const nsAString & aParamName, nsIVariant **_retval); \
  NS_IMETHOD SetParam(const nsAString & aParamName, nsIVariant *aValue); \
  NS_IMETHOD GetCustomParam(const nsAString & aParamName, nsIVariant **_retval); \
  NS_IMETHOD GetAllCustomParams(nsIPropertyBag **_retval); \
  NS_IMETHOD SetCustomParam(const nsAString & aParamName, nsIVariant *aValue); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_FLOCKIWEBSERVICEACCOUNT(_to) \
  NS_IMETHOD GetUrn(nsAString & aUrn) { return _to GetUrn(aUrn); } \
  NS_IMETHOD Activate(flockIListener *aListener) { return _to Activate(aListener); } \
  NS_IMETHOD Deactivate(flockIListener *aListener) { return _to Deactivate(aListener); } \
  NS_IMETHOD GetService(flockIWebService **_retval) { return _to GetService(_retval); } \
  NS_IMETHOD Login(flockIListener *aListener) { return _to Login(aListener); } \
  NS_IMETHOD Logout(flockIListener *aListener) { return _to Logout(aListener); } \
  NS_IMETHOD Keep(void) { return _to Keep(); } \
  NS_IMETHOD IsAuthenticated(PRBool *_retval) { return _to IsAuthenticated(_retval); } \
  NS_IMETHOD GetParam(const nsAString & aParamName, nsIVariant **_retval) { return _to GetParam(aParamName, _retval); } \
  NS_IMETHOD SetParam(const nsAString & aParamName, nsIVariant *aValue) { return _to SetParam(aParamName, aValue); } \
  NS_IMETHOD GetCustomParam(const nsAString & aParamName, nsIVariant **_retval) { return _to GetCustomParam(aParamName, _retval); } \
  NS_IMETHOD GetAllCustomParams(nsIPropertyBag **_retval) { return _to GetAllCustomParams(_retval); } \
  NS_IMETHOD SetCustomParam(const nsAString & aParamName, nsIVariant *aValue) { return _to SetCustomParam(aParamName, aValue); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_FLOCKIWEBSERVICEACCOUNT(_to) \
  NS_IMETHOD GetUrn(nsAString & aUrn) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUrn(aUrn); } \
  NS_IMETHOD Activate(flockIListener *aListener) { return !_to ? NS_ERROR_NULL_POINTER : _to->Activate(aListener); } \
  NS_IMETHOD Deactivate(flockIListener *aListener) { return !_to ? NS_ERROR_NULL_POINTER : _to->Deactivate(aListener); } \
  NS_IMETHOD GetService(flockIWebService **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetService(_retval); } \
  NS_IMETHOD Login(flockIListener *aListener) { return !_to ? NS_ERROR_NULL_POINTER : _to->Login(aListener); } \
  NS_IMETHOD Logout(flockIListener *aListener) { return !_to ? NS_ERROR_NULL_POINTER : _to->Logout(aListener); } \
  NS_IMETHOD Keep(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Keep(); } \
  NS_IMETHOD IsAuthenticated(PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->IsAuthenticated(_retval); } \
  NS_IMETHOD GetParam(const nsAString & aParamName, nsIVariant **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetParam(aParamName, _retval); } \
  NS_IMETHOD SetParam(const nsAString & aParamName, nsIVariant *aValue) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetParam(aParamName, aValue); } \
  NS_IMETHOD GetCustomParam(const nsAString & aParamName, nsIVariant **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCustomParam(aParamName, _retval); } \
  NS_IMETHOD GetAllCustomParams(nsIPropertyBag **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAllCustomParams(_retval); } \
  NS_IMETHOD SetCustomParam(const nsAString & aParamName, nsIVariant *aValue) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCustomParam(aParamName, aValue); } 

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

/* Header file */
class _MYCLASS_ : public flockIWebServiceAccount
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_FLOCKIWEBSERVICEACCOUNT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* readonly attribute AString urn; */
NS_IMETHODIMP _MYCLASS_::GetUrn(nsAString & aUrn)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void activate (in flockIListener aListener); */
NS_IMETHODIMP _MYCLASS_::Activate(flockIListener *aListener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deactivate (in flockIListener aListener); */
NS_IMETHODIMP _MYCLASS_::Deactivate(flockIListener *aListener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* flockIWebService getService (); */
NS_IMETHODIMP _MYCLASS_::GetService(flockIWebService **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void login (in flockIListener aListener); */
NS_IMETHODIMP _MYCLASS_::Login(flockIListener *aListener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void logout (in flockIListener aListener); */
NS_IMETHODIMP _MYCLASS_::Logout(flockIListener *aListener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void keep (); */
NS_IMETHODIMP _MYCLASS_::Keep()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean isAuthenticated (); */
NS_IMETHODIMP _MYCLASS_::IsAuthenticated(PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIVariant getParam (in AString aParamName); */
NS_IMETHODIMP _MYCLASS_::GetParam(const nsAString & aParamName, nsIVariant **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setParam (in AString aParamName, in nsIVariant aValue); */
NS_IMETHODIMP _MYCLASS_::SetParam(const nsAString & aParamName, nsIVariant *aValue)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIVariant getCustomParam (in AString aParamName); */
NS_IMETHODIMP _MYCLASS_::GetCustomParam(const nsAString & aParamName, nsIVariant **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIPropertyBag getAllCustomParams (); */
NS_IMETHODIMP _MYCLASS_::GetAllCustomParams(nsIPropertyBag **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setCustomParam (in AString aParamName, in nsIVariant aValue); */
NS_IMETHODIMP _MYCLASS_::SetCustomParam(const nsAString & aParamName, nsIVariant *aValue)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_flockIWebService_h__ */
