/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM e:/builds/moz2_slave/mozilla-central-win32-xulrunner/build/accessible/public/nsIAccessibleProvider.idl
 */

#ifndef __gen_nsIAccessibleProvider_h__
#define __gen_nsIAccessibleProvider_h__


#ifndef __gen_nsISupports_h__
#include "nsISupports.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:    nsIAccessibleProvider */
#define NS_IACCESSIBLEPROVIDER_IID_STR "18ba74e1-0751-41c8-81c6-c903e22491d3"

#define NS_IACCESSIBLEPROVIDER_IID \
  {0x18ba74e1, 0x0751, 0x41c8, \
    { 0x81, 0xc6, 0xc9, 0x03, 0xe2, 0x24, 0x91, 0xd3 }}

/**
 * nsIAccessibleProvider interface is used to link element and accessible
   object. For that XBL binding of element should implement the interface.
 */
class NS_NO_VTABLE NS_SCRIPTABLE nsIAccessibleProvider : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IACCESSIBLEPROVIDER_IID)

  /**
   * Constants set of common use.
   */
/** Do not create an accessible for this object
   * This is useful if an ancestor binding already implements nsIAccessibleProvider,
   * but no accessible is desired for the inheriting binding
   */
  enum { NoAccessible = 0 };

  /** For elements that spawn a new document. For example now it is used by
    <xul:iframe>, <xul:browser> and <xul:editor>. */
  enum { OuterDoc = 1 };

  /**
   * Constants set is used by XUL controls.
   */
/** popup@noautofocus="true" and notification elements */
  enum { XULAlert = 4097 };

  /** button element */
  enum { XULButton = 4098 };

  /** checkbox element */
  enum { XULCheckbox = 4099 };

  /** colorpicker element */
  enum { XULColorPicker = 4100 };

  /** colorpickertile element */
  enum { XULColorPickerTile = 4101 };

  /** menulist element */
  enum { XULCombobox = 4102 };

  /** dropmarker element */
  enum { XULDropmarker = 4103 };

  /** groupbox element */
  enum { XULGroupbox = 4104 };

  /** image element */
  enum { XULImage = 4105 };

  /** label@class="text-link" and label@onclick elements */
  enum { XULLink = 4106 };

  /** listbox and richlistbox elements */
  enum { XULListbox = 4107 };

  /** listcell element */
  enum { XULListCell = 4108 };

  /** listheader element */
  enum { XULListHead = 4109 };

  /** listhead element */
  enum { XULListHeader = 4110 };

  /** listitem and richlistitem elements */
  enum { XULListitem = 4111 };

  /** menubar element */
  enum { XULMenubar = 4112 };

  /** menuitem element */
  enum { XULMenuitem = 4113 };

  /** popup, menupopup element */
  enum { XULMenupopup = 4114 };

  /** menuseparator element */
  enum { XULMenuSeparator = 4115 };

  /** panel element */
  enum { XULPane = 4116 };

  /** progressmeter element */
  enum { XULProgressMeter = 4117 };

  /** scale element */
  enum { XULScale = 4118 };

  /** scrollbar element */
  enum { XULScrollbar = 4119 };

  /** slider element */
  enum { XULSlider = 4120 };

  /** statusbar element */
  enum { XULStatusBar = 4121 };

  /** radio element */
  enum { XULRadioButton = 4122 };

  /** radiogroup element */
  enum { XULRadioGroup = 4123 };

  /** tab element */
  enum { XULTab = 4124 };

  /** tabbox element, contains tabs and tabpanels elements */
  enum { XULTabBox = 4125 };

  /** tabs element, a collection of tab elements */
  enum { XULTabs = 4126 };

  /** label or description elements */
  enum { XULText = 4127 };

  /** textbox and numberbox elements */
  enum { XULTextBox = 4128 };

  /** thumb element, child of scale element */
  enum { XULThumb = 4129 };

  /** tree element */
  enum { XULTree = 4130 };

  /** treecols element, child of tree element */
  enum { XULTreeColumns = 4131 };

  /** treecol element, child of treecols element */
  enum { XULTreeColumnItem = 4132 };

  /** toolbar element */
  enum { XULToolbar = 4133 };

  /** toolbarseparator, toolbarspacer and toolbarspring elements */
  enum { XULToolbarSeparator = 4134 };

  /** tooltip element */
  enum { XULTooltip = 4135 };

  /** toolbarbutton element */
  enum { XULToolbarButton = 4136 };

  /**
   * Constants set is used by XForms elements.
   */
