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

#ifndef __gen_nsIFolder_h__
#define __gen_nsIFolder_h__


#ifndef __gen_nsICollection_h__
#include "nsICollection.h"
#endif

#ifndef __gen_nsIFolderListener_h__
#include "nsIFolderListener.h"
#endif

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


/* starting interface:    nsIFolder */
#define NS_IFOLDER_IID_STR "75621650-0fce-11d3-8b49-006008948010"

#define NS_IFOLDER_IID \
  {0x75621650, 0x0fce, 0x11d3, \
    { 0x8b, 0x49, 0x00, 0x60, 0x08, 0x94, 0x80, 0x10 }}

class NS_NO_VTABLE nsIFolder : public nsICollection {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IFOLDER_IID)

  /* readonly attribute string URI; */
  NS_IMETHOD GetURI(char * *aURI) = 0;

  /* attribute wstring name; */
  NS_IMETHOD GetName(PRUnichar * *aName) = 0;
  NS_IMETHOD SetName(const PRUnichar * aName) = 0;

  /* attribute wstring prettyName; */
  NS_IMETHOD GetPrettyName(PRUnichar * *aPrettyName) = 0;
  NS_IMETHOD SetPrettyName(const PRUnichar * aPrettyName) = 0;

  /* readonly attribute wstring abbreviatedName; */
  NS_IMETHOD GetAbbreviatedName(PRUnichar * *aAbbreviatedName) = 0;

  /* nsISupports getChildNamed (in wstring name); */
  NS_IMETHOD GetChildNamed(const PRUnichar *name, nsISupports **_retval) = 0;

  /* attribute nsIFolder parent; */
  NS_IMETHOD GetParent(nsIFolder * *aParent) = 0;
  NS_IMETHOD SetParent(nsIFolder * aParent) = 0;

  /* nsIEnumerator GetSubFolders (); */
  NS_IMETHOD GetSubFolders(nsIEnumerator **_retval) = 0;

  /* readonly attribute boolean hasSubFolders; */
  NS_IMETHOD GetHasSubFolders(PRBool *aHasSubFolders) = 0;

  /* void AddFolderListener (in nsIFolderListener listener); */
  NS_IMETHOD AddFolderListener(nsIFolderListener *listener) = 0;

  /* void RemoveFolderListener (in nsIFolderListener listener); */
  NS_IMETHOD RemoveFolderListener(nsIFolderListener *listener) = 0;

  /* nsIFolder FindSubFolder (in string subFolderName); */
  NS_IMETHOD FindSubFolder(const char *subFolderName, nsIFolder **_retval) = 0;

  /* void NotifyPropertyChanged (in nsIAtom property, in string oldValue, in string newValue); */
  NS_IMETHOD NotifyPropertyChanged(nsIAtom *property, const char *oldValue, const char *newValue) = 0;

  /* void NotifyIntPropertyChanged (in nsIAtom property, in long oldValue, in long newValue); */
  NS_IMETHOD NotifyIntPropertyChanged(nsIAtom *property, PRInt32 oldValue, PRInt32 newValue) = 0;

  /* void NotifyBoolPropertyChanged (in nsIAtom property, in boolean oldValue, in boolean newValue); */
  NS_IMETHOD NotifyBoolPropertyChanged(nsIAtom *property, PRBool oldValue, PRBool newValue) = 0;

  /* void NotifyPropertyFlagChanged (in nsISupports item, in nsIAtom property, in unsigned long oldValue, in unsigned long newValue); */
  NS_IMETHOD NotifyPropertyFlagChanged(nsISupports *item, nsIAtom *property, PRUint32 oldValue, PRUint32 newValue) = 0;

  /* void NotifyUnicharPropertyChanged (in nsIAtom property, in wstring oldValue, in wstring newValue); */
  NS_IMETHOD NotifyUnicharPropertyChanged(nsIAtom *property, const PRUnichar *oldValue, const PRUnichar *newValue) = 0;

  /* void NotifyItemAdded (in nsISupports parentItem, in nsISupports item, in string viewString); */
  NS_IMETHOD NotifyItemAdded(nsISupports *parentItem, nsISupports *item, const char *viewString) = 0;

  /* void NotifyItemDeleted (in nsISupports parentItem, in nsISupports item, in string viewString); */
  NS_IMETHOD NotifyItemDeleted(nsISupports *parentItem, nsISupports *item, const char *viewString) = 0;

  /* void NotifyFolderEvent (in nsIAtom event); */
  NS_IMETHOD NotifyFolderEvent(nsIAtom *event) = 0;

  /* void ListDescendents (in nsISupportsArray descendents); */
  NS_IMETHOD ListDescendents(nsISupportsArray *descendents) = 0;

  /* void Shutdown (in boolean shutdownChildren); */
  NS_IMETHOD Shutdown(PRBool shutdownChildren) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIFOLDER \
  NS_IMETHOD GetURI(char * *aURI); \
  NS_IMETHOD GetName(PRUnichar * *aName); \
  NS_IMETHOD SetName(const PRUnichar * aName); \
  NS_IMETHOD GetPrettyName(PRUnichar * *aPrettyName); \
  NS_IMETHOD SetPrettyName(const PRUnichar * aPrettyName); \
  NS_IMETHOD GetAbbreviatedName(PRUnichar * *aAbbreviatedName); \
  NS_IMETHOD GetChildNamed(const PRUnichar *name, nsISupports **_retval); \
  NS_IMETHOD GetParent(nsIFolder * *aParent); \
  NS_IMETHOD SetParent(nsIFolder * aParent); \
  NS_IMETHOD GetSubFolders(nsIEnumerator **_retval); \
  NS_IMETHOD GetHasSubFolders(PRBool *aHasSubFolders); \
  NS_IMETHOD AddFolderListener(nsIFolderListener *listener); \
  NS_IMETHOD RemoveFolderListener(nsIFolderListener *listener); \
  NS_IMETHOD FindSubFolder(const char *subFolderName, nsIFolder **_retval); \
  NS_IMETHOD NotifyPropertyChanged(nsIAtom *property, const char *oldValue, const char *newValue); \
  NS_IMETHOD NotifyIntPropertyChanged(nsIAtom *property, PRInt32 oldValue, PRInt32 newValue); \
  NS_IMETHOD NotifyBoolPropertyChanged(nsIAtom *property, PRBool oldValue, PRBool newValue); \
  NS_IMETHOD NotifyPropertyFlagChanged(nsISupports *item, nsIAtom *property, PRUint32 oldValue, PRUint32 newValue); \
  NS_IMETHOD NotifyUnicharPropertyChanged(nsIAtom *property, const PRUnichar *oldValue, const PRUnichar *newValue); \
  NS_IMETHOD NotifyItemAdded(nsISupports *parentItem, nsISupports *item, const char *viewString); \
  NS_IMETHOD NotifyItemDeleted(nsISupports *parentItem, nsISupports *item, const char *viewString); \
  NS_IMETHOD NotifyFolderEvent(nsIAtom *event); \
  NS_IMETHOD ListDescendents(nsISupportsArray *descendents); \
  NS_IMETHOD Shutdown(PRBool shutdownChildren); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIFOLDER(_to) \
  NS_IMETHOD GetURI(char * *aURI) { return _to GetURI(aURI); } \
  NS_IMETHOD GetName(PRUnichar * *aName) { return _to GetName(aName); } \
  NS_IMETHOD SetName(const PRUnichar * aName) { return _to SetName(aName); } \
  NS_IMETHOD GetPrettyName(PRUnichar * *aPrettyName) { return _to GetPrettyName(aPrettyName); } \
  NS_IMETHOD SetPrettyName(const PRUnichar * aPrettyName) { return _to SetPrettyName(aPrettyName); } \
  NS_IMETHOD GetAbbreviatedName(PRUnichar * *aAbbreviatedName) { return _to GetAbbreviatedName(aAbbreviatedName); } \
  NS_IMETHOD GetChildNamed(const PRUnichar *name, nsISupports **_retval) { return _to GetChildNamed(name, _retval); } \
  NS_IMETHOD GetParent(nsIFolder * *aParent) { return _to GetParent(aParent); } \
  NS_IMETHOD SetParent(nsIFolder * aParent) { return _to SetParent(aParent); } \
  NS_IMETHOD GetSubFolders(nsIEnumerator **_retval) { return _to GetSubFolders(_retval); } \
  NS_IMETHOD GetHasSubFolders(PRBool *aHasSubFolders) { return _to GetHasSubFolders(aHasSubFolders); } \
  NS_IMETHOD AddFolderListener(nsIFolderListener *listener) { return _to AddFolderListener(listener); } \
  NS_IMETHOD RemoveFolderListener(nsIFolderListener *listener) { return _to RemoveFolderListener(listener); } \
  NS_IMETHOD FindSubFolder(const char *subFolderName, nsIFolder **_retval) { return _to FindSubFolder(subFolderName, _retval); } \
  NS_IMETHOD NotifyPropertyChanged(nsIAtom *property, const char *oldValue, const char *newValue) { return _to NotifyPropertyChanged(property, oldValue, newValue); } \
  NS_IMETHOD NotifyIntPropertyChanged(nsIAtom *property, PRInt32 oldValue, PRInt32 newValue) { return _to NotifyIntPropertyChanged(property, oldValue, newValue); } \
  NS_IMETHOD NotifyBoolPropertyChanged(nsIAtom *property, PRBool oldValue, PRBool newValue) { return _to NotifyBoolPropertyChanged(property, oldValue, newValue); } \
  NS_IMETHOD NotifyPropertyFlagChanged(nsISupports *item, nsIAtom *property, PRUint32 oldValue, PRUint32 newValue) { return _to NotifyPropertyFlagChanged(item, property, oldValue, newValue); } \
  NS_IMETHOD NotifyUnicharPropertyChanged(nsIAtom *property, const PRUnichar *oldValue, const PRUnichar *newValue) { return _to NotifyUnicharPropertyChanged(property, oldValue, newValue); } \
  NS_IMETHOD NotifyItemAdded(nsISupports *parentItem, nsISupports *item, const char *viewString) { return _to NotifyItemAdded(parentItem, item, viewString); } \
  NS_IMETHOD NotifyItemDeleted(nsISupports *parentItem, nsISupports *item, const char *viewString) { return _to NotifyItemDeleted(parentItem, item, viewString); } \
  NS_IMETHOD NotifyFolderEvent(nsIAtom *event) { return _to NotifyFolderEvent(event); } \
  NS_IMETHOD ListDescendents(nsISupportsArray *descendents) { return _to ListDescendents(descendents); } \
  NS_IMETHOD Shutdown(PRBool shutdownChildren) { return _to Shutdown(shutdownChildren); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIFOLDER(_to) \
  NS_IMETHOD GetURI(char * *aURI) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetURI(aURI); } \
  NS_IMETHOD GetName(PRUnichar * *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD SetName(const PRUnichar * aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetName(aName); } \
  NS_IMETHOD GetPrettyName(PRUnichar * *aPrettyName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPrettyName(aPrettyName); } \
  NS_IMETHOD SetPrettyName(const PRUnichar * aPrettyName) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPrettyName(aPrettyName); } \
  NS_IMETHOD GetAbbreviatedName(PRUnichar * *aAbbreviatedName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAbbreviatedName(aAbbreviatedName); } \
  NS_IMETHOD GetChildNamed(const PRUnichar *name, nsISupports **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetChildNamed(name, _retval); } \
  NS_IMETHOD GetParent(nsIFolder * *aParent) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetParent(aParent); } \
  NS_IMETHOD SetParent(nsIFolder * aParent) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetParent(aParent); } \
  NS_IMETHOD GetSubFolders(nsIEnumerator **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSubFolders(_retval); } \
  NS_IMETHOD GetHasSubFolders(PRBool *aHasSubFolders) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHasSubFolders(aHasSubFolders); } \
  NS_IMETHOD AddFolderListener(nsIFolderListener *listener) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddFolderListener(listener); } \
  NS_IMETHOD RemoveFolderListener(nsIFolderListener *listener) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveFolderListener(listener); } \
  NS_IMETHOD FindSubFolder(const char *subFolderName, nsIFolder **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindSubFolder(subFolderName, _retval); } \
  NS_IMETHOD NotifyPropertyChanged(nsIAtom *property, const char *oldValue, const char *newValue) { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyPropertyChanged(property, oldValue, newValue); } \
  NS_IMETHOD NotifyIntPropertyChanged(nsIAtom *property, PRInt32 oldValue, PRInt32 newValue) { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyIntPropertyChanged(property, oldValue, newValue); } \
  NS_IMETHOD NotifyBoolPropertyChanged(nsIAtom *property, PRBool oldValue, PRBool newValue) { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyBoolPropertyChanged(property, oldValue, newValue); } \
  NS_IMETHOD NotifyPropertyFlagChanged(nsISupports *item, nsIAtom *property, PRUint32 oldValue, PRUint32 newValue) { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyPropertyFlagChanged(item, property, oldValue, newValue); } \
  NS_IMETHOD NotifyUnicharPropertyChanged(nsIAtom *property, const PRUnichar *oldValue, const PRUnichar *newValue) { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyUnicharPropertyChanged(property, oldValue, newValue); } \
  NS_IMETHOD NotifyItemAdded(nsISupports *parentItem, nsISupports *item, const char *viewString) { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyItemAdded(parentItem, item, viewString); } \
  NS_IMETHOD NotifyItemDeleted(nsISupports *parentItem, nsISupports *item, const char *viewString) { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyItemDeleted(parentItem, item, viewString); } \
  NS_IMETHOD NotifyFolderEvent(nsIAtom *event) { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyFolderEvent(event); } \
  NS_IMETHOD ListDescendents(nsISupportsArray *descendents) { return !_to ? NS_ERROR_NULL_POINTER : _to->ListDescendents(descendents); } \
  NS_IMETHOD Shutdown(PRBool shutdownChildren) { return !_to ? NS_ERROR_NULL_POINTER : _to->Shutdown(shutdownChildren); } 

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

