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

#ifndef __gen_flockIBookmarkWebService_h__
#define __gen_flockIBookmarkWebService_h__


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

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

#ifndef __gen_flockIWebService_h__
#include "flockIWebService.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:    flockIBookmark */
#define FLOCKIBOOKMARK_IID_STR "9bbd95a7-0656-464c-8560-73a21bd00be3"

#define FLOCKIBOOKMARK_IID \
  {0x9bbd95a7, 0x0656, 0x464c, \
    { 0x85, 0x60, 0x73, 0xa2, 0x1b, 0xd0, 0x0b, 0xe3 }}

class NS_NO_VTABLE NS_SCRIPTABLE flockIBookmark : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(FLOCKIBOOKMARK_IID)

  /* attribute string URL; */
  NS_SCRIPTABLE NS_IMETHOD GetURL(char * *aURL) = 0;
  NS_SCRIPTABLE NS_IMETHOD SetURL(const char * aURL) = 0;

  /* attribute AString name; */
  NS_SCRIPTABLE NS_IMETHOD GetName(nsAString & aName) = 0;
  NS_SCRIPTABLE NS_IMETHOD SetName(const nsAString & aName) = 0;

  /* attribute AString description; */
  NS_SCRIPTABLE NS_IMETHOD GetDescription(nsAString & aDescription) = 0;
  NS_SCRIPTABLE NS_IMETHOD SetDescription(const nsAString & aDescription) = 0;

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

  /* attribute PRTime time; */
  NS_SCRIPTABLE NS_IMETHOD GetTime(PRTime *aTime) = 0;
  NS_SCRIPTABLE NS_IMETHOD SetTime(PRTime aTime) = 0;

  /* attribute boolean shared; */
  NS_SCRIPTABLE NS_IMETHOD GetShared(PRBool *aShared) = 0;
  NS_SCRIPTABLE NS_IMETHOD SetShared(PRBool aShared) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(flockIBookmark, FLOCKIBOOKMARK_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_FLOCKIBOOKMARK \
  NS_SCRIPTABLE NS_IMETHOD GetURL(char * *aURL); \
  NS_SCRIPTABLE NS_IMETHOD SetURL(const char * aURL); \
  NS_SCRIPTABLE NS_IMETHOD GetName(nsAString & aName); \
  NS_SCRIPTABLE NS_IMETHOD SetName(const nsAString & aName); \
  NS_SCRIPTABLE NS_IMETHOD GetDescription(nsAString & aDescription); \
  NS_SCRIPTABLE NS_IMETHOD SetDescription(const nsAString & aDescription); \
  NS_SCRIPTABLE NS_IMETHOD GetTags(nsAString & aTags); \
  NS_SCRIPTABLE NS_IMETHOD SetTags(const nsAString & aTags); \
  NS_SCRIPTABLE NS_IMETHOD GetTime(PRTime *aTime); \
  NS_SCRIPTABLE NS_IMETHOD SetTime(PRTime aTime); \
  NS_SCRIPTABLE NS_IMETHOD GetShared(PRBool *aShared); \
  NS_SCRIPTABLE NS_IMETHOD SetShared(PRBool aShared); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_FLOCKIBOOKMARK(_to) \
  NS_SCRIPTABLE NS_IMETHOD GetURL(char * *aURL) { return _to GetURL(aURL); } \
  NS_SCRIPTABLE NS_IMETHOD SetURL(const char * aURL) { return _to SetURL(aURL); } \
  NS_SCRIPTABLE NS_IMETHOD GetName(nsAString & aName) { return _to GetName(aName); } \
  NS_SCRIPTABLE NS_IMETHOD SetName(const nsAString & aName) { return _to SetName(aName); } \
  NS_SCRIPTABLE NS_IMETHOD GetDescription(nsAString & aDescription) { return _to GetDescription(aDescription); } \
  NS_SCRIPTABLE NS_IMETHOD SetDescription(const nsAString & aDescription) { return _to SetDescription(aDescription); } \
  NS_SCRIPTABLE NS_IMETHOD GetTags(nsAString & aTags) { return _to GetTags(aTags); } \
  NS_SCRIPTABLE NS_IMETHOD SetTags(const nsAString & aTags) { return _to SetTags(aTags); } \
  NS_SCRIPTABLE NS_IMETHOD GetTime(PRTime *aTime) { return _to GetTime(aTime); } \
  NS_SCRIPTABLE NS_IMETHOD SetTime(PRTime aTime) { return _to SetTime(aTime); } \
  NS_SCRIPTABLE NS_IMETHOD GetShared(PRBool *aShared) { return _to GetShared(aShared); } \
  NS_SCRIPTABLE NS_IMETHOD SetShared(PRBool aShared) { return _to SetShared(aShared); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_FLOCKIBOOKMARK(_to) \
  NS_SCRIPTABLE NS_IMETHOD GetURL(char * *aURL) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetURL(aURL); } \
  NS_SCRIPTABLE NS_IMETHOD SetURL(const char * aURL) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetURL(aURL); } \
  NS_SCRIPTABLE NS_IMETHOD GetName(nsAString & aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_SCRIPTABLE NS_IMETHOD SetName(const nsAString & aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetName(aName); } \
  NS_SCRIPTABLE NS_IMETHOD GetDescription(nsAString & aDescription) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDescription(aDescription); } \
  NS_SCRIPTABLE NS_IMETHOD SetDescription(const nsAString & aDescription) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDescription(aDescription); } \
  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); } \
  NS_SCRIPTABLE NS_IMETHOD GetTime(PRTime *aTime) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTime(aTime); } \
  NS_SCRIPTABLE NS_IMETHOD SetTime(PRTime aTime) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTime(aTime); } \
  NS_SCRIPTABLE NS_IMETHOD GetShared(PRBool *aShared) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetShared(aShared); } \
  NS_SCRIPTABLE NS_IMETHOD SetShared(PRBool aShared) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetShared(aShared); } 

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