/** Used for xforms elements that provide accessible object for itself as
   * well for anonymous content. This property are used for upload,
   * input[type="xsd:gDay"] and input[type="xsd:gMonth"] */
  enum { XFormsContainer = 8192 };

  /** Used for label element */
  enum { XFormsLabel = 8193 };

  /** Used for output element */
  enum { XFormsOuput = 8194 };

  /** Used for trigger and submit elements */
  enum { XFormsTrigger = 8195 };

  /** Used for input and textarea elements */
  enum { XFormsInput = 8196 };

  /** Used for input[xsd:boolean] element */
  enum { XFormsInputBoolean = 8197 };

  /** Used for input[xsd:date] element */
  enum { XFormsInputDate = 8198 };

  /** Used for secret element */
  enum { XFormsSecret = 8199 };

  /** Used for range element represented by slider */
  enum { XFormsSliderRange = 8200 };

  /** Used for select and select1 that are implemented using host document's
   * native widget. For example, a select1 in a xhtml document may be
   * represented by the native html control html:select */
  enum { XFormsSelect = 8201 };

  /** Used for xforms choices element */
  enum { XFormsChoices = 8208 };

  /** Used for xforms full select/select1 elements that may be represented by
   * group of checkboxes and radiogroup */
  enum { XFormsSelectFull = 8209 };

  /** Used for xforms item element that is used inside xforms select elements
   * represented by group of checkboxes */
  enum { XFormsItemCheckgroup = 8210 };

  /** Used for xforms item element that is used inside xforms select1 elements
   * represented by radio group */
  enum { XFormsItemRadiogroup = 8211 };

  /** Used for xforms select1 element that is represented by combobox */
  enum { XFormsSelectCombobox = 8212 };

  /** Used for xforms item element that is used inside xforms select1
   * elements represented by combobox */
  enum { XFormsItemCombobox = 8213 };

  /** Used for dropmarker widget that is used by xforms elements */
  enum { XFormsDropmarkerWidget = 8449 };

  /** Used for calendar widget that is used by xforms elements */
  enum { XFormsCalendarWidget = 8450 };

  /** Used for popup widget that is used by xforms minimal select1 elements */
  enum { XFormsComboboxPopupWidget = 8451 };

  /**
   * Return one of constants declared above.
   */
  /* readonly attribute long accessibleType; */
  NS_SCRIPTABLE NS_IMETHOD GetAccessibleType(PRInt32 *aAccessibleType) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIAccessibleProvider, NS_IACCESSIBLEPROVIDER_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIACCESSIBLEPROVIDER \
  NS_SCRIPTABLE NS_IMETHOD GetAccessibleType(PRInt32 *aAccessibleType); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIACCESSIBLEPROVIDER(_to) \
  NS_SCRIPTABLE NS_IMETHOD GetAccessibleType(PRInt32 *aAccessibleType) { return _to GetAccessibleType(aAccessibleType); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIACCESSIBLEPROVIDER(_to) \
  NS_SCRIPTABLE NS_IMETHOD GetAccessibleType(PRInt32 *aAccessibleType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAccessibleType(aAccessibleType); } 

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

/* Header file */
class nsAccessibleProvider : public nsIAccessibleProvider
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIACCESSIBLEPROVIDER

  nsAccessibleProvider();

private:
  ~nsAccessibleProvider();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsAccessibleProvider, nsIAccessibleProvider)

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

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

/* readonly attribute long accessibleType; */
NS_IMETHODIMP nsAccessibleProvider::GetAccessibleType(PRInt32 *aAccessibleType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_nsIAccessibleProvider_h__ */
