/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 *
 * The contents of this file are subject to the Mozilla Public
 * License Version 1.1 (the "License"); you may not use this file
 * except in compliance with the License. You may obtain a copy of
 * the License at http://www.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS
 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
 * implied. See the License for the specific language governing
 * rights and limitations under the License.
 *
 * The Original Code is the Mozilla browser.
 *
 * The Initial Developer of the Original Code is Netscape
 * Communications Corporation. Portions created by Netscape are
 * Copyright (C) 1999 Netscape Communications Corporation. All
 * Rights Reserved.
 *
 * Original Author: Marc Mulcahy (marc.mulcahy@sun.com)
 *
 * Contributor(s):  Bill Haneman (bill.haneman@sun.com)
 *                  John Gaunt (jgaunt@netscape.com)
 */

#include "nsISupports.idl"
#include "nsIAccessible.idl"

interface nsIURI;

[scriptable, uuid(a492c7d6-1dd1-11b2-9bc0-80614884799a)]
interface nsIAccessibleHyperLink : nsISupports
{
  readonly attribute long anchors;
  readonly attribute long startIndex;
  readonly attribute long endIndex;

  nsIURI getURI (in long i);

  nsIAccessible getObject (in long i);

  boolean isValid ();
};

/*
 Assumptions:

 The object associated with object or anchor index
 is an nsIAccessible.
 A URI can be represented by the nsIURI interface
 (or nsIURL interface).

 Note that an object which supports nsIAccessibleHyperlink
 does *not* generally implement nsIAccessible, unlike the
    case of the other nsiAccessible* interfaces in this directory.

    Aaron: would the nsISupports return from
    getObject be queryable for nsIURI and nsIURL directly?

*/
