gecko/content/base/public/nsINodeList.h
Peter Van der Beken d21c8a19b6 Fix for bug 788532 (Add the new DOM bindings API to DOM lists). r=bz.
--HG--
extra : rebase_source : 18e21a786b6a9cc2aeada52ba5ca3a2614cb596b
2012-09-05 22:49:53 +02:00

66 lines
1.6 KiB
C++

/* -*- Mode: C++; 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/. */
#ifndef nsINodeList_h___
#define nsINodeList_h___
#include "nsIDOMNodeList.h"
#include "nsWrapperCache.h"
class nsINode;
class nsIContent;
// IID for the nsINodeList interface
#define NS_INODELIST_IID \
{ 0xe60b773e, 0x5d20, 0x43f6, \
{ 0xb0, 0x8c, 0xfd, 0x65, 0x26, 0xce, 0xe0, 0x7a } }
/**
* An internal interface for a reasonably fast indexOf.
*/
class nsINodeList : public nsIDOMNodeList,
public nsWrapperCache
{
public:
NS_DECLARE_STATIC_IID_ACCESSOR(NS_INODELIST_IID)
/**
* Get the index of the given node in the list. Will return -1 if the node
* is not in the list.
*/
virtual int32_t IndexOf(nsIContent* aContent) = 0;
/**
* Get the root node for this nodelist.
*/
virtual nsINode* GetParentObject() = 0;
using nsIDOMNodeList::Item;
uint32_t Length()
{
uint32_t length;
GetLength(&length);
return length;
}
nsIContent* Item(uint32_t aIndex)
{
return GetNodeAt(aIndex);
}
nsIContent* IndexedGetter(uint32_t aIndex, bool& aFound)
{
nsIContent* item = Item(aIndex);
aFound = !!item;
return item;
}
};
#define NS_NODELIST_OFFSET_AND_INTERFACE_TABLE_BEGIN(_class) \
NS_OFFSET_AND_INTERFACE_TABLE_BEGIN_AMBIGUOUS(_class, nsINodeList)
NS_DEFINE_STATIC_IID_ACCESSOR(nsINodeList, NS_INODELIST_IID)
#endif /* nsINodeList_h___ */