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

#ifndef __gen_smileIApplication_h__
#define __gen_smileIApplication_h__


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

#ifndef __gen_extIApplication_h__
#include "extIApplication.h"
#endif

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

class nsIURI; /* forward declaration */

class nsIDOMHTMLDocument; /* forward declaration */

class smileIBrowserTab; /* forward declaration */


/* starting interface:    smileIBookmarkRoots */
#define SMILEIBOOKMARKROOTS_IID_STR "1102eec4-f66b-4082-abad-c967ad7d5f76"

#define SMILEIBOOKMARKROOTS_IID \
  {0x1102eec4, 0xf66b, 0x4082, \
    { 0xab, 0xad, 0xc9, 0x67, 0xad, 0x7d, 0x5f, 0x76 }}

/**
 * Interface representing a container for bookmark roots. Roots
 * are the top level parents for the various types of bookmarks in the system.
 * Empty as it is only used as the return type for Application.bookmarks. It
 * will be supported once the Places bookmarks API is supported in SeaMonkey.
 */
class NS_NO_VTABLE NS_SCRIPTABLE smileIBookmarkRoots : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(SMILEIBOOKMARKROOTS_IID)

};

  NS_DEFINE_STATIC_IID_ACCESSOR(smileIBookmarkRoots, SMILEIBOOKMARKROOTS_IID)

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

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

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

/* Header file */
class _MYCLASS_ : public smileIBookmarkRoots
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_SMILEIBOOKMARKROOTS

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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


/* starting interface:    smileIWindow */
#define SMILEIWINDOW_IID_STR "1c3002ec-5aaf-4232-ab7d-835a348133fd"

#define SMILEIWINDOW_IID \
  {0x1c3002ec, 0x5aaf, 0x4232, \
    { 0xab, 0x7d, 0x83, 0x5a, 0x34, 0x81, 0x33, 0xfd }}

/**
 * Interface representing a browser window.
 */
