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

#ifndef __gen_flockIFacebookAPI_h__
#define __gen_flockIFacebookAPI_h__


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

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

#ifndef __gen_nsIDictionary_h__
#include "nsIDictionary.h"
#endif

#ifndef __gen_flockIError_h__
#include "flockIError.h"
#endif

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

#ifndef __gen_flockIMediaItem_h__
#include "flockIMediaItem.h"
#endif

#ifndef __gen_flockIPhotoUpload_h__
#include "flockIPhotoUpload.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:    flockIFacebookAPI */
#define FLOCKIFACEBOOKAPI_IID_STR "53b077f0-6155-11db-b0de-0800200c9a66"

#define FLOCKIFACEBOOKAPI_IID \
  {0x53b077f0, 0x6155, 0x11db, \
    { 0xb0, 0xde, 0x08, 0x00, 0x20, 0x0c, 0x9a, 0x66 }}

/**
 * A generic JavaScript wrapper for Facebook's api.
 *
 * Reference: http://developers.facebook.com/index.php
 *
 * All api calls except auth.createToken() and auth.getSession() are exposed.
 * These calls are wrapped in the authenticate() method.
 */
class NS_NO_VTABLE flockIFacebookAPI : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(FLOCKIFACEBOOKAPI_IID)

  /* attribute AString uid; */
  NS_IMETHOD GetUid(nsAString & aUid) = 0;
  NS_IMETHOD SetUid(const nsAString & aUid) = 0;

  /* readonly attribute boolean isLoggedIn; */
  NS_IMETHOD GetIsLoggedIn(PRBool *aIsLoggedIn) = 0;

  /**
   * Authenticate with Facebook using the desktop method
   *
   * @li 1) call auth.createToken() to create a shared token
   * @li 2) open a window with Facebook's API authorization page
   * @li 3) call auth.getSession() to get session/secret for subsequent calls.
   *
   * Notes:
   *   Ability to directly call auth.createToken() is not exposed.
   *   Ability to directly call auth.getSession() is not exposed.
   *
   * @param aListener (in) a flockIListener which responds whether the user
   *                       was successful authenticated / session setup
   */
  /* void authenticate (in flockIListener aListener); */
  NS_IMETHOD Authenticate(flockIListener *aListener) = 0;

  /* void deauthenticate (); */
  NS_IMETHOD Deauthenticate(void) = 0;

  /**
   * Get a list of identifiers for friends of the authenticated user
   *
   * @param aListener (in) a flockIListener which responds onSuccess with the
   *                       list of identifers for the user's friends.
   *                       (example identifier: @c iPF_ahrjO4z3fpYh8-ySIMA.. )
   */
  /* void friendsGet (in flockIListener aListener); */
  NS_IMETHOD FriendsGet(flockIListener *aListener) = 0;

  /**
   * Get a list containing all notifications of the currently logged in user
   *
   * @param aListener (in) a flockIListener which responds onSuccess with the
   *                       notifications list
   */
  /* void notificationsGet (in flockIListener aListener); */
  NS_IMETHOD NotificationsGet(flockIListener *aListener) = 0;

  /**
   * Get a list of pending friends request
   */
  /* void requestsGet (in flockIListener aListener); */
  NS_IMETHOD RequestsGet(flockIListener *aListener) = 0;

  /**
   * Get a struct of messages count data
   */
  /* void messagesCount (in flockIListener aListener); */
  NS_IMETHOD MessagesCount(flockIListener *aListener) = 0;

  /**
   * Check if the session is still valid
   *
   * @param aListener (in) a flockIListener which responds onSuccess if
   *                       session is still valid, or onError if the session
   *                       is not or there were other problems.
   */
  /* void sessionPing (in flockIListener aListener); */
  NS_IMETHOD SessionPing(flockIListener *aListener) = 0;

  /**
   * Get information for a list of users (specified by identifiers)
   *
   * @param aListener (in) a flockIListener which responds onSuccess with a
   *                       wrappedJS object. The object correspond to the
   *                       JSON response from Facebook.
   *                       see: http://developer.facebook.com/documentation.php
   * 
   * @param users (in) a comma seperated list of users for which to retrieve
   *                   info.
   *
   * @param fields (in) an optional comma seperated list of fields requested
   *                    from the service (ex: @c 'clubs,books,birthday' ).
   *                    If not specified the query will be for a (flock)
   *                    default set of fields.
   */
  /* void usersGetInfo (in flockIListener aListener, in AString users, in AString fields); */
  NS_IMETHOD UsersGetInfo(flockIListener *aListener, const nsAString & users, const nsAString & fields) = 0;

  /**
   * Get the list of users, friends of the current authenticated user,
   * who uploaded at least one photo since aLastSeen
   *
   * @param aListener (in) a flockIListener which responds onSuccess with a
   *                       nsISimpleEnumerator of property bags. Each property
   *                       bag contains:
   *                       AString uid: the user id on Facebook
   *                       Int32 count: the number of photos uploaded
   *                       since aLastSeen
   *
   *
   * @param aLastSeen (in) the date from which we want to observe updates,
   *                       as a string containing the number of seconds
   *                       since Epoch.
   *
   */
  /* void getUpdatedMediaFriends (in flockIListener aListener, in string aLastSeen); */
  NS_IMETHOD GetUpdatedMediaFriends(flockIListener *aListener, const char *aLastSeen) = 0;

  /* void eventsGetInWindow (); */
  NS_IMETHOD EventsGetInWindow(void) = 0;

  /* void friendsGetAppUsers (); */
  NS_IMETHOD FriendsGetAppUsers(void) = 0;

  /* void friendsGetTyped (); */
  NS_IMETHOD FriendsGetTyped(void) = 0;

  /* void friendsAreFriends (); */
  NS_IMETHOD FriendsAreFriends(void) = 0;

  /* void messagesGetCount (); */
  NS_IMETHOD MessagesGetCount(void) = 0;

  /* void photosGetAlbums (); */
  NS_IMETHOD PhotosGetAlbums(void) = 0;

  /* void photosGetCommentCount (); */
  NS_IMETHOD PhotosGetCommentCount(void) = 0;

  /* void photosGetFromAlbum (); */
  NS_IMETHOD PhotosGetFromAlbum(void) = 0;

  /* void photosGetOfUser (); */
  NS_IMETHOD PhotosGetOfUser(void) = 0;

  /* void pokesGetCount (); */
  NS_IMETHOD PokesGetCount(void) = 0;

  /* string getFacebookURL (in string aUrlType, in string aFriendId); */
  NS_IMETHOD GetFacebookURL(const char *aUrlType, const char *aFriendId, char **_retval) = 0;

  /**
   * Get a list of albums for a desired user
   *
   * @param aListener (in) A flockIListener which responds
   *                       flickIListener#onSuccess() with an enumerator of
   *                       flockIPhotoAlbum.
   * @param aUserId (in) A user id to get albums for.
   */
  /* void getAlbums (in flockIListener aListener, in AString aUserId); */
  NS_IMETHOD GetAlbums(flockIListener *aListener, const nsAString & aUserId) = 0;

  /**
   * Create an album for this user
   *
   * @param aListener (in) A flockIListener which responds
   *                       flockIListener#onSuccess() with with the album that
   *                       was created.
   * @param aAlbumTitle (in) The title of the new album to create.
   */
  /* void createAlbum (in flockIListener aListener, in AString aAlbumTitle); */
  NS_IMETHOD CreateAlbum(flockIListener *aListener, const nsAString & aAlbumTitle) = 0;

  /**
   * Get a list of photos, optionally from a particular album
   *
   * @param aListener (in) A flockIListener which responds
   *                       flockIListener#onSuccess() with an enumerator of
   *                       flockIPhotoAlbum.
   * @param aSubj (in) [optional] Return only photos tagged with this user's
   *                              user id.
   * @param aAlbumID (in) [optional] Return photos only from this album.
   * @param aPidList (in) [optional] Only return photos form this comma
   *                                 seperated list.
   *
   * Note: if aSubj is set then only photos tagged with the user id will
   *       be returned as a subset of the other to params.
   */
  /* void getPhotos (in flockIListener aListener, in AString aSubj, in AString aAlbumID, in AString aPidList); */
  NS_IMETHOD GetPhotos(flockIListener *aListener, const nsAString & aSubj, const nsAString & aAlbumID, const nsAString & aPidList) = 0;

  /**
   * Upload photos to Facebook from the Flock Photo Uploader.
   *
   * @param aListener (in) A flockIPhotoUploadAPIListener which responds
   *                       flockIPhotoUploadAPIListener#onResult() with the
   *                       XML response.
   * @param aPhoto (in) An AString containing the full filename of the photo
   *                    to upload.
   * @param aParams (in) An nsIPropertyBag2 containing paramaters to pass to
   *                     flockIPhotoAPI#upload2.
   * @param aUpload (in) A flockIPhotoUpload.
   */
  /* void uploadPhotosViaUploader (in flockIPhotoUploadAPIListener aListener, in AString aPhoto, in nsIPropertyBag2 aParams, in flockIPhotoUpload aUpload); */
  NS_IMETHOD UploadPhotosViaUploader(flockIPhotoUploadAPIListener *aListener, const nsAString & aPhoto, nsIPropertyBag2 *aParams, flockIPhotoUpload *aUpload) = 0;

  /**
   * Tag photos in Facebook
   * @param aListener (in) A flockIListener which responds...
   * @param aPid (in) An AString containing the id of the photo to be tagged.
   * @param aTagUid (in) An AString containing the user id of the user being
   *                     tagged. Either aTagUid or aTagText must be
   *                     specified.
   * @param aTagText (in) An AString containing some text identifying the
   *                      person being tagged. Either aTagUid or aTagText
   *                      must be specified. This parameter is ignored if
   *                      aTagUid is specified.
   * @param aX (in) An AString containing the horizontal position of the tag,
   *                as a percentage from 0 to 100 from the left of the photo.
   * @param aY (in) An AString containing the vertical position of the tag,
   *                as a percentage from 0 to 100 from the top of the photo.
   * @param aTags (in) An AString containing a JSON-serialized array
   *                   representing a list of tags to be added to the photo.
   *                   If the aTags parameter is specified, the aX, aY,
   *                   aTagUid, and aTagText parameters are ignored. Each
   *                   tag in the list must specify: "x", "y", and either
   *                   the user id "uid" or free-form "text"
   *                   identifying the person being tagged. An example of
   *                   this is the string:
   *                     [ {"x":"30.0","y":"30.0","uid":1234567890},
   *                       {"x":"70.0","y":"70.0","text":"some person"} ]
   */
  /* void addTag (in flockIListener aListener, in AString aPid, in AString aTagUid, in AString aTagText, in AString aX, in AString aY, in AString aTags); */
  NS_IMETHOD AddTag(flockIListener *aListener, const nsAString & aPid, const nsAString & aTagUid, const nsAString & aTagText, const nsAString & aX, const nsAString & aY, const nsAString & aTags) = 0;

  /**
   * Set the status of the current user.
   *
   * @param aListener (in) A flockIListener which responds... (may be null)
   * @param aFQLQuery (in) An AString containing the new status text.
   *                       Leave blank to clear the status.
   */
  /* void setStatus (in flockIListener aListener, in AString aNewStatus); */
  NS_IMETHOD SetStatus(flockIListener *aListener, const nsAString & aNewStatus) = 0;

  /**
   * Perform a FQL query.
   *
   * @param aListener (in) A flockIListener which responds
   *                       flockIListener#onSuccess() with the XML response.
   * @param aFQLQuery (in) An AString containing the FQL query to perform.
   */
  /* void doFQLQuery (in flockIListener aListener, in AString aFQLQuery); */
  NS_IMETHOD DoFQLQuery(flockIListener *aListener, const nsAString & aFQLQuery) = 0;

  /**
   * Create a facebookPhoto ojbect
   */
  /* flockIMediaItem createPhoto (); */
  NS_IMETHOD CreatePhoto(flockIMediaItem **_retval) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_FLOCKIFACEBOOKAPI \
  NS_IMETHOD GetUid(nsAString & aUid); \
  NS_IMETHOD SetUid(const nsAString & aUid); \
  NS_IMETHOD GetIsLoggedIn(PRBool *aIsLoggedIn); \
  NS_IMETHOD Authenticate(flockIListener *aListener); \
  NS_IMETHOD Deauthenticate(void); \
  NS_IMETHOD FriendsGet(flockIListener *aListener); \
  NS_IMETHOD NotificationsGet(flockIListener *aListener); \
  NS_IMETHOD RequestsGet(flockIListener *aListener); \
  NS_IMETHOD MessagesCount(flockIListener *aListener); \
  NS_IMETHOD SessionPing(flockIListener *aListener); \
  NS_IMETHOD UsersGetInfo(flockIListener *aListener, const nsAString & users, const nsAString & fields); \
  NS_IMETHOD GetUpdatedMediaFriends(flockIListener *aListener, const char *aLastSeen); \
  NS_IMETHOD EventsGetInWindow(void); \
  NS_IMETHOD FriendsGetAppUsers(void); \
  NS_IMETHOD FriendsGetTyped(void); \
  NS_IMETHOD FriendsAreFriends(void); \
  NS_IMETHOD MessagesGetCount(void); \
  NS_IMETHOD PhotosGetAlbums(void); \
  NS_IMETHOD PhotosGetCommentCount(void); \
  NS_IMETHOD PhotosGetFromAlbum(void); \
  NS_IMETHOD PhotosGetOfUser(void); \
  NS_IMETHOD PokesGetCount(void); \
  NS_IMETHOD GetFacebookURL(const char *aUrlType, const char *aFriendId, char **_retval); \
  NS_IMETHOD GetAlbums(flockIListener *aListener, const nsAString & aUserId); \
  NS_IMETHOD CreateAlbum(flockIListener *aListener, const nsAString & aAlbumTitle); \
  NS_IMETHOD GetPhotos(flockIListener *aListener, const nsAString & aSubj, const nsAString & aAlbumID, const nsAString & aPidList); \
  NS_IMETHOD UploadPhotosViaUploader(flockIPhotoUploadAPIListener *aListener, const nsAString & aPhoto, nsIPropertyBag2 *aParams, flockIPhotoUpload *aUpload); \
  NS_IMETHOD AddTag(flockIListener *aListener, const nsAString & aPid, const nsAString & aTagUid, const nsAString & aTagText, const nsAString & aX, const nsAString & aY, const nsAString & aTags); \
  NS_IMETHOD SetStatus(flockIListener *aListener, const nsAString & aNewStatus); \
  NS_IMETHOD DoFQLQuery(flockIListener *aListener, const nsAString & aFQLQuery); \
  NS_IMETHOD CreatePhoto(flockIMediaItem **_retval); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_FLOCKIFACEBOOKAPI(_to) \
  NS_IMETHOD GetUid(nsAString & aUid) { return _to GetUid(aUid); } \
  NS_IMETHOD SetUid(const nsAString & aUid) { return _to SetUid(aUid); } \
  NS_IMETHOD GetIsLoggedIn(PRBool *aIsLoggedIn) { return _to GetIsLoggedIn(aIsLoggedIn); } \
  NS_IMETHOD Authenticate(flockIListener *aListener) { return _to Authenticate(aListener); } \
  NS_IMETHOD Deauthenticate(void) { return _to Deauthenticate(); } \
  NS_IMETHOD FriendsGet(flockIListener *aListener) { return _to FriendsGet(aListener); } \
  NS_IMETHOD NotificationsGet(flockIListener *aListener) { return _to NotificationsGet(aListener); } \
  NS_IMETHOD RequestsGet(flockIListener *aListener) { return _to RequestsGet(aListener); } \
  NS_IMETHOD MessagesCount(flockIListener *aListener) { return _to MessagesCount(aListener); } \
  NS_IMETHOD SessionPing(flockIListener *aListener) { return _to SessionPing(aListener); } \
  NS_IMETHOD UsersGetInfo(flockIListener *aListener, const nsAString & users, const nsAString & fields) { return _to UsersGetInfo(aListener, users, fields); } \
  NS_IMETHOD GetUpdatedMediaFriends(flockIListener *aListener, const char *aLastSeen) { return _to GetUpdatedMediaFriends(aListener, aLastSeen); } \
  NS_IMETHOD EventsGetInWindow(void) { return _to EventsGetInWindow(); } \
  NS_IMETHOD FriendsGetAppUsers(void) { return _to FriendsGetAppUsers(); } \
  NS_IMETHOD FriendsGetTyped(void) { return _to FriendsGetTyped(); } \
  NS_IMETHOD FriendsAreFriends(void) { return _to FriendsAreFriends(); } \
  NS_IMETHOD MessagesGetCount(void) { return _to MessagesGetCount(); } \
  NS_IMETHOD PhotosGetAlbums(void) { return _to PhotosGetAlbums(); } \
  NS_IMETHOD PhotosGetCommentCount(void) { return _to PhotosGetCommentCount(); } \
  NS_IMETHOD PhotosGetFromAlbum(void) { return _to PhotosGetFromAlbum(); } \
  NS_IMETHOD PhotosGetOfUser(void) { return _to PhotosGetOfUser(); } \
  NS_IMETHOD PokesGetCount(void) { return _to PokesGetCount(); } \
  NS_IMETHOD GetFacebookURL(const char *aUrlType, const char *aFriendId, char **_retval) { return _to GetFacebookURL(aUrlType, aFriendId, _retval); } \
  NS_IMETHOD GetAlbums(flockIListener *aListener, const nsAString & aUserId) { return _to GetAlbums(aListener, aUserId); } \
  NS_IMETHOD CreateAlbum(flockIListener *aListener, const nsAString & aAlbumTitle) { return _to CreateAlbum(aListener, aAlbumTitle); } \
  NS_IMETHOD GetPhotos(flockIListener *aListener, const nsAString & aSubj, const nsAString & aAlbumID, const nsAString & aPidList) { return _to GetPhotos(aListener, aSubj, aAlbumID, aPidList); } \
  NS_IMETHOD UploadPhotosViaUploader(flockIPhotoUploadAPIListener *aListener, const nsAString & aPhoto, nsIPropertyBag2 *aParams, flockIPhotoUpload *aUpload) { return _to UploadPhotosViaUploader(aListener, aPhoto, aParams, aUpload); } \
  NS_IMETHOD AddTag(flockIListener *aListener, const nsAString & aPid, const nsAString & aTagUid, const nsAString & aTagText, const nsAString & aX, const nsAString & aY, const nsAString & aTags) { return _to AddTag(aListener, aPid, aTagUid, aTagText, aX, aY, aTags); } \
  NS_IMETHOD SetStatus(flockIListener *aListener, const nsAString & aNewStatus) { return _to SetStatus(aListener, aNewStatus); } \
  NS_IMETHOD DoFQLQuery(flockIListener *aListener, const nsAString & aFQLQuery) { return _to DoFQLQuery(aListener, aFQLQuery); } \
  NS_IMETHOD CreatePhoto(flockIMediaItem **_retval) { return _to CreatePhoto(_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_FLOCKIFACEBOOKAPI(_to) \
  NS_IMETHOD GetUid(nsAString & aUid) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUid(aUid); } \
  NS_IMETHOD SetUid(const nsAString & aUid) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetUid(aUid); } \
  NS_IMETHOD GetIsLoggedIn(PRBool *aIsLoggedIn) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIsLoggedIn(aIsLoggedIn); } \
  NS_IMETHOD Authenticate(flockIListener *aListener) { return !_to ? NS_ERROR_NULL_POINTER : _to->Authenticate(aListener); } \
  NS_IMETHOD Deauthenticate(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Deauthenticate(); } \
  NS_IMETHOD FriendsGet(flockIListener *aListener) { return !_to ? NS_ERROR_NULL_POINTER : _to->FriendsGet(aListener); } \
  NS_IMETHOD NotificationsGet(flockIListener *aListener) { return !_to ? NS_ERROR_NULL_POINTER : _to->NotificationsGet(aListener); } \
  NS_IMETHOD RequestsGet(flockIListener *aListener) { return !_to ? NS_ERROR_NULL_POINTER : _to->RequestsGet(aListener); } \
  NS_IMETHOD MessagesCount(flockIListener *aListener) { return !_to ? NS_ERROR_NULL_POINTER : _to->MessagesCount(aListener); } \
  NS_IMETHOD SessionPing(flockIListener *aListener) { return !_to ? NS_ERROR_NULL_POINTER : _to->SessionPing(aListener); } \
  NS_IMETHOD UsersGetInfo(flockIListener *aListener, const nsAString & users, const nsAString & fields) { return !_to ? NS_ERROR_NULL_POINTER : _to->UsersGetInfo(aListener, users, fields); } \
  NS_IMETHOD GetUpdatedMediaFriends(flockIListener *aListener, const char *aLastSeen) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUpdatedMediaFriends(aListener, aLastSeen); } \
  NS_IMETHOD EventsGetInWindow(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->EventsGetInWindow(); } \
  NS_IMETHOD FriendsGetAppUsers(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->FriendsGetAppUsers(); } \
  NS_IMETHOD FriendsGetTyped(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->FriendsGetTyped(); } \
  NS_IMETHOD FriendsAreFriends(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->FriendsAreFriends(); } \
  NS_IMETHOD MessagesGetCount(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->MessagesGetCount(); } \
  NS_IMETHOD PhotosGetAlbums(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->PhotosGetAlbums(); } \
  NS_IMETHOD PhotosGetCommentCount(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->PhotosGetCommentCount(); } \
  NS_IMETHOD PhotosGetFromAlbum(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->PhotosGetFromAlbum(); } \
  NS_IMETHOD PhotosGetOfUser(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->PhotosGetOfUser(); } \
  NS_IMETHOD PokesGetCount(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->PokesGetCount(); } \
  NS_IMETHOD GetFacebookURL(const char *aUrlType, const char *aFriendId, char **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFacebookURL(aUrlType, aFriendId, _retval); } \
  NS_IMETHOD GetAlbums(flockIListener *aListener, const nsAString & aUserId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAlbums(aListener, aUserId); } \
  NS_IMETHOD CreateAlbum(flockIListener *aListener, const nsAString & aAlbumTitle) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateAlbum(aListener, aAlbumTitle); } \
  NS_IMETHOD GetPhotos(flockIListener *aListener, const nsAString & aSubj, const nsAString & aAlbumID, const nsAString & aPidList) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPhotos(aListener, aSubj, aAlbumID, aPidList); } \
  NS_IMETHOD UploadPhotosViaUploader(flockIPhotoUploadAPIListener *aListener, const nsAString & aPhoto, nsIPropertyBag2 *aParams, flockIPhotoUpload *aUpload) { return !_to ? NS_ERROR_NULL_POINTER : _to->UploadPhotosViaUploader(aListener, aPhoto, aParams, aUpload); } \
  NS_IMETHOD AddTag(flockIListener *aListener, const nsAString & aPid, const nsAString & aTagUid, const nsAString & aTagText, const nsAString & aX, const nsAString & aY, const nsAString & aTags) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddTag(aListener, aPid, aTagUid, aTagText, aX, aY, aTags); } \
  NS_IMETHOD SetStatus(flockIListener *aListener, const nsAString & aNewStatus) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetStatus(aListener, aNewStatus); } \
  NS_IMETHOD DoFQLQuery(flockIListener *aListener, const nsAString & aFQLQuery) { return !_to ? NS_ERROR_NULL_POINTER : _to->DoFQLQuery(aListener, aFQLQuery); } \
  NS_IMETHOD CreatePhoto(flockIMediaItem **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreatePhoto(_retval); } 

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

