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

#ifndef __gen_nsISHEntry_h__
#define __gen_nsISHEntry_h__

#include "nsISupports.h"
#include "nsIURI.h"
#include "domstubs.h"
#include "nsIInputStream.h"

class nsILayoutHistoryState; /* forward declaration */


/* starting interface:    nsISHEntry */
#define NS_ISHENTRY_IID_STR "65281ba1-988a-11d3-bdc7-0050040a9b44"

#define NS_ISHENTRY_IID \
  {0x65281ba1, 0x988a, 0x11d3, \
    { 0xbd, 0xc7, 0x00, 0x50, 0x04, 0x0a, 0x9b, 0x44 }}

class NS_NO_VTABLE nsISHEntry : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_ISHENTRY_IID)

  /** URI for the document */
  /* attribute nsIURI URI; */
  NS_IMETHOD GetURI(nsIURI * *aURI) = 0;
  NS_IMETHOD SetURI(nsIURI * aURI) = 0;

  /**  DOM Document */
  /* attribute nsIDOMDocument document; */
  NS_IMETHOD GetDocument(nsIDOMDocument * *aDocument) = 0;
  NS_IMETHOD SetDocument(nsIDOMDocument * aDocument) = 0;

  /** Title for the document */
  /* attribute wstring title; */
  NS_IMETHOD GetTitle(PRUnichar * *aTitle) = 0;
  NS_IMETHOD SetTitle(const PRUnichar * aTitle) = 0;

  /** Post Data for the document */
  /* attribute nsIInputStream postData; */
  NS_IMETHOD GetPostData(nsIInputStream * *aPostData) = 0;
  NS_IMETHOD SetPostData(nsIInputStream * aPostData) = 0;

  /** LayoutHistoryState for scroll position and form values */
  /* attribute nsILayoutHistoryState layoutHistoryState; */
  NS_IMETHOD GetLayoutHistoryState(nsILayoutHistoryState * *aLayoutHistoryState) = 0;
  NS_IMETHOD SetLayoutHistoryState(nsILayoutHistoryState * aLayoutHistoryState) = 0;

  /** parent of this entry */
  /* attribute nsISHEntry parent; */
  NS_IMETHOD GetParent(nsISHEntry * *aParent) = 0;
  NS_IMETHOD SetParent(nsISHEntry * aParent) = 0;

  /** Additional ways to create an entry */
  /* void create (in nsIURI aURI, in wstring aTitle, in nsIDOMDocument aDocument, in nsIInputStream aInputStream, in nsILayoutHistoryState aHistoryLayoutState); */
  NS_IMETHOD Create(nsIURI *aURI, const PRUnichar *aTitle, nsIDOMDocument *aDocument, nsIInputStream *aInputStream, nsILayoutHistoryState *aHistoryLayoutState) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSISHENTRY \
  NS_IMETHOD GetURI(nsIURI * *aURI); \
  NS_IMETHOD SetURI(nsIURI * aURI); \
  NS_IMETHOD GetDocument(nsIDOMDocument * *aDocument); \
  NS_IMETHOD SetDocument(nsIDOMDocument * aDocument); \
  NS_IMETHOD GetTitle(PRUnichar * *aTitle); \
  NS_IMETHOD SetTitle(const PRUnichar * aTitle); \
  NS_IMETHOD GetPostData(nsIInputStream * *aPostData); \
  NS_IMETHOD SetPostData(nsIInputStream * aPostData); \
  NS_IMETHOD GetLayoutHistoryState(nsILayoutHistoryState * *aLayoutHistoryState); \
  NS_IMETHOD SetLayoutHistoryState(nsILayoutHistoryState * aLayoutHistoryState); \
  NS_IMETHOD GetParent(nsISHEntry * *aParent); \
  NS_IMETHOD SetParent(nsISHEntry * aParent); \
  NS_IMETHOD Create(nsIURI *aURI, const PRUnichar *aTitle, nsIDOMDocument *aDocument, nsIInputStream *aInputStream, nsILayoutHistoryState *aHistoryLayoutState); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSISHENTRY(_to) \
  NS_IMETHOD GetURI(nsIURI * *aURI) { return _to ## GetURI(aURI); } \
  NS_IMETHOD SetURI(nsIURI * aURI) { return _to ## SetURI(aURI); } \
  NS_IMETHOD GetDocument(nsIDOMDocument * *aDocument) { return _to ## GetDocument(aDocument); } \
  NS_IMETHOD SetDocument(nsIDOMDocument * aDocument) { return _to ## SetDocument(aDocument); } \
  NS_IMETHOD GetTitle(PRUnichar * *aTitle) { return _to ## GetTitle(aTitle); } \
  NS_IMETHOD SetTitle(const PRUnichar * aTitle) { return _to ## SetTitle(aTitle); } \
  NS_IMETHOD GetPostData(nsIInputStream * *aPostData) { return _to ## GetPostData(aPostData); } \
  NS_IMETHOD SetPostData(nsIInputStream * aPostData) { return _to ## SetPostData(aPostData); } \
  NS_IMETHOD GetLayoutHistoryState(nsILayoutHistoryState * *aLayoutHistoryState) { return _to ## GetLayoutHistoryState(aLayoutHistoryState); } \
  NS_IMETHOD SetLayoutHistoryState(nsILayoutHistoryState * aLayoutHistoryState) { return _to ## SetLayoutHistoryState(aLayoutHistoryState); } \
  NS_IMETHOD GetParent(nsISHEntry * *aParent) { return _to ## GetParent(aParent); } \
  NS_IMETHOD SetParent(nsISHEntry * aParent) { return _to ## SetParent(aParent); } \
  NS_IMETHOD Create(nsIURI *aURI, const PRUnichar *aTitle, nsIDOMDocument *aDocument, nsIInputStream *aInputStream, nsILayoutHistoryState *aHistoryLayoutState) { return _to ## Create(aURI, aTitle, aDocument, aInputStream, aHistoryLayoutState); } 

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

/* Header file */
class nsSHEntry : public nsISHEntry
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSISHENTRY

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

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsSHEntry, nsISHEntry)

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

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

/* attribute nsIURI URI; */
NS_IMETHODIMP nsSHEntry::GetURI(nsIURI * *aURI)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsSHEntry::SetURI(nsIURI * aURI)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsIDOMDocument document; */
NS_IMETHODIMP nsSHEntry::GetDocument(nsIDOMDocument * *aDocument)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsSHEntry::SetDocument(nsIDOMDocument * aDocument)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring title; */
NS_IMETHODIMP nsSHEntry::GetTitle(PRUnichar * *aTitle)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsSHEntry::SetTitle(const PRUnichar * aTitle)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsIInputStream postData; */
NS_IMETHODIMP nsSHEntry::GetPostData(nsIInputStream * *aPostData)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsSHEntry::SetPostData(nsIInputStream * aPostData)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsILayoutHistoryState layoutHistoryState; */
NS_IMETHODIMP nsSHEntry::GetLayoutHistoryState(nsILayoutHistoryState * *aLayoutHistoryState)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsSHEntry::SetLayoutHistoryState(nsILayoutHistoryState * aLayoutHistoryState)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* void create (in nsIURI aURI, in wstring aTitle, in nsIDOMDocument aDocument, in nsIInputStream aInputStream, in nsILayoutHistoryState aHistoryLayoutState); */
NS_IMETHODIMP nsSHEntry::Create(nsIURI *aURI, const PRUnichar *aTitle, nsIDOMDocument *aDocument, nsIInputStream *aInputStream, nsILayoutHistoryState *aHistoryLayoutState)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

// {BFD1A791-AD9F-11d3-BDC7-0050040A9B44}
#define NS_SHENTRY_CID \
{0xbfd1a791, 0xad9f, 0x11d3, {0xbd, 0xc7, 0x0, 0x50, 0x4, 0xa, 0x9b, 0x44}}
#define NS_SHENTRY_CONTRACTID \
    "@mozilla.org/browser/session-history-entry;1"

#endif /* __gen_nsISHEntry_h__ */