/* Header file */
class nsFolder : public nsIFolder
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIFOLDER

  nsFolder();
  virtual ~nsFolder();
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsFolder, nsIFolder)

nsFolder::nsFolder()
{
  NS_INIT_ISUPPORTS();
  /* member initializers and constructor code */
}

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

/* readonly attribute string URI; */
NS_IMETHODIMP nsFolder::GetURI(char * *aURI)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring name; */
NS_IMETHODIMP nsFolder::GetName(PRUnichar * *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsFolder::SetName(const PRUnichar * aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring prettyName; */
NS_IMETHODIMP nsFolder::GetPrettyName(PRUnichar * *aPrettyName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsFolder::SetPrettyName(const PRUnichar * aPrettyName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring abbreviatedName; */
NS_IMETHODIMP nsFolder::GetAbbreviatedName(PRUnichar * *aAbbreviatedName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsISupports getChildNamed (in wstring name); */
NS_IMETHODIMP nsFolder::GetChildNamed(const PRUnichar *name, nsISupports **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsIFolder parent; */
NS_IMETHODIMP nsFolder::GetParent(nsIFolder * *aParent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsFolder::SetParent(nsIFolder * aParent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIEnumerator GetSubFolders (); */
NS_IMETHODIMP nsFolder::GetSubFolders(nsIEnumerator **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean hasSubFolders; */
NS_IMETHODIMP nsFolder::GetHasSubFolders(PRBool *aHasSubFolders)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void AddFolderListener (in nsIFolderListener listener); */
NS_IMETHODIMP nsFolder::AddFolderListener(nsIFolderListener *listener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void RemoveFolderListener (in nsIFolderListener listener); */
NS_IMETHODIMP nsFolder::RemoveFolderListener(nsIFolderListener *listener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIFolder FindSubFolder (in string subFolderName); */
NS_IMETHODIMP nsFolder::FindSubFolder(const char *subFolderName, nsIFolder **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void NotifyPropertyChanged (in nsIAtom property, in string oldValue, in string newValue); */
NS_IMETHODIMP nsFolder::NotifyPropertyChanged(nsIAtom *property, const char *oldValue, const char *newValue)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void NotifyIntPropertyChanged (in nsIAtom property, in long oldValue, in long newValue); */
NS_IMETHODIMP nsFolder::NotifyIntPropertyChanged(nsIAtom *property, PRInt32 oldValue, PRInt32 newValue)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void NotifyBoolPropertyChanged (in nsIAtom property, in boolean oldValue, in boolean newValue); */
NS_IMETHODIMP nsFolder::NotifyBoolPropertyChanged(nsIAtom *property, PRBool oldValue, PRBool newValue)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void NotifyPropertyFlagChanged (in nsISupports item, in nsIAtom property, in unsigned long oldValue, in unsigned long newValue); */
NS_IMETHODIMP nsFolder::NotifyPropertyFlagChanged(nsISupports *item, nsIAtom *property, PRUint32 oldValue, PRUint32 newValue)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void NotifyUnicharPropertyChanged (in nsIAtom property, in wstring oldValue, in wstring newValue); */
NS_IMETHODIMP nsFolder::NotifyUnicharPropertyChanged(nsIAtom *property, const PRUnichar *oldValue, const PRUnichar *newValue)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void NotifyItemAdded (in nsISupports parentItem, in nsISupports item, in string viewString); */
NS_IMETHODIMP nsFolder::NotifyItemAdded(nsISupports *parentItem, nsISupports *item, const char *viewString)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void NotifyItemDeleted (in nsISupports parentItem, in nsISupports item, in string viewString); */
NS_IMETHODIMP nsFolder::NotifyItemDeleted(nsISupports *parentItem, nsISupports *item, const char *viewString)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void NotifyFolderEvent (in nsIAtom event); */
NS_IMETHODIMP nsFolder::NotifyFolderEvent(nsIAtom *event)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void ListDescendents (in nsISupportsArray descendents); */
NS_IMETHODIMP nsFolder::ListDescendents(nsISupportsArray *descendents)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void Shutdown (in boolean shutdownChildren); */
NS_IMETHODIMP nsFolder::Shutdown(PRBool shutdownChildren)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_nsIFolder_h__ */
