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

#ifndef __gen_flockIManageableWebService_h__
#include "flockIManageableWebService.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 "7bbd95a7-0656-464c-8560-73a21bd00be3"

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

class NS_NO_VTABLE flockIBookmark : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(FLOCKIBOOKMARK_IID)

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

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

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

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

  /* attribute AString time; */
  NS_IMETHOD GetTime(nsAString & aTime) = 0;
  NS_IMETHOD SetTime(const nsAString & aTime) = 0;

};

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

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

/* 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_IMETHOD GetURL(char * *aURL) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetURL(aURL); } \
  NS_IMETHOD SetURL(const char * aURL) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetURL(aURL); } \
  NS_IMETHOD GetName(nsAString & aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD SetName(const nsAString & aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetName(aName); } \
  NS_IMETHOD GetDescription(nsAString & aDescription) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDescription(aDescription); } \
  NS_IMETHOD SetDescription(const nsAString & aDescription) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDescription(aDescription); } \
  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); } \
  NS_IMETHOD GetTime(nsAString & aTime) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTime(aTime); } \
  NS_IMETHOD SetTime(const nsAString & aTime) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTime(aTime); } 

#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 AString time; */
NS_IMETHODIMP _MYCLASS_::GetTime(nsAString & aTime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetTime(const nsAString & aTime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    flockIBookmarkWebService */
#define FLOCKIBOOKMARKWEBSERVICE_IID_STR "5ece2d74-4b7f-47e6-a319-f401909dac43"

#define FLOCKIBOOKMARKWEBSERVICE_IID \
  {0x5ece2d74, 0x4b7f, 0x47e6, \
    { 0xa3, 0x19, 0xf4, 0x01, 0x90, 0x9d, 0xac, 0x43 }}

/**
 * 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 flockIBookmarkWebServiceAccount.
 *
 * 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
 * flockIManageableWebService interface.
 *
 * More documentation here:
 * http://wiki.flock.com/index.php?title=Danphe:AccountsAndServices
 *
 * @see flockIBookmarkWebServiceAccount
 * @see flockIWebServiceManager
 * @see flockIMangeableWebService
 */
class NS_NO_VTABLE flockIBookmarkWebService : public flockIManageableWebService {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(FLOCKIBOOKMARKWEBSERVICE_IID)

  /**
   * Posts one bookmark to the server
   * @param aListener (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
   * @param aPrivate (in) true if private, false if public
   * @return nothing
   */
  /* void publish (in flockIListener aListener, in AString aAccountId, in flockIBookmark aBookmark, in boolean aPrivate); */
  NS_IMETHOD Publish(flockIListener *aListener, const nsAString & aAccountId, flockIBookmark *aBookmark, PRBool aPrivate) = 0;

  /**
   * Posts several bookmarks to the server
   * @param aListener (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
   * @param aPrivate (in) true if private, false if public
   * @return nothing
   */
  /* void publishList (in flockIListener aListener, in AString aAccountId, in nsISimpleEnumerator aBookmarkList, in boolean aPrivate); */
  NS_IMETHOD PublishList(flockIListener *aListener, const nsAString & aAccountId, nsISimpleEnumerator *aBookmarkList, PRBool aPrivate) = 0;

  /**
   * Remove a bookmark from the server
   * @param aListener (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
   * @return nothing
   */
  /* void remove (in flockIListener aListener, in AString aAccountId, in AString aBookmark); */
  NS_IMETHOD Remove(flockIListener *aListener, 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), false otherwise
   */
  /* boolean exists (in AString aAccountId, in AString aURL); */
  NS_IMETHOD Exists(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_IMETHOD GetUserURL(const nsAString & aAccountId, nsAString & _retval) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_FLOCKIBOOKMARKWEBSERVICE \
  NS_IMETHOD Publish(flockIListener *aListener, const nsAString & aAccountId, flockIBookmark *aBookmark, PRBool aPrivate); \
  NS_IMETHOD PublishList(flockIListener *aListener, const nsAString & aAccountId, nsISimpleEnumerator *aBookmarkList, PRBool aPrivate); \
  NS_IMETHOD Remove(flockIListener *aListener, const nsAString & aAccountId, const nsAString & aBookmark); \
  NS_IMETHOD Exists(const nsAString & aAccountId, const nsAString & aURL, PRBool *_retval); \
  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_IMETHOD Publish(flockIListener *aListener, const nsAString & aAccountId, flockIBookmark *aBookmark, PRBool aPrivate) { return _to Publish(aListener, aAccountId, aBookmark, aPrivate); } \
  NS_IMETHOD PublishList(flockIListener *aListener, const nsAString & aAccountId, nsISimpleEnumerator *aBookmarkList, PRBool aPrivate) { return _to PublishList(aListener, aAccountId, aBookmarkList, aPrivate); } \
  NS_IMETHOD Remove(flockIListener *aListener, const nsAString & aAccountId, const nsAString & aBookmark) { return _to Remove(aListener, aAccountId, aBookmark); } \
  NS_IMETHOD Exists(const nsAString & aAccountId, const nsAString & aURL, PRBool *_retval) { return _to Exists(aAccountId, aURL, _retval); } \
  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_IMETHOD Publish(flockIListener *aListener, const nsAString & aAccountId, flockIBookmark *aBookmark, PRBool aPrivate) { return !_to ? NS_ERROR_NULL_POINTER : _to->Publish(aListener, aAccountId, aBookmark, aPrivate); } \
  NS_IMETHOD PublishList(flockIListener *aListener, const nsAString & aAccountId, nsISimpleEnumerator *aBookmarkList, PRBool aPrivate) { return !_to ? NS_ERROR_NULL_POINTER : _to->PublishList(aListener, aAccountId, aBookmarkList, aPrivate); } \
  NS_IMETHOD Remove(flockIListener *aListener, const nsAString & aAccountId, const nsAString & aBookmark) { return !_to ? NS_ERROR_NULL_POINTER : _to->Remove(aListener, aAccountId, aBookmark); } \
  NS_IMETHOD Exists(const nsAString & aAccountId, const nsAString & aURL, PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->Exists(aAccountId, aURL, _retval); } \
  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 aListener, in AString aAccountId, in flockIBookmark aBookmark, in boolean aPrivate); */
NS_IMETHODIMP _MYCLASS_::Publish(flockIListener *aListener, const nsAString & aAccountId, flockIBookmark *aBookmark, PRBool aPrivate)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* void remove (in flockIListener aListener, in AString aAccountId, in AString aBookmark); */
NS_IMETHODIMP _MYCLASS_::Remove(flockIListener *aListener, 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;
}

/* 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:    flockIBookmarkWebServiceAccount */
#define FLOCKIBOOKMARKWEBSERVICEACCOUNT_IID_STR "7f0738c0-5b07-11db-b0de-0800200c9a66"

#define FLOCKIBOOKMARKWEBSERVICEACCOUNT_IID \
  {0x7f0738c0, 0x5b07, 0x11db, \
    { 0xb0, 0xde, 0x08, 0x00, 0x20, 0x0c, 0x9a, 0x66 }}

/**
 * Represents an account with a bookmark web service.
 *
 * More documentation here:
 * http://wiki.flock.com/index.php?title=Danphe:AccountsAndServices
 *
 * @see flockIBookmarkWebService
 */
class NS_NO_VTABLE flockIBookmarkWebServiceAccount : public flockIWebServiceAccount {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(FLOCKIBOOKMARKWEBSERVICEACCOUNT_IID)

};

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

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_FLOCKIBOOKMARKWEBSERVICEACCOUNT(_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_FLOCKIBOOKMARKWEBSERVICEACCOUNT(_to) \
  /* no methods! */

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

/* Header file */
class _MYCLASS_ : public flockIBookmarkWebServiceAccount
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_FLOCKIBOOKMARKWEBSERVICEACCOUNT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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


#endif /* __gen_flockIBookmarkWebService_h__ */
