/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:set tw=80 expandtab softtabstop=2 ts=2 sw=2: */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "nsIDOMHTMLElement.idl"
#include "nsIDOMPropertyNodeList.idl"
#include "nsIDOMDOMStringList.idl"

interface nsGenericElement;

// This interface should extend nsIDOMHTMLCollection, which will be fixed when
// it is converted to webidl.
[scriptable, uuid(b7e84688-98e0-46b2-9d20-8a0e7329dd25)]
interface nsIDOMHTMLPropertiesCollection : nsISupports
{
  readonly attribute unsigned long    length;
  readonly attribute nsIDOMDOMStringList names;

  [getter,forward(getElementAt)] nsIDOMNode                item(in unsigned long index);
  nsIDOMPropertyNodeList namedItem(in DOMString name);

  /**
   * Get the node at the index.  Returns null if the index is out of bounds.
   */
  [noscript,notxpcom,nostdcall] nsGenericElement getElementAt(in unsigned long index);

  /**
   * Get the node for the name.  Returns null if no node exists for the name.
   */
  [noscript,notxpcom,nostdcall] nsISupports getNamedItem(in DOMString name,
                                                         out nsWrapperCachePtr cache);
};