/* Header file */
class _MYCLASS_ : public flockIBookmark
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_FLOCKIBOOKMARK

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* attribute string URL; */
NS_IMETHODIMP _MYCLASS_::GetURL(char * *aURL)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetURL(const char * aURL)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute AString name; */
NS_IMETHODIMP _MYCLASS_::GetName(nsAString & aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetName(const nsAString & aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute AString description; */
NS_IMETHODIMP _MYCLASS_::GetDescription(nsAString & aDescription)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetDescription(const nsAString & aDescription)
{
    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;
}

/* attribute PRTime time; */
NS_IMETHODIMP _MYCLASS_::GetTime(PRTime *aTime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetTime(PRTime aTime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean shared; */
NS_IMETHODIMP _MYCLASS_::GetShared(PRBool *aShared)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetShared(PRBool aShared)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    flockIBookmarkWebService */
#define FLOCKIBOOKMARKWEBSERVICE_IID_STR "d918069d-eee4-4b0c-a8f3-5795e4f0324c"

#define FLOCKIBOOKMARKWEBSERVICE_IID \
  {0xd918069d, 0xeee4, 0x4b0c, \
    { 0xa8, 0xf3, 0x57, 0x95, 0xe4, 0xf0, 0x32, 0x4c }}

/**
 * A Bookmark Web Service is a web service that stores a user's bookmarks
 * remotely and provides a means for the user to access them from a
 * multitude of client browsers.
 *
 * Flock is able to synchronize the user's in-browser bookmarks with
 * those in a flockIBookmarkAccount.
 *
 * It is possible for a user to have more than one bookmark account, but
 * Flock is only able to synchronize with one account at a time.  For this
 * reason, Bookmark Web Services must be managed by the Web Service
 * Manager (flockIWebServiceManager) and hence must inherit from the
 * flockILoginWebService interface.
 *
 * More documentation here:
 * http://developer.flock.com/wiki/Accounts_Management
 *
 * @see flockIBookmarkAccount
 * @see flockIWebServiceManager
 * @see flockILoginWebService
 */
class NS_NO_VTABLE NS_SCRIPTABLE flockIBookmarkWebService : public flockILoginWebService {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(FLOCKIBOOKMARKWEBSERVICE_IID)

  /**
   * Posts one bookmark to the server.
   *
   * @param aFlockListener (in) a listener to respond to successful publication
   *        or error
   * @param aAccountId (in) The account id (as the server would understand)
   * @param aBookmark (in) The bookmark to publish
   */
  /* void publish (in flockIListener aFlockListener, in AString aAccountId, in flockIBookmark aBookmark); */
  NS_SCRIPTABLE NS_IMETHOD Publish(flockIListener *aFlockListener, const nsAString & aAccountId, flockIBookmark *aBookmark) = 0;

  /**
   * Posts several bookmarks to the server.
   *
   * @param aFlockListener (in) a listener to respond to successful publication
   *        or error
   * @param aAccountId (in) The account id (as the server would understand)
   * @param aBookmarkList (in) simpleEnumerator of flockIBookmark - the
   *        bookmarks to publish
   */
  /* void publishList (in flockIListener aFlockListener, in AString aAccountId, in nsISimpleEnumerator aBookmarkList); */
  NS_SCRIPTABLE NS_IMETHOD PublishList(flockIListener *aFlockListener, const nsAString & aAccountId, nsISimpleEnumerator *aBookmarkList) = 0;

  /**
   * Remove a bookmark from the server.
   *
   * @param aFlockListener (in) a listener to respond to successful removal or
   *        error
   * @param aAccountId (in) The account id (as the server would understand)
   * @param aBookmark (in) The bookmark to remove
   */
  /* void remove (in flockIListener aFlockListener, in AString aAccountId, in AString aBookmark); */
  NS_SCRIPTABLE NS_IMETHOD Remove(flockIListener *aFlockListener, const nsAString & aAccountId, const nsAString & aBookmark) = 0;

  /**
   * Look in the local copy to see if a given bookmark exist on the server. No
   * network call is done.
   *
   * @param aAccountId (in) The account id (as the server would understand)
   * @param aURL (in) The URL to check for existance
   * @return TRUE if the bookmark exists on the server (according to the local
   *         copy); else FALSE.
   */
  /* boolean exists (in AString aAccountId, in AString aURL); */
  NS_SCRIPTABLE NS_IMETHOD Exists(const nsAString & aAccountId, const nsAString & aURL, PRBool *_retval) = 0;

  /**
   * Look in the local copy to see if a given bookmark is private on the server.
   * No network call is done.
   *
   * @param aAccountId (in) The account id (as the server would understand)
   * @param aURL (in) The URL to check for existance
   * @return TRUE if the bookmark exists on the server (according to the local
   *         copy) and is private.
   *         FALSE if the bookmark is public or doesn't exist on the server.
   */
  /* boolean isPrivate (in AString aAccountId, in AString aURL); */
  NS_SCRIPTABLE NS_IMETHOD IsPrivate(const nsAString & aAccountId, const nsAString & aURL, PRBool *_retval) = 0;

  /**
   * Return the URL of a given user.
   *
   * @param aAccountId (in) The account id, e.g. "flocktest"
   * @return the URL, e.g. "http://del.icio.us/flocktest"
   */
  /* AString getUserURL (in AString aAccountId); */
  NS_SCRIPTABLE NS_IMETHOD GetUserURL(const nsAString & aAccountId, nsAString & _retval) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(flockIBookmarkWebService, FLOCKIBOOKMARKWEBSERVICE_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_FLOCKIBOOKMARKWEBSERVICE \
  NS_SCRIPTABLE NS_IMETHOD Publish(flockIListener *aFlockListener, const nsAString & aAccountId, flockIBookmark *aBookmark); \
  NS_SCRIPTABLE NS_IMETHOD PublishList(flockIListener *aFlockListener, const nsAString & aAccountId, nsISimpleEnumerator *aBookmarkList); \
  NS_SCRIPTABLE NS_IMETHOD Remove(flockIListener *aFlockListener, const nsAString & aAccountId, const nsAString & aBookmark); \
  NS_SCRIPTABLE NS_IMETHOD Exists(const nsAString & aAccountId, const nsAString & aURL, PRBool *_retval); \
  NS_SCRIPTABLE NS_IMETHOD IsPrivate(const nsAString & aAccountId, const nsAString & aURL, PRBool *_retval); \
  NS_SCRIPTABLE NS_IMETHOD GetUserURL(const nsAString & aAccountId, nsAString & _retval); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_FLOCKIBOOKMARKWEBSERVICE(_to) \
  NS_SCRIPTABLE NS_IMETHOD Publish(flockIListener *aFlockListener, const nsAString & aAccountId, flockIBookmark *aBookmark) { return _to Publish(aFlockListener, aAccountId, aBookmark); } \
  NS_SCRIPTABLE NS_IMETHOD PublishList(flockIListener *aFlockListener, const nsAString & aAccountId, nsISimpleEnumerator *aBookmarkList) { return _to PublishList(aFlockListener, aAccountId, aBookmarkList); } \
  NS_SCRIPTABLE NS_IMETHOD Remove(flockIListener *aFlockListener, const nsAString & aAccountId, const nsAString & aBookmark) { return _to Remove(aFlockListener, aAccountId, aBookmark); } \
  NS_SCRIPTABLE NS_IMETHOD Exists(const nsAString & aAccountId, const nsAString & aURL, PRBool *_retval) { return _to Exists(aAccountId, aURL, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD IsPrivate(const nsAString & aAccountId, const nsAString & aURL, PRBool *_retval) { return _to IsPrivate(aAccountId, aURL, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetUserURL(const nsAString & aAccountId, nsAString & _retval) { return _to GetUserURL(aAccountId, _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_FLOCKIBOOKMARKWEBSERVICE(_to) \
  NS_SCRIPTABLE NS_IMETHOD Publish(flockIListener *aFlockListener, const nsAString & aAccountId, flockIBookmark *aBookmark) { return !_to ? NS_ERROR_NULL_POINTER : _to->Publish(aFlockListener, aAccountId, aBookmark); } \
  NS_SCRIPTABLE NS_IMETHOD PublishList(flockIListener *aFlockListener, const nsAString & aAccountId, nsISimpleEnumerator *aBookmarkList) { return !_to ? NS_ERROR_NULL_POINTER : _to->PublishList(aFlockListener, aAccountId, aBookmarkList); } \
  NS_SCRIPTABLE NS_IMETHOD Remove(flockIListener *aFlockListener, const nsAString & aAccountId, const nsAString & aBookmark) { return !_to ? NS_ERROR_NULL_POINTER : _to->Remove(aFlockListener, aAccountId, aBookmark); } \
  NS_SCRIPTABLE NS_IMETHOD Exists(const nsAString & aAccountId, const nsAString & aURL, PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->Exists(aAccountId, aURL, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD IsPrivate(const nsAString & aAccountId, const nsAString & aURL, PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->IsPrivate(aAccountId, aURL, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetUserURL(const nsAString & aAccountId, nsAString & _retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUserURL(aAccountId, _retval); } 

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

/* Header file */
class _MYCLASS_ : public flockIBookmarkWebService
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_FLOCKIBOOKMARKWEBSERVICE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* void publish (in flockIListener aFlockListener, in AString aAccountId, in flockIBookmark aBookmark); */
NS_IMETHODIMP _MYCLASS_::Publish(flockIListener *aFlockListener, const nsAString & aAccountId, flockIBookmark *aBookmark)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void publishList (in flockIListener aFlockListener, in AString aAccountId, in nsISimpleEnumerator aBookmarkList); */
NS_IMETHODIMP _MYCLASS_::PublishList(flockIListener *aFlockListener, const nsAString & aAccountId, nsISimpleEnumerator *aBookmarkList)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void remove (in flockIListener aFlockListener, in AString aAccountId, in AString aBookmark); */
NS_IMETHODIMP _MYCLASS_::Remove(flockIListener *aFlockListener, const nsAString & aAccountId, const nsAString & aBookmark)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean exists (in AString aAccountId, in AString aURL); */
NS_IMETHODIMP _MYCLASS_::Exists(const nsAString & aAccountId, const nsAString & aURL, PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean isPrivate (in AString aAccountId, in AString aURL); */
NS_IMETHODIMP _MYCLASS_::IsPrivate(const nsAString & aAccountId, const nsAString & aURL, PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* AString getUserURL (in AString aAccountId); */
NS_IMETHODIMP _MYCLASS_::GetUserURL(const nsAString & aAccountId, nsAString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    flockIBookmarkAccount */
#define FLOCKIBOOKMARKACCOUNT_IID_STR "abbb287a-79fa-46ea-9e6c-5431165e1f55"

#define FLOCKIBOOKMARKACCOUNT_IID \
  {0xabbb287a, 0x79fa, 0x46ea, \
    { 0x9e, 0x6c, 0x54, 0x31, 0x16, 0x5e, 0x1f, 0x55 }}

/**
 * Represents an account with a bookmark web service.
 *
 * More documentation here:
 * http://developer.flock.com/wiki/Accounts_Management
 *
 * @see flockIBookmarkWebService
 */
class NS_NO_VTABLE NS_SCRIPTABLE flockIBookmarkAccount : public flockIWebServiceAccount {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(FLOCKIBOOKMARKACCOUNT_IID)

};

  NS_DEFINE_STATIC_IID_ACCESSOR(flockIBookmarkAccount, FLOCKIBOOKMARKACCOUNT_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_FLOCKIBOOKMARKACCOUNT \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_FLOCKIBOOKMARKACCOUNT(_to) \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_FLOCKIBOOKMARKACCOUNT(_to) \
  /* no methods! */

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

/* Header file */
class _MYCLASS_ : public flockIBookmarkAccount
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_FLOCKIBOOKMARKACCOUNT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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


#endif /* __gen_flockIBookmarkWebService_h__ */
