/* -*- 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"

// This interface should extend nsIDOMHTMLCollection, which will be fixed when
// it is converted to webidl.
[scriptable, uuid(da1101db-d1d7-465d-9fd6-49ec9960cb20)]
interface nsIDOMHTMLPropertiesCollection : nsISupports
{
  readonly attribute unsigned long    length;
  readonly attribute nsIDOMDOMStringList names;

  [getter,forward(getNodeAt)] 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] nsIContent  getNodeAt(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);
};