/* Header file */
class _MYCLASS_ : public flockIFacebookAPI
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_FLOCKIFACEBOOKAPI

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* attribute AString uid; */
NS_IMETHODIMP _MYCLASS_::GetUid(nsAString & aUid)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetUid(const nsAString & aUid)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean isLoggedIn; */
NS_IMETHODIMP _MYCLASS_::GetIsLoggedIn(PRBool *aIsLoggedIn)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* void deauthenticate (); */
NS_IMETHODIMP _MYCLASS_::Deauthenticate()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

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

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

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

/* void usersGetInfo (in flockIListener aListener, in AString users, in AString fields); */
NS_IMETHODIMP _MYCLASS_::UsersGetInfo(flockIListener *aListener, const nsAString & users, const nsAString & fields)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getUpdatedMediaFriends (in flockIListener aListener, in string aLastSeen); */
NS_IMETHODIMP _MYCLASS_::GetUpdatedMediaFriends(flockIListener *aListener, const char *aLastSeen)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void eventsGetInWindow (); */
NS_IMETHODIMP _MYCLASS_::EventsGetInWindow()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void friendsGetAppUsers (); */
NS_IMETHODIMP _MYCLASS_::FriendsGetAppUsers()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void friendsGetTyped (); */
NS_IMETHODIMP _MYCLASS_::FriendsGetTyped()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void friendsAreFriends (); */
NS_IMETHODIMP _MYCLASS_::FriendsAreFriends()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void messagesGetCount (); */
NS_IMETHODIMP _MYCLASS_::MessagesGetCount()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void photosGetAlbums (); */
NS_IMETHODIMP _MYCLASS_::PhotosGetAlbums()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void photosGetCommentCount (); */
NS_IMETHODIMP _MYCLASS_::PhotosGetCommentCount()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void photosGetFromAlbum (); */
NS_IMETHODIMP _MYCLASS_::PhotosGetFromAlbum()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void photosGetOfUser (); */
NS_IMETHODIMP _MYCLASS_::PhotosGetOfUser()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void pokesGetCount (); */
NS_IMETHODIMP _MYCLASS_::PokesGetCount()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* string getFacebookURL (in string aUrlType, in string aFriendId); */
NS_IMETHODIMP _MYCLASS_::GetFacebookURL(const char *aUrlType, const char *aFriendId, char **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getAlbums (in flockIListener aListener, in AString aUserId); */
NS_IMETHODIMP _MYCLASS_::GetAlbums(flockIListener *aListener, const nsAString & aUserId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createAlbum (in flockIListener aListener, in AString aAlbumTitle); */
NS_IMETHODIMP _MYCLASS_::CreateAlbum(flockIListener *aListener, const nsAString & aAlbumTitle)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getPhotos (in flockIListener aListener, in AString aSubj, in AString aAlbumID, in AString aPidList); */
NS_IMETHODIMP _MYCLASS_::GetPhotos(flockIListener *aListener, const nsAString & aSubj, const nsAString & aAlbumID, const nsAString & aPidList)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void uploadPhotosViaUploader (in flockIPhotoUploadAPIListener aListener, in AString aPhoto, in nsIPropertyBag2 aParams, in flockIPhotoUpload aUpload); */
NS_IMETHODIMP _MYCLASS_::UploadPhotosViaUploader(flockIPhotoUploadAPIListener *aListener, const nsAString & aPhoto, nsIPropertyBag2 *aParams, flockIPhotoUpload *aUpload)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addTag (in flockIListener aListener, in AString aPid, in AString aTagUid, in AString aTagText, in AString aX, in AString aY, in AString aTags); */
NS_IMETHODIMP _MYCLASS_::AddTag(flockIListener *aListener, const nsAString & aPid, const nsAString & aTagUid, const nsAString & aTagText, const nsAString & aX, const nsAString & aY, const nsAString & aTags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setStatus (in flockIListener aListener, in AString aNewStatus); */
NS_IMETHODIMP _MYCLASS_::SetStatus(flockIListener *aListener, const nsAString & aNewStatus)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void doFQLQuery (in flockIListener aListener, in AString aFQLQuery); */
NS_IMETHODIMP _MYCLASS_::DoFQLQuery(flockIListener *aListener, const nsAString & aFQLQuery)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* flockIMediaItem createPhoto (); */
NS_IMETHODIMP _MYCLASS_::CreatePhoto(flockIMediaItem **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_flockIFacebookAPI_h__ */
