/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 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/. */

/**
 * Corresponds to http://www.w3.org/TR/2002/WD-DOM-Level-3-XPath-20020208
 */

#include "domstubs.idl"

interface XPathException;

[scriptable, uuid(75506f84-b504-11d5-a7f2-ca108ab8b6fc)]
interface nsIDOMXPathResult : nsISupports
{
  // XPathResultType
  const unsigned short      ANY_TYPE                       = 0;
  const unsigned short      NUMBER_TYPE                    = 1;
  const unsigned short      STRING_TYPE                    = 2;
  const unsigned short      BOOLEAN_TYPE                   = 3;
  const unsigned short      UNORDERED_NODE_ITERATOR_TYPE   = 4;
  const unsigned short      ORDERED_NODE_ITERATOR_TYPE     = 5;
  const unsigned short      UNORDERED_NODE_SNAPSHOT_TYPE   = 6;
  const unsigned short      ORDERED_NODE_SNAPSHOT_TYPE     = 7;
  const unsigned short      ANY_UNORDERED_NODE_TYPE        = 8;
  const unsigned short      FIRST_ORDERED_NODE_TYPE        = 9;

  readonly attribute unsigned short   resultType;
  readonly attribute double           numberValue;
                                      // raises(XPathException) on retrieval

  readonly attribute DOMString        stringValue;
                                      // raises(XPathException) on retrieval

  readonly attribute boolean          booleanValue;
                                      // raises(XPathException) on retrieval

  readonly attribute nsIDOMNode       singleNodeValue;
                                      // raises(XPathException) on retrieval

  readonly attribute boolean          invalidIteratorState;
  readonly attribute unsigned long    snapshotLength;
                                      // raises(XPathException) on retrieval

  nsIDOMNode               iterateNext()
                                      raises(XPathException, 
                                             DOMException);
  nsIDOMNode               snapshotItem(in unsigned long index)
                                      raises(XPathException);
};