class NS_NO_VTABLE NS_SCRIPTABLE smileIWindow : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(SMILEIWINDOW_IID)

  /**
   * A collection of browser tabs within the browser window.
   */
  /* readonly attribute nsIVariant tabs; */
  NS_SCRIPTABLE NS_IMETHOD GetTabs(nsIVariant **aTabs) = 0;

  /**
   * The currently-active tab within the browser window.
   */
  /* readonly attribute smileIBrowserTab activeTab; */
  NS_SCRIPTABLE NS_IMETHOD GetActiveTab(smileIBrowserTab **aActiveTab) = 0;

  /**
   * Open a new browser tab, pointing to the specified URI.
   * @param   aURI
   *          The uri to open the browser tab to
   */
  /* smileIBrowserTab open (in nsIURI aURI); */
  NS_SCRIPTABLE NS_IMETHOD Open(nsIURI *aURI, smileIBrowserTab **_retval NS_OUTPARAM) = 0;

  /**
   * The events object for the browser window.
   * supports: "TabOpen", "TabClose", "TabMove", "TabSelect"
   */
  /* readonly attribute extIEvents events; */
  NS_SCRIPTABLE NS_IMETHOD GetEvents(extIEvents **aEvents) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(smileIWindow, SMILEIWINDOW_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_SMILEIWINDOW \
  NS_SCRIPTABLE NS_IMETHOD GetTabs(nsIVariant **aTabs); \
  NS_SCRIPTABLE NS_IMETHOD GetActiveTab(smileIBrowserTab **aActiveTab); \
  NS_SCRIPTABLE NS_IMETHOD Open(nsIURI *aURI, smileIBrowserTab **_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD GetEvents(extIEvents **aEvents); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_SMILEIWINDOW(_to) \
  NS_SCRIPTABLE NS_IMETHOD GetTabs(nsIVariant **aTabs) { return _to GetTabs(aTabs); } \
  NS_SCRIPTABLE NS_IMETHOD GetActiveTab(smileIBrowserTab **aActiveTab) { return _to GetActiveTab(aActiveTab); } \
  NS_SCRIPTABLE NS_IMETHOD Open(nsIURI *aURI, smileIBrowserTab **_retval NS_OUTPARAM) { return _to Open(aURI, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetEvents(extIEvents **aEvents) { return _to GetEvents(aEvents); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_SMILEIWINDOW(_to) \
  NS_SCRIPTABLE NS_IMETHOD GetTabs(nsIVariant **aTabs) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTabs(aTabs); } \
  NS_SCRIPTABLE NS_IMETHOD GetActiveTab(smileIBrowserTab **aActiveTab) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetActiveTab(aActiveTab); } \
  NS_SCRIPTABLE NS_IMETHOD Open(nsIURI *aURI, smileIBrowserTab **_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Open(aURI, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetEvents(extIEvents **aEvents) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEvents(aEvents); } 

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

/* Header file */
class _MYCLASS_ : public smileIWindow
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_SMILEIWINDOW

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* readonly attribute nsIVariant tabs; */
NS_IMETHODIMP _MYCLASS_::GetTabs(nsIVariant **aTabs)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute smileIBrowserTab activeTab; */
NS_IMETHODIMP _MYCLASS_::GetActiveTab(smileIBrowserTab **aActiveTab)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* smileIBrowserTab open (in nsIURI aURI); */
NS_IMETHODIMP _MYCLASS_::Open(nsIURI *aURI, smileIBrowserTab **_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute extIEvents events; */
NS_IMETHODIMP _MYCLASS_::GetEvents(extIEvents **aEvents)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    smileIBrowserTab */
#define SMILEIBROWSERTAB_IID_STR "9b06c55e-5377-4c71-8bda-8e8750c5a02a"

#define SMILEIBROWSERTAB_IID \
  {0x9b06c55e, 0x5377, 0x4c71, \
    { 0x8b, 0xda, 0x8e, 0x87, 0x50, 0xc5, 0xa0, 0x2a }}

class NS_NO_VTABLE NS_SCRIPTABLE smileIBrowserTab : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(SMILEIBROWSERTAB_IID)

  /**
 * Interface representing a browser tab.
 */
/**
   * The current uri of this tab.
   */
  /* readonly attribute nsIURI uri; */
  NS_SCRIPTABLE NS_IMETHOD GetUri(nsIURI **aUri) = 0;

  /**
   * The current index of this tab in the browser window.
   */
  /* readonly attribute PRInt32 index; */
  NS_SCRIPTABLE NS_IMETHOD GetIndex(PRInt32 *aIndex) = 0;

  /**
   * The browser window that is holding the tab.
   */
  /* readonly attribute smileIWindow window; */
  NS_SCRIPTABLE NS_IMETHOD GetWindow(smileIWindow **aWindow) = 0;

  /**
   * The content document of the browser tab.
   */
  /* readonly attribute nsIDOMHTMLDocument document; */
  NS_SCRIPTABLE NS_IMETHOD GetDocument(nsIDOMHTMLDocument **aDocument) = 0;

  /**
   * The events object for the browser tab.
   * supports: "load"
   */
  /* readonly attribute extIEvents events; */
  NS_SCRIPTABLE NS_IMETHOD GetEvents(extIEvents **aEvents) = 0;

  /**
   * Load a new URI into this browser tab.
   * @param   aURI
   *          The uri to load into the browser tab
   */
  /* void load (in nsIURI aURI); */
  NS_SCRIPTABLE NS_IMETHOD Load(nsIURI *aURI) = 0;

  /**
   * Give focus to this browser tab, and bring it to the front.
   */
  /* void focus (); */
  NS_SCRIPTABLE NS_IMETHOD Focus(void) = 0;

  /**
   * Close the browser tab. This may not actually close the tab
   * as script may abort the close operation.
   */
  /* void close (); */
  NS_SCRIPTABLE NS_IMETHOD Close(void) = 0;

  /**
   * Moves this browser tab before another browser tab within the window.
   * @param   aBefore
   *          The tab before which the target tab will be moved
   */
  /* void moveBefore (in smileIBrowserTab aBefore); */
  NS_SCRIPTABLE NS_IMETHOD MoveBefore(smileIBrowserTab *aBefore) = 0;

  /**
   * Move this browser tab to the last tab within the window.
   */
  /* void moveToEnd (); */
  NS_SCRIPTABLE NS_IMETHOD MoveToEnd(void) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(smileIBrowserTab, SMILEIBROWSERTAB_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_SMILEIBROWSERTAB \
  NS_SCRIPTABLE NS_IMETHOD GetUri(nsIURI **aUri); \
  NS_SCRIPTABLE NS_IMETHOD GetIndex(PRInt32 *aIndex); \
  NS_SCRIPTABLE NS_IMETHOD GetWindow(smileIWindow **aWindow); \
  NS_SCRIPTABLE NS_IMETHOD GetDocument(nsIDOMHTMLDocument **aDocument); \
  NS_SCRIPTABLE NS_IMETHOD GetEvents(extIEvents **aEvents); \
  NS_SCRIPTABLE NS_IMETHOD Load(nsIURI *aURI); \
  NS_SCRIPTABLE NS_IMETHOD Focus(void); \
  NS_SCRIPTABLE NS_IMETHOD Close(void); \
  NS_SCRIPTABLE NS_IMETHOD MoveBefore(smileIBrowserTab *aBefore); \
  NS_SCRIPTABLE NS_IMETHOD MoveToEnd(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_SMILEIBROWSERTAB(_to) \
  NS_SCRIPTABLE NS_IMETHOD GetUri(nsIURI **aUri) { return _to GetUri(aUri); } \
  NS_SCRIPTABLE NS_IMETHOD GetIndex(PRInt32 *aIndex) { return _to GetIndex(aIndex); } \
  NS_SCRIPTABLE NS_IMETHOD GetWindow(smileIWindow **aWindow) { return _to GetWindow(aWindow); } \
  NS_SCRIPTABLE NS_IMETHOD GetDocument(nsIDOMHTMLDocument **aDocument) { return _to GetDocument(aDocument); } \
  NS_SCRIPTABLE NS_IMETHOD GetEvents(extIEvents **aEvents) { return _to GetEvents(aEvents); } \
  NS_SCRIPTABLE NS_IMETHOD Load(nsIURI *aURI) { return _to Load(aURI); } \
  NS_SCRIPTABLE NS_IMETHOD Focus(void) { return _to Focus(); } \
  NS_SCRIPTABLE NS_IMETHOD Close(void) { return _to Close(); } \
  NS_SCRIPTABLE NS_IMETHOD MoveBefore(smileIBrowserTab *aBefore) { return _to MoveBefore(aBefore); } \
  NS_SCRIPTABLE NS_IMETHOD MoveToEnd(void) { return _to MoveToEnd(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_SMILEIBROWSERTAB(_to) \
  NS_SCRIPTABLE NS_IMETHOD GetUri(nsIURI **aUri) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUri(aUri); } \
  NS_SCRIPTABLE NS_IMETHOD GetIndex(PRInt32 *aIndex) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIndex(aIndex); } \
  NS_SCRIPTABLE NS_IMETHOD GetWindow(smileIWindow **aWindow) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetWindow(aWindow); } \
  NS_SCRIPTABLE NS_IMETHOD GetDocument(nsIDOMHTMLDocument **aDocument) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDocument(aDocument); } \
  NS_SCRIPTABLE NS_IMETHOD GetEvents(extIEvents **aEvents) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEvents(aEvents); } \
  NS_SCRIPTABLE NS_IMETHOD Load(nsIURI *aURI) { return !_to ? NS_ERROR_NULL_POINTER : _to->Load(aURI); } \
  NS_SCRIPTABLE NS_IMETHOD Focus(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Focus(); } \
  NS_SCRIPTABLE NS_IMETHOD Close(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Close(); } \
  NS_SCRIPTABLE NS_IMETHOD MoveBefore(smileIBrowserTab *aBefore) { return !_to ? NS_ERROR_NULL_POINTER : _to->MoveBefore(aBefore); } \
  NS_SCRIPTABLE NS_IMETHOD MoveToEnd(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->MoveToEnd(); } 

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

/* Header file */
class _MYCLASS_ : public smileIBrowserTab
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_SMILEIBROWSERTAB

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* readonly attribute nsIURI uri; */
NS_IMETHODIMP _MYCLASS_::GetUri(nsIURI **aUri)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRInt32 index; */
NS_IMETHODIMP _MYCLASS_::GetIndex(PRInt32 *aIndex)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute smileIWindow window; */
NS_IMETHODIMP _MYCLASS_::GetWindow(smileIWindow **aWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIDOMHTMLDocument document; */
NS_IMETHODIMP _MYCLASS_::GetDocument(nsIDOMHTMLDocument **aDocument)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute extIEvents events; */
NS_IMETHODIMP _MYCLASS_::GetEvents(extIEvents **aEvents)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void load (in nsIURI aURI); */
NS_IMETHODIMP _MYCLASS_::Load(nsIURI *aURI)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void focus (); */
NS_IMETHODIMP _MYCLASS_::Focus()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void close (); */
NS_IMETHODIMP _MYCLASS_::Close()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void moveBefore (in smileIBrowserTab aBefore); */
NS_IMETHODIMP _MYCLASS_::MoveBefore(smileIBrowserTab *aBefore)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void moveToEnd (); */
NS_IMETHODIMP _MYCLASS_::MoveToEnd()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    smileIApplication */
#define SMILEIAPPLICATION_IID_STR "c9ba8f65-c936-4ac6-a859-8936832b0c12"

#define SMILEIAPPLICATION_IID \
  {0xc9ba8f65, 0xc936, 0x4ac6, \
    { 0xa8, 0x59, 0x89, 0x36, 0x83, 0x2b, 0x0c, 0x12 }}

/**
 * Interface for managing and accessing the applications systems
 */
class NS_NO_VTABLE NS_SCRIPTABLE smileIApplication : public extIApplication {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(SMILEIAPPLICATION_IID)

  /**
   * An array of browser windows within the application.
   */
  /* readonly attribute nsIVariant windows; */
  NS_SCRIPTABLE NS_IMETHOD GetWindows(nsIVariant **aWindows) = 0;

  /**
   * The currently active browser window.
   */
  /* readonly attribute smileIWindow activeWindow; */
  NS_SCRIPTABLE NS_IMETHOD GetActiveWindow(smileIWindow **aActiveWindow) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(smileIApplication, SMILEIAPPLICATION_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_SMILEIAPPLICATION \
  NS_SCRIPTABLE NS_IMETHOD GetWindows(nsIVariant **aWindows); \
  NS_SCRIPTABLE NS_IMETHOD GetActiveWindow(smileIWindow **aActiveWindow); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_SMILEIAPPLICATION(_to) \
  NS_SCRIPTABLE NS_IMETHOD GetWindows(nsIVariant **aWindows) { return _to GetWindows(aWindows); } \
  NS_SCRIPTABLE NS_IMETHOD GetActiveWindow(smileIWindow **aActiveWindow) { return _to GetActiveWindow(aActiveWindow); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_SMILEIAPPLICATION(_to) \
  NS_SCRIPTABLE NS_IMETHOD GetWindows(nsIVariant **aWindows) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetWindows(aWindows); } \
  NS_SCRIPTABLE NS_IMETHOD GetActiveWindow(smileIWindow **aActiveWindow) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetActiveWindow(aActiveWindow); } 

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

/* Header file */
class _MYCLASS_ : public smileIApplication
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_SMILEIAPPLICATION

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* readonly attribute nsIVariant windows; */
NS_IMETHODIMP _MYCLASS_::GetWindows(nsIVariant **aWindows)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute smileIWindow activeWindow; */
NS_IMETHODIMP _MYCLASS_::GetActiveWindow(smileIWindow **aActiveWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_smileIApplication_h__ */
